Работаю на камне ti cc2650em Есть класс 123.c в нём 2 задачи переключающиеся по вызову семафора, пример:
| Код | #define TASKSTACKSIZE 768 Task_Struct task0Struct, task1Struct; Char task0Stack[TASKSTACKSIZE], task1Stack[TASKSTACKSIZE]; Task_Handle uartTask, vmTask; Semaphore_Struct sem0Struct; Semaphore_Handle vmSem;
Void uartFxn(UArg a0, UArg a1){ 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){ Semaphore_pend(vmSem, BIOS_WAIT_FOREVER); while(1){ System_flush(); System_printf("asdasdasdasd"); break; } }
int main(void) { Task_Params taskParams; Semaphore_Params semParams;
Board_initGeneral();
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);
BIOS_start(); return (0); } |
оно работает на отлично, выводит 1 2 3 4 потом переключается на другую задачу, выводит asdasdasdasd, и потом дальше 5 6 7...
вопрос следующий в первой по приоритету задаче я включаю UART
| Код | 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"); } |
опять же всё хорошо но при переключении задачи юарт отключается и не включается, где бы я его заново не запускал
может кто сталкивался? |