Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
大家好、我在我们的项目中使用 TI-RTOS。
伪代码:
ApplTask()
{
while (true)
{
…………
Queue.add (data)
Event_post (readyEventFromAppl)
}
void RFTask()
{
while (true)
{
data = Queue.get();
RfTx (data);
RfRx (callback、timeout);
Event_pend (readyEventFromRf、timeout);
GetDataEvent_Received
(readyEventFromApplicent、timeout);Timeout}
}
callback()
{
Event_post (readyEventFromRf);
}
因此 ,RfTask 阻止等待来自 callback()的事件,并且仅在该事件检查来自应用程序的事件之后。
为了获得随时传输数据的机会 、我可以:
1.将 RfRx 超时设置为受限值,并定期退出队列-这会增加 发送数据进程的延迟。
2.从 AppTask 通过 RF_cancelCmd()显式停止射频, POST EventFromRf 包含 DataForSendReady -每个射频操作都将停止(包括 Tx)。
3.从 ApplicationTask POST EventFromRf 包含 DataForSendReady -它不安全,因为 calling()也发布 EventFromRf 。
问:唤醒 RfTask()以获得 检查队列并传输数据的机会的正确方法是什么?