在BLE broadcaster基础上测试TMOS调度,发现在ProcessEvent里第一行增加PRINT("LED_Process:%x\n",events);能正常调度,注释掉这行就不行,非常神奇,附件是完整代码包,帮忙看看什么原因,谢谢。
深入测试了一下,发现和这个打印语句中的\n有关系,去掉\n不能调度,加上\n能正常调度。
uint16_t LED_ProcessEvent(uint8_t task_id, uint16_t events)
{
PRINT("LED_Process:%x\n",events);
//消息处理
if ( events & SYS_EVENT_MSG )
{
uint8_t *pMsg;
if ( (pMsg = tmos_msg_receive( task_id )) != NULL )
{
//消息处理
// demo_task_process_TMOSMsg( (tmos_event_hdr_t *)pMsg );
//释放消息空间
tmos_msg_deallocate( pMsg );
}
// return unprocessed events
return (events ^ SYS_EVENT_MSG);
}
if(events & LED_4)
{
// Start the Device
// DelayMs(1000);
PRINT("LED4");
GPIOA_InverseBits(bPWM7);//PB4
tmos_start_task(LedFlashTaskId, LED_4, 1600);
return (events ^ LED_4);
}
if(events & LED_7)
{
// DelayMs(1000);
PRINT("LED7");
GPIOA_InverseBits(bPWM7);//PB4
tmos_start_task(LedFlashTaskId, LED_7, 1600);
return (events ^ LED_7);
}
// Discard unknown events
return 0;
}