一文读懂FreeRTOS的中断管理机制

FreeRTOS的中断管理核心思想是中断服务程序尽可能的简短,只处理紧急的任务,将负责的工作交给任务去做。

核心原则:延迟处理

在实时操作系统中,中断优先级最高,会立即打断当前运行的任务,因此中断服务程序过长可能会导致其他低优先级任务被长时间遮蔽,系统响应性变低;任务调度被推迟,破坏任务实时性。

通过延迟处理:

ISR只负责应答硬件、清除中断标志和读取数据等紧急操作。

任务负责处理数据、处理复杂逻辑等操作

关键机制:FromISR API

FreeRTOS为几乎所有可以在中断中调用的函数提供了一个以FromISR结尾的版本。

普通的API在结束时可能会检查是否需要进行一次上下文切换,在ISR内部,不能进行上下文切换,因为直接切换可能会导致调度上的混乱。

以FromISR结尾的API不会直接切换上下文,会返回一个xHigherPriorityTaskWoken的参数。

该参数初始化的值为pdFALSE,如果在执行FromISR API时,解除阻塞了一个任务,并且该任务优先级高于被中断的任务,参数值会被设为pdTRUE。

中断处理流程

1.硬件中断发生,CPU跳转到对应的ISR。

2.ISR开始执行,进行必要的硬件操作

3.ISR调用FromISR的API

4.ISR结束前,检查xHigherPriorityTaskWoken的值,并调用poerYIELD_FROM_ISR();如果xHigherPriorityTaskWoken==pdTRUE,就会触发一次中断退出时的上下文切换,让更高优先级的任务立刻执行,而不是返回到被中断的任务;如果==pdFALSE,则正常返回到被中断的任务

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值