我试验了下,osEvent osSignalWait (int32_t signals, uint32_t millisec)函数的参数解释有误,@param signals wait until all specified signal flags set or 0 for any single signal flag.翻译:等待所有指定的信号标志设置完毕或者参数为0,等待任何一个信号标志设置。而实测发现signals设置为0,或者其它任何值,只要
调用osSignalSet (osThreadId thread_id, int32_t signal)设置了signal的任何一个bit,osSignalWait()都会继续执行。如果调用osEvent osSignalWait (int32_t signals, uint32_t millisec)时将signals参数写0,确实不会清除已经设置的标志,signals参数对应函数BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait )的ulBitsToClearOnExit参数,意思是退出时要清除的标志。你的问题可以不用改代码,直接写osSignalWait (0x00000007, 1000)即可。
CMSIS-RTOS 就是一种标准呗 一样的api接口
我也遇到这个问题了
我试验了下,osEvent osSignalWait (int32_t signals, uint32_t millisec)函数的参数解释有误,@param signals wait until all specified signal flags set or 0 for any single signal flag.翻译:等待所有指定的信号标志设置完毕或者参数为0,等待任何一个信号标志设置。而实测发现signals设置为0,或者其它任何值,只要
调用osSignalSet (osThreadId thread_id, int32_t signal)设置了signal的任何一个bit,osSignalWait()都会继续执行。如果调用osEvent osSignalWait (int32_t signals, uint32_t millisec)时将signals参数写0,确实不会清除已经设置的标志,signals参数对应函数BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait )的ulBitsToClearOnExit参数,意思是退出时要清除的标志。你的问题可以不用改代码,直接写osSignalWait (0x00000007, 1000)即可。