Есть небольшая проблема с уартом при смене задач
Task_Struct task0Struct, task1Struct;
Char task0Stack[TASKSTACKSIZE], task1Stack[TASKSTACKSIZE];
Task_Handle uartTask, vmTask;
Semaphore_Struct sem0Struct;
Semaphore_Handle vmSem;
UART_Handle hUART;
UART_Params params;
Void uartFxn(UArg a0, UArg a1){ if(!hUART){
UART_Params_init(¶ms);
params.readMode = UART_MODE_BLOCKING;
params.writeDataMode= UART_DATA_BINARY;
params.readTimeout = 1000;
params.readCallback = NULL;
params.readEcho = UART_ECHO_OFF; //Not needed on CC26XX implementation as not implemented
params.baudRate = 9600;
hUART = UART_open(Board_UART0, ¶ms);
}
if (!hUART) {
System_abort("Error initializing UART\n");
}
uint32_t i = 0;
while(1){
System_flush();
System_printf(" %d", i);
i++;
if(i==5){
Semaphore_post(vmSem);
} Task_sleep(1000000 / Clock_tickPeriod);
}
}void vmFxn(void){
while(1){
Semaphore_pend(vmSem, BIOS_WAIT_FOREVER);
System_flush();
System_printf("asdasdasdasd");
System_flush();
System_printf("asdasdasdasd");
break;
}}
/*
* ======== main ========
*/
int main(void)
{
Task_Params taskParams;
Semaphore_Params semParams; /* Call board init functions */
Board_initGeneral();
/* Construct BIOS objects */
Task_Params_init(&taskParams);
taskParams.stackSize = TASKSTACKSIZE;
taskParams.stack = &task0Stack;
taskParams.priority = 2;
taskParams.instance->name = "vmFxn";
Task_construct(&task0Struct, (Task_FuncPtr)vmFxn, &taskParams, NULL);
vmTask = Task_handle(&task0Struct); taskParams.stack = &task1Stack;
taskParams.priority = 1;
taskParams.instance->name = "uartFxn";
Task_construct(&task1Struct, (Task_FuncPtr)uartFxn, &taskParams, NULL);
uartTask = Task_handle(&task1Struct);
Semaphore_Params_init(&semParams);
semParams.mode = Semaphore_Mode_BINARY;
Semaphore_construct(&sem0Struct, 0, &semParams);
vmSem = Semaphore_handle(&sem0Struct);
/* Start BIOS */
BIOS_start();
return (0);
}
Когда запускаю проект то Уарт запускается нормально
но после смены задачи непонятно работает УАРТ или нет, но ясно только одно что уже ни послать ни принять ничего нельзя, хоть порт и открыт для коннекта.