RTOS之临界区到底该怎么用?什么时候用?

2 篇文章 0 订阅
1 篇文章 0 订阅

基础1-什么是临界区

临界区是指那些必须完整运行,不能被打断的代码段,比如有的外设的初始化需要严格的时序,初始化过程中不能被打断、比如同步值的获取;

基础2-什么是函数可重入,什么是函数不可重入?

 函数可重入是指可以被打断的函数;函数不可重入是指不可以被打断运行的函数;

函数重入可能出现的情况:

  • 在运行中会被中断打断;
  • 有优先级的任务切换;
  • 递归调用

可重入的函数有哪些特征?

  • 参数一般为指针或者为常数
  • 不依靠全局变量
  • 对时序没有严格要求
  • 全使用局部变量

基础3-临界区工作方式

主流的RTOS基本上对临界区的设计有两种:

1. 屏蔽中断; 可以无视中断,对于任何不可重入函数都是非常友好,但容易错过中断。

2.不屏蔽中断,但是锁定调度器;会将调度器锁定,所以不会出现优先级任务的打断;不会错过中断,但是有可能会出现不可重入函数的打断,所以,需要配合信号量等方法对部分变量进行控制。

基础4-临界区到底该怎么用?什么时候用?

1.在所有不可重入的函数调用前进入临界区

2.在函数结束调用后退出临界区

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值