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语句都能打印出来)
不知道什么原因,请帮忙分析解答一下,谢谢
Kevin Qiu1:
我需要检查一下,预计下午回复
,
Kevin Qiu1:
参考下面event的使用示例:
https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_Bluetooth_synchronization.html
另外可以使用链接中的工具监控任务运行状态:
https://dev.ti.com/tirex/content/simplelink_academy_cc13xx_cc26xxsdk_5_40_00_00/modules/rtos/tirtos_basics/tirtos_basics.html
,
Janet xu:
可是这个例子,是从软件中断里(优先级更高)把事件传给任务A。我从中断里传事件给任务A也是完全可以的。现在问题是,用户自己创建了两个任务(比如公司里两个人开发同一个项目),这两任务之间,用事件传递信息不理想
,
Janet xu:
是不是两个任务之间进行事件同步,只能是Event_post;放在高优先级的任务里,Event_pend放在低优先级里?谢谢
,
Kevin Qiu1:
不是优先级的问题,是只有单个任务可以挂起在 Event 对象上:
https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1012853/cc1310-ti-rtos-event
TI中文支持网



