FreeRTOS中断与同步

FreeRTOS为中断提供了丰富的API(),旨在保持中断服务例程尽量的短小。此时不再在中断服务程序中进行中断的处理,而是告知任务,此时需要某个任务进行中断服务例程的后续处理任务了。缩减中断服务程序出于如下的考虑:

  1. 一旦进入中断服务程序,即使最高优先级的任务都不能被执行
  2. 中断服务程序会打乱一个任务的开始、执行时间点
  3. 一旦进入中断,新的低优先级的中断将不能被响应,过长的中断服务例程会增加这个风险
  4. 如果中断处理都放到中断中进行,软件处理人员需要注意单片机的片上资源可能同时被任务/中断服务程序访问,比如变量、外设、内存缓冲区等
  5. 一些FreeRTOS允许中断嵌套,过长的中断服务程序增加了复杂度降低了程序执行可预测性

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

鉴于我们将中断发生的事件推迟到任务中进行处理,此时需要有一个机制来实现中断与任务的同步。

当事件发生,中断服务程序发送一个二值信号来解除阻塞中的处理任务。这个二值信号可以认为是由长度为1的队列实现。由于这个队列长度为1,因此它要么是空要么是满的状态。当一个中断事件发生,中断写入二值信号量,退出中断,处于阻塞的中断延迟处理任务将二值信号量取出,执行中断延迟服务程序,并在结束后进入下一次阻塞,等待这个二值信号量。

 +++++++++++++++++

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ArvinXD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值