RTOS系统5-中断管理

本文介绍了在RTOS系统中如何管理和同步中断,特别是通过二值信号量实现延迟中断处理。讨论了中断服务例程(ISR)的最佳实践,强调ISR应尽可能短,并介绍如何使用xSemaphoreHandle类型变量创建和管理信号量。xSemaphoreGiveFromISR()函数在中断中释放信号量,可能触发高优先级任务的上下文切换。提供了代码示例和注意事项,包括避免在高优先级中断中调用内核API。
摘要由CSDN通过智能技术生成

1、概览

    嵌入式实时系统需要对整个系统环境产生的事件作出反应。 这些事件对处理时间响应时间都有不同的要求。在各种情况下,都需要作出合理的判断,以达到最佳事件处理的实现策略:

  • 事件如何被检测到?通常采用中断方式,但是事件输入也可以通过查询方式(例如:查询电平高低)获得。
  • 什么时候采用中断方式?中断服务例程(ISR)中的处理量有多大?以及 ISR 外的任务量有多大?通常情况下, ISR 应当越短越好
  • 事件如何通知到主程序(这里指非 ISR 程序,而非 main()程序)代码?这些代码要如何架构才能最好地适应异步处理?

值得注意的是:只有以”FromISR””FROM_ISR”结束的 API 函数或宏才可以在中断服务例程中。

2、延迟中断

2.1 采用二值信号量同步

 概念:  

        二值信号量可以在某个特殊的中断发生时,让任务解除阻塞,相当于让任务与中断同步。这样就可以让中断事件处理量大的工作在同步任务中完成,中断服务例程(ISR)中只是快速处理少部份工作。 如此,中断处理可以说是被推迟(deferred)”到一个处理(handler)”任务。

        如果某个中断处理要求特别紧急,其延迟处理任务的优先级可以设为最高,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值