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

【经验分享】STM32之FreeRTOS(八):任务通知模拟计数型信号量

[复制链接]
STMCU小助手 发布时间:2022-3-9 10:23
任务通知模拟计数型信号量,实际与计数型信号量的发送与获取十分类似,只是将计数型信号量的发送与获取换成任务通知的发送与获取。
* l8 `- A1 B& x9 |8 E( t+ K" b
; o% \( @' M9 E. N, _* M. P任务通知优缺点: 6 b" M7 v" U. t  L7 U
优点:可以提高响应速度并减少RAM使用。
  w! ]* Z* n. H3 [6 t; j缺点: 1、任务通知只能有一个接收任务 2、接收任务可以因为接收任务通知进入阻塞态,而发送任务不会因为发送失败进入阻塞态" @% A9 [8 Q, _' f

# b6 d7 b9 R0 u& }% u$ N0 C0 A9 `6 Q# j; I) \. Y' _+ Z% b
一般使用步骤是:
: a, Q* w" \+ `1、发送任务通知
- C* B4 e: P: S8 a, M2、获取任务通知

( m% ?9 P8 n; U1 C; ]9 q
' W. |+ X/ y* z7 Q第1步:发送任务通知
: E; X, t+ d4 t
  1. //任务句柄
    7 ~6 q' }% H: h) A7 Y
  2. TaskHandle_t SemapTakeTask_Handler;" z( R% `) R. T  w8 j1 T5 s
  3. //发送任务通知$ J% A( T* [% D
  4. xTaskNotifyGive(SemapTakeTask_Handler);//发送任务通知
    3 B. [. m7 c6 \4 U! c
  5. & M5 R1 |5 K9 d9 `. X, l: O- r
  6. SemapTakeTask_Handler为接收通知的任务句柄
复制代码

) l8 W7 a3 C, n& C" ~! X4 ]& ?第2步:获取任务通知
' E+ [. v2 \6 }/ c( b$ I& R) |* X
  1. u32 NotifyValue=ulTaskNotifyTake(pdFALSE,portMAX_DELAY);//获取任务通知) e  Z- E2 u' Y6 u
  2. 9 k- d! D) g2 _5 J. G: `2 F* a, ^
  3. //ulTaskNotifyTake函数返回的是任务通知之前任务通知值.所以NotifyValue-1才是当前任务通知值
复制代码
; s0 U2 C: a; A5 Z6 `
总结& Z3 x8 p( c8 i
以上是任务通知模拟计数信号量的常规用法。8 @/ _* }" I/ z+ Z
! C# I6 {; P4 K. }0 n1 u  @( S  `3 v

7 q9 `: l7 \. y5 T9 Q/ R
赞 收藏 评论0 发布时间:2022-3-9 10:23

举报

0个回答

所属标签

相似技术帖

官网相关资源

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