CMSIS RTOS生成的二值信号量问题

描述:我使用CubeMX生成freertos中创建二值信号量的原码image.png

从源代码中可以看到freertos在创建完成二值后会释放掉一次信号量值,我想问这样做的意义是什么,因为我在自己的代码中调用CMSIS RTOS的API创建一个信号量

image.png

创建完成后如果不进行一次获取的话image.png

那么我等待该信号量的线程就会运行一次,这不是我所需要的,那么既然我创建完成后不需要等待该信号量的线程运行(除非我在其他线程中,或者中断中释放掉该信号量后才可以运行该线程).这也是一般开发的要求把不能我还没有释放信号量线程因为底层创建信号量时释放掉了一次信号量就运行了一遍吧,试问freertos底层这样做的意义是什么呢?


已邀请:

碧海蓝天

赞同来自:

我也遇到了同样的问题,请问你最后是怎么解决的?是不是不用cubemx创建,自己写代码创建就可以避免出现这种问题?

乌龟也会飞

赞同来自:

很简单啊,要你把那个代码的底层改一下,要么穿件完成后自己获取一次信号量自己把它消耗掉不就行了嘛

要回复问题请先登录注册