在BLE broadcaster基礎(chǔ)上測(cè)試TMOS調(diào)度,發(fā)現(xiàn)在ProcessEvent里第一行增加PRINT("LED_Process:%x\n",events);能正常調(diào)度,注釋掉這行就不行,非常神奇,附件是完整代碼包,幫忙看看什么原因,謝謝。
深入測(cè)試了一下,發(fā)現(xiàn)和這個(gè)打印語(yǔ)句中的\n有關(guān)系,去掉\n不能調(diào)度,加上\n能正常調(diào)度。
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;
}