RT-Thread入门学习笔记-熟悉全局中断的操作

前言
在rt-thread中,全局中断的操作很多,大家都知道全局中断的【disable】与【enable】
需要正确的理解全局中断的disable与enable。
如下,保证链表的正确操作,【中断保护】
/* lock interrupt */temp = rt_hw_interrupt_disable();/* remove from old list */rt_list_remove(&(object- >list));/* unlock interrupt */rt_hw_interrupt_enable(temp);问题与分析:
rt_hw_interrupt_disable后,就无法触发中断了吗?
经过实际的验证,与分析rt_hw_interrupt_disable的实现方法:得到如下结论:
rt_hw_interrupt_disable 只是屏蔽了全局【中断请求】,配置使能的中断,依旧可以【中断】,只是,中断处理函数isr,暂不执行。
也就是说,如果硬件配置使能了中断,rt_hw_interrupt_disable 后,依旧具备【中断】功能。如你配置一个gpio外部中断,并使能中断。rt_hw_interrupt_disable 后,外部中断可以产生,只是不触发执行【isr】。
【重点】:当rt_hw_interrupt_disable 后,触发的中断,isr暂时无法执行,但硬件正常置【pending】中断标志位。
当rt_hw_interrupt_enable后,【pending】的中断,会执行中断【isr】处理程序。
概念的梳理
单个中断的产生:配置使能硬件中断,如按键,gpio外部中断,按下触发中断,硬件置【pending】中断标志位,并执行中断【isr】
单个中断的禁止:配置禁能硬件中断,如按键,按下不再触发中断。即使有【isr】中断处理函数,不会执行。
全局中断的禁止:也就是不再触发任何物理中断,【没找到这个功能函数】!
全局中断请求的屏蔽:rt_hw_interrupt_disable,触发的中断,只能置【pending】中断标志位,cpu继续执行操作。
互斥或是临界值的操作,可以使用屏蔽全局中断请求+处理+打开全局中断请求的方式,让操作独占的方式完成操作。
梳理rt-thread pm中睡眠流程
睡眠操作执行在:idle线程(最低线程优先级)
进入sleep前,是禁止全局中断请求的!rt_hw_interrupt_disable
睡眠前的引脚处理等,进入睡眠,cpu停止运行,【冻结】在这里!!
睡眠过程中,依旧可以被【使能的中断】,如按键gpio外部中断、lptimer等触发并唤醒cpu。
cpu唤醒后,继续下一条操作,【睡眠后的处理】
pm退出睡眠,开启全局中断请求rt_hw_interrupt_enable,此时,开启响应中断isr。
根据中断【pending】标志位,进入唤醒中断处理函数【isr】并执行。
如此,深睡眠时,系统时钟停了,引脚关了,唤醒时,恢复时钟与引脚即可!【睡眠整个流程是完整的】
不用担心会被中断切出去,甚至任务切换,造成系统运行在错误的时钟下。
不用担心关闭了全局中断请求,按键、lptimer等,无法触发中断,唤醒mcu。
总结
需要正确的理解中断的触发及执行流程
正确的理解rt-thead 全局中断的操作:rt_hw_interrupt_disable 与 rt_hw_interrupt_enable.

这些 STMicroelectronics 电路板为电动汽车制造噪音
基于大气压强传感器TP015P的多功能海拔仪设计
启明云端将推出基于ESP32-C6的Wi-Fi/BLE+ LoRa®低成本单通道网关方案
国行iPhone7/7 Plus刚上市不久就集体跌价 降幅多达400元
光伏发电站:太阳能怎么发电?为什么能扶贫?
RT-Thread入门学习笔记-熟悉全局中断的操作
rk3568是什么架构的?
怎样选择适合的客服机器人
vivo X9最真评测:X9也用上高通芯了!性能暴强双摄不错
新驰BFC8183固态免维护LED防爆灯技术参数
ADC仿真时最大噪声频率设置
172A、100V参数的MOS管更适合PD电源使用!
5G将在未来实现的是什么进步
如何自制移动电源?简单图解教程
不用羡慕P40系列,这些华为老手机也能喜提EMUI 10.1
中兴天机Axon 10 Pro已重回旗舰机市场采用了双曲面屏幕全面顶配
Pasternack发布新型短路-开路-负载-通路(SOLT)校准套件
小米6跑分曝光:小米一发威 连ipad pro都被秒杀了!
三极管的主要参数及极性判断
医疗TFT液晶屏特点