你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32之FreeRTOS(六):递归互斥型信号量用法

[复制链接]
STMCU小助手 发布时间:2022-3-9 10:30
注意:递归互斥型信号量与互斥型信号量相同不能用在中断服务函数中 原因如下: 1、由于优先级的限制z递归互斥信号量只能用在任务中不能用在中断服务函数中 2、中断服务函数不能设置阻塞时间
1 v. Y2 i$ d: A; }+ f5 @
8 m+ K5 j3 {7 d' D$ H# ~一般使用步骤是:
3 D) N- v9 g* ^, m3 y) N1、创建递归互斥型信号量
8 H! G2 Q5 h! R2、获取递归互斥信号量
. P/ s% w; v% T" n: j0 e3、释放递归互斥信号量

% V2 R0 x- x3 M8 C) D* W: ^! G4 k; }6 V* M
第1步:创建递归互斥信号量
2 {  }& g2 |1 h" d* f6 A1 ~
  1. //递归互斥信号量句柄
    0 @: y/ I9 c( U+ G8 B" y* W4 ?2 W  t
  2. SemaphoreHandle_t ResursiveMutex;;        //递归互斥信号量) Y) A) g" `/ Y" [. Q. J% I& \
  3. //创建递归互斥信号量
    # [; M0 [+ U7 ]% ]
  4. ResursiveMutex= xSemaphoreCreateRecursiveMutex();
复制代码
3 f' n+ W0 L& X# D. n4 ^
第2步:获取递归互斥信号量
+ [* ]; v) i8 g% d4 p9 g
  1. xSemaphoreTakeRecursive(ResursiveMutex,(TickType_t)10);         
    * K# Z3 k5 n- k0 |9 a: [$ h
  2. //获取互斥信号量 阻塞时间设置为10
复制代码
+ D9 Z/ ?* R, t; m4 [, ^' A
第3步:释放递归互斥信号量
& v/ A7 T6 U% O
注意:互斥信号量用完一定要释放) B" Z6 U0 K5 _2 ?9 [. ]. X
  1. xSemaphoreGiveRecursive(ResursiveMutex) ;                                        //释放互斥信号量
复制代码

& V+ V- n4 E& L; x总结
2 k* b1 d6 q; Y. C, L8 o& d) v1 u以上是递归互斥信号量的常规使用方法。& ^5 C2 k# x  [/ i, e! I
0 V; e" M+ V5 u# }' Y4 c
- D! j+ C; T! S6 J6 [* o
赞 收藏 评论0 发布时间:2022-3-9 10:30

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版