xSemaphoreCreateCounting和osSemaphoreCreate的区别

两个函数都是创建计数型信号量的函数
1.用cube配置完了就会在MX_FREERTOS_Init()这个函数里创建这个函数,osSemaphoreCreate是CubeMX 提供的信号量操作函数接口,Count既是计数信号量的最大值,也是初始值。osSemaphoreCreate(a,b),a不知是什么东西,b是Count。
2.xSemaphoreCreateCounting是FreeRTOS提供的最原本的创建计数型信号量函数,xSemaphoreCreateCounting(a,b), a是计数信号量的最大计数值,b是初始值。
/*****************************************************************************************************************************************************/
3.按照正点原子的计数型信号量实验的话,xSemaphoreCreateCounting(255,0)。最大计数值是255,计数信号量初始值是0。只有在任务1中按下WK_UP之后才会释放信号量,则信号量加1,任务2中获取信号量才会执行之后的内容,获取当前可用信号量的数目并打印出来。所以程序运行之后,如果不按下WK_UP按键的话什么事情都不会发生,什么现象都没有,因为信号量初始值是0。
4.按照正点原子的计数型信号量实验的话,osSemaphoreCreate(osSemaphore(myCountingSem01), 255,),最大计数值是255,计数信号量初始值是255。按下WK_UP之后会释放信号量,则信号量加1,任务2中获取信号量执行之后的内容,获取当前可用信号量的数目并打印出来。程序运行之后,会一直获取到信号量因为计数信号量初始值是255,一直获取因此信号量一直减1,按下按键释放信号量,信号量会加1,一直不按则信号量一直减到0就和xSemaphoreCreateCounting一样了。

总结:两个函数的不同主要是计数信号量初始值不同引起的,没有信号量会一直死等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值