STM32CUBEMX创建信号量异常分析

一、遇到一个奇怪问题,在没有释放信号量的前提下,却能获取到一次信号量然后进入阻塞状态

在这里插入图片描述
在这里插入图片描述

二、解决问题

1、异常信号量出现 创建信号量 的函数是 vSemaphoreCreateBinary(); (注意是v),查阅资料这是旧版Free RTOS的信号量创建函数,用它创建信号量时UBaseType_t uxMessagesWaiting的值默认是1,
这就是说创建信号量默认count值是1,所以没有释放信号量也能获取一次信号量并进入阻塞状态。

2、更换信号量创建函数为 xSemaphoreCreateBinary(); UBaseType_t uxMessagesWaiting的值默认是0,这是正确情况。

3、问题来了,我使用的rtos 版本是 V10.3 ,已经是新版了,用stm32cubeide 创建信号量时为啥还是vSemaphoreCreateBinary();
在这里插入图片描述

三、建议

STM32CUBEMX 对外设的配置很方便,值得推荐,但是对Free RTOS又加了一层封装,用起来不是太舒服,建议外设可以用软件配置,Free RTOS还是添加原版本的比较好。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值