MCU中断资源使用指南:如何合理、高效地利用中断功能?
创作时间:
作者:
@小白创作中心
MCU中断资源使用指南:如何合理、高效地利用中断功能?
引用
1
来源
1.
https://mcu.eetrend.com/content/2024/100580373.html
MCU的中断功能是芯片里非常重要的一个功能模块,也是对产品功能和性能优劣有着至关重要的一项功能。本文将深入探讨如何合理、高效地使用MCU的中断资源,包括中断资源的种类、优先级设置、使用场景和注意事项等。
MCU中断资源概述
MCU的中断资源因内核不同而有所差异。以常见的51单片机和ARM Cortex-M系列单片机为例:
- 51单片机:共有5~6个中断源,包括外部中断(2个)、定时器中断(3个)、串口中断(1个)。它们的初始优先级从高到低依次为:外部中断0 > 定时器0 > 外部中断1 > 定时器1 > 串口中断 > 定时器2。
要使用51单片机的中断,需要设置两个寄存器:中断允许寄存器IE和中断优先级寄存器IP。中断允许寄存器支持对每个中断进行位操作和总允许控制,而中断优先级寄存器则可以改变中断源的优先级,分为高和低两个优先级。
- ARM Cortex-M系列单片机:中断资源更加丰富,内嵌了中断控制器NVIC和扩展中断EXTI事件控制器。
中断使用问答
问题1:为什么要用中断?中断能解决什么问题?
中断功能最重要的价值在于实现“任务切换”,通过中断方式从某个任务切换到另一个任务,从而实现CPU资源的最大化。在运行操作系统的MCU中,中断承担着更加重要的角色,如进程调度、内存管理等功能都需要用到中断功能。
问题2:如何高效利用中断资源?
- 合理设计中断资源的外部线路,尤其是存在多种外部中断输入时。例如,将触发频率较低的按键信号安排在外部中断1,将频率较高的信号放在中断0。
- 合理设置中断优先级,让实时性要求高的中断任务获得更高的优先级。
- 精确计算中断服务程序的执行时长,评估其对被中断任务的影响。在执行实时性很高的子程序时可以考虑屏蔽中断响应,执行完之后再开放中断。
问题3:使用中断有哪些注意事项?
- 中断函数被调用的时间不固定,因此需要自己保护现场。
- 中断函数被调用的地点不固定,当前的任务无法给中断函数传参。
- 中断函数的返回地点不固定,因此中断函数不能有返回值。
在一个嵌入式ARM裸机环境下,编写中断处理函数时一般要遵循以下基本流程:
- 保存中断现场:状态寄存器、返回地址入栈、中断ISR中要用到的寄存器入栈。
- 清中断:关中断,保护现场。有些硬件会自动清除,重开中断前记得要清除。
- 执行用户编写的中断处理函数。
- 恢复现场:将栈中保存的数据弹到CPU的各个寄存器中,恢复被中断的现场,从栈中弹出返回地址到PC寄存器,CPU从被打断的程序处继续执行。
问题4:如何使用才能让它稳定可靠?
对于可靠性要求更高的产品,需要对中断服务有非常精准的把控,高度的确定性是稳定可靠的前提条件。在使用中断嵌套时要非常小心,避免在特殊情况下高优先级的中断始终占用芯片资源。如果不能准确判断中断的频率和占用资源的情况,就要想办法避免中断嵌套的发生。最简单的方法是在进入某个中断服务子程序后暂时关闭所有中断,在完成这个服务程序后再打开中断允许,让中断服务按照先到先执行的方式运行。
热门推荐
龙柳和雪柳的差异
龙柳和雪柳的差异
自驾游前必做的汽车保养秘籍
皖南川藏线:最美自驾游打卡胜地
九寨沟自驾游,燃爆朋友圈的绝美路线
山西自驾游:探秘三大古迹
《鬼吹灯》教你打造都市灵异小说氛围
都市灵异小说如何刻画心理恐惧?
巨蟹座女生的社交秘籍:如何用温暖赢得人心
跟着小李和婷婷玩转北京
巨蟹座的消化系统保养秘籍
巨蟹座的恋爱运势,你get到了吗?
巨蟹座恋爱攻略:如何赢得这颗柔软的心?
巨蟹座的爱情观:深情专一的秘密
动画片配音的秘密:揭秘幕后制作
动画片英语配音:孩子学英语的秘密武器
《沙丘2》热映,教你选片不再迷茫
大学生坐101小时硬座回家:车票700元 坐出痔疮花了5000元
我的中国心:浓缩的爱国情怀与家国牵挂
男生花7百买101小时硬座回家赚2千多 独特经历引热议
广东佛山南海区西樵镇:平沙岛上的世外桃源
泰坦时钟人3.0能力炸裂,动漫迷狂喜
长期打嗝竟是压力惹的祸?
王嘉尔牵手大杨嫂引争议,大杨哥怒批行为不当
我的中国心:一首唱响华夏的爱国之歌
自制蜂蜜红薯饵料,钓大鱼神器!
东京电车换乘神器:Suica卡使用全攻略
Suica卡和Pasmo卡,让你在日本电车换乘不再迷路!
揭秘佛山龙卷风研究中心:从预警试验到最新研究进展
龙卷风来袭,这些防护要点请记牢