【发布时间】:2021-05-19 08:50:29
【问题描述】:
我有一个任务,通过信号标志的 id 处理几个操作。
这些标志不会在操作结束时重置(它在无限循环中运行并等待下一个信号)。
for(;;)
{
signalWaitEvent = osSignalWait(0, osWaitForever);
if( signalWaitEvent.value.v == 0x10 )
{
// Some magic
}
else if( signalWaitEvent.value.v == 0x15 )
{
// Some magic
}
}
由于我不是STM表单,所以没有实现osSignalClear函数。
有什么办法吗?
谢谢大家!
【问题讨论】:
-
使用 freeRTOS 机制而不是那些愚蠢的 CMSIS 机制。它在后台使用信号量,所以你想“清除”什么?
-
嗨,谢谢。来自任务的值没有改变,来自 osEvent 的 event.valve.v event = osSignalWait(0, osWaitForever);
-
不要使用这种愚蠢的 CMSIS,而是使用高效的 freeRTOS 直接到任务通知。