各位高手,小弟正在基于MSP432单片机及UC/OS-III开发应用。实现的功能是使用信号量控制串口发送数据。创建了信号量,初始化为0,串口任务中等待信号量。单步调试执行到OSSemPend的时候,发现任务并没有挂起等待,而是继续执行后面的语句。请教各位高手其中的原因。谢谢!串口发送任务代码如下: staticvoid App_TaskUART(void *p_arg) { OS_ERR os_err; CPU_BOOLEAN SemFlag; (void)p_arg; while (1) { SemFlag = BSP_OS_SemWait(&SEM_UARTTX , 0); if(SemFlag == DEF_OK) { MAP_UART_transmitData(EUSCI_A2_BASE , UARTTXData); } OSTimeDlyHMSM(0u , 0u , 1u , 0u , OS_OPT_TIME_HMSM_STRICT , &os_err); } } CPU_BOOLEAN BSP_OS_SemWait (BSP_OS_SEM *p_sem , CPU_INT32U dly_ms) { OS_ERR err; CPU_INT32U dly_ticks; dly_ticks = ((dly_ms *DEF_TIME_NBR_mS_PER_SEC) / OSCfg_TickRate_Hz);/*将毫秒级延时转换为滴答数*/ /*等待接收信号量*/ OSSemPend((OS_SEM *)p_sem, (OS_TICK )dly_ticks, (OS_OPT )OS_OPT_PEND_BLOCKING, (CPU_TS )0, (OS_ERR *)&err); if(err != OS_ERR_NONE) { return (DEF_FAIL); } return (DEF_OK); }
|