【问题标题】:STM32 FreeRTOS, How To Clear Task Signal FlagSTM32 FreeRTOS,如何清除任务信号标志
【发布时间】: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 直接到任务通知。

标签: task signals stm32 reset


【解决方案1】:

谢谢 0___________

我用 FreeRTOS ulTask​​NotifyTake 替换了 CMSIS 函数 osSignalWait,它现在可以工作了。

【讨论】:

  • 正如我所说,不要使用这个 CMSIS 包装垃圾
猜你喜欢
  • 1970-01-01
  • 2018-10-07
  • 2019-02-26
  • 2018-07-14
  • 2017-04-07
  • 2014-09-12
  • 1970-01-01
  • 2019-11-21
  • 2021-02-05
相关资源
最近更新 更多