This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2642R: TI RTOS两任务间通过事件同步问题

Part Number: CC2642R


我在程序中,建立了任务A和任务B,这两任务间通过事件触发/传递信息,现在遇到一个不解之迷,请指教。程序如下:

#define A_EVT_K    Event_Id_00  
#define A_ALL_EVENTS        ( A_EVT_K )
Event_Handle ATskEvtHandle;

static void A_taskFxn(UArg a0, UArg a1)  
{
     Event_Params AEvtParams;
     Event_Params_init(&AEvtParams);
     Event_construct(&ATskEvtStruct, &AEvtParams);   
     ATskEvtHandle = Event_handle(&ATskEvtStruct);

     for (;;)   
     {
            uint32_t events;
            events = Event_pend(ATskEvtHandle, Event_Id_NONE, A_ALL_EVENTS,ICALL_TIMEOUT_FOREVER);
            if(events)
            {
                     if(events&A_EVT_K)
                     {
                              打印A语句;
                     }
            }
      }
}


//以下是task B里调用的函数
void BCallBack(uint8_t value)
{
           RealTimeValu= value;
          Event_post(ATskEvtHandle,A_EVT_K);

           打印B语句
}

问题描述:如果A、B两任务优先级相同或B优先级高于A,只打印B语句,不能打印出A语句。如果A任务优先级高于B,只打印A语句,不能打印B语句。

但是如果把任务B里调用的这个函数,放到任务A中定时调用,却可以实现事件正确传递(A、B语句都能打印出来)

不知道什么原因,请帮忙分析解答一下,谢谢