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

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

[复制链接]
STMCU小助手 发布时间:2022-3-9 10:23
任务通知模拟计数型信号量,实际与计数型信号量的发送与获取十分类似,只是将计数型信号量的发送与获取换成任务通知的发送与获取。
" I) Z% J5 w" z$ X. s/ l
% b  |7 Q; F6 b1 P任务通知优缺点:
) w( M& A; e2 D' E优点:可以提高响应速度并减少RAM使用。
5 D$ c9 |& f9 b! P1 a: n6 V# F缺点: 1、任务通知只能有一个接收任务 2、接收任务可以因为接收任务通知进入阻塞态,而发送任务不会因为发送失败进入阻塞态
. H, s% `/ R. T. _6 ?6 U1 |+ v5 s8 F/ R( o! C3 D: R! a

6 t3 I( N# h" H2 u' T& q5 m一般使用步骤是:! k8 p8 {+ F4 u6 V! O* S
1、发送任务通知
- k# y. u/ u0 s: g( j+ D/ o2、获取任务通知
! C  h) k& b0 B5 f! j+ P
4 C2 W. n. q% F8 V( n! S
第1步:发送任务通知. k( Y& ]! p" G" a9 i
  1. //任务句柄) K: B; G! g. V" r3 M" ~
  2. TaskHandle_t SemapTakeTask_Handler;
    6 p4 S4 w$ Q2 i! E9 ^/ d' f0 d+ I
  3. //发送任务通知
    + x2 }9 c. W1 W5 S, I8 L& x5 `* c
  4. xTaskNotifyGive(SemapTakeTask_Handler);//发送任务通知0 S  R  w$ d1 l
  5. 3 s1 O- E( C$ Z2 A
  6. SemapTakeTask_Handler为接收通知的任务句柄
复制代码

% m) t' z8 V. V第2步:获取任务通知
( k" e5 q* b3 }( i. x
  1. u32 NotifyValue=ulTaskNotifyTake(pdFALSE,portMAX_DELAY);//获取任务通知  V, r# y* E5 ]: o# V

  2. ) O" t5 ?; G0 m+ ?4 C  S6 Q, S
  3. //ulTaskNotifyTake函数返回的是任务通知之前任务通知值.所以NotifyValue-1才是当前任务通知值
复制代码
3 y( a& L% x, N
总结
+ B% `$ R; r7 k- k0 [; U5 `1 i以上是任务通知模拟计数信号量的常规用法。
$ v* `- J$ Q, S7 _# a8 h2 v8 p2 q* S

! [" n' b% A6 f. g' h  S  z0 o
赞 收藏 评论0 发布时间:2022-3-9 10:23

举报

0个回答

所属标签

相似技术帖

官网相关资源

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