我在程序中,建立了任务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语句都能打印出来)
不知道什么原因,请帮忙分析解答一下,谢谢