MCU篇3:如何合理、高效的使用MCU的中断资源?

cathy的头像
cathy 发布于:周三, 04/24/2024 - 09:57 ,关键词:

相关文章:

MCU篇1:如何灵活配置GPIO使产品功耗更低?

MCU篇2:如何用通用MCU来实现电池的分段式充电管理功能?

MCU的中断功能是芯片里非常重要的一个功能模块,也是对产品功能和性能优劣有着至关重要的一项功能,相信不少小伙伴们都或多或少的在“中断”这个问题上踩过坑,那我们这一期就来深入了解一下MCU的中断功能。

按照惯例我们还是先给这一期设定一个主题,就是如何正确及合理的使用中断,且如果让中断的效率最高,设计出来的产品更稳定可靠?    

先从MCU的中断资源入手,它都有哪些中断资源呢?不同内核的MCU会有不一样的答案,我们以最常见的51 单片机和ARM Cotex-M系列的单片机为例:    

51、52单片机总共有 5~6个中断源,分别是外部中断(2个)、定时器中断(3个)、串口中断(1个);他们的初始优先级从高到低的顺序是:外部中断0> 定时器0>外部中断1>定时器1>串口中断>定时器2  (外部中断0是最高的,定时器2 最低)。    

1.jpeg

要把51单片机的中断用起来,设置2个寄存器即可,一个是中断允许寄存器IE、一个是中断优先级寄存器IP;中断允许寄存器支持对每个中断进行位操作 和总允许控制;而中断优先级寄存器则是可以改变中断源的优先级,分高和低两个优先级;同等级的中断还要继续遵守上图的顺序,而设置为高优先级的中断,则比低优先级的排在前面,它可以中断低优先级的程序,从而形成中断嵌套。比较常见的做法是把我们产品里要求实时性最高的中断服务子程序设置为“高优先级”,而其他实时性要求不高的都设置为“低优先级”,其他低优先级的中断源则按照上面表格的顺序来进行选用接入。典型的应用是在做通信从机产品时,将串口中断设置为高优先级,其他的中断的则保持为低优先级,每次上层有指令发下来,都能第一时间响应。    

ARM Cortex -M系列的芯片的中断资源则更加丰富,功能更强大:

Cortex核的芯片内嵌了中断控制器NVIC和扩展中断EXTI事件控制器,他们的特性如下:

2.png

3.png

不管是哪种芯片的中断,在使用时都需要遵循合理的工作流程,如下:


4.png

我们对中断使用有了个基本的了解之后,下面开始进入本文的问答环节:

问题1:我们为什么要用中断?中断能解决什么问题?

答:中断功能的最重要的价值在于可实现“任务切换”,通过中断方式从某个任务当中切换到另一个任务中去,从而实现cpu资源的最大化。在有运行操作系统的mcu里,中断承担更加重要的角色,进程调度,内存管理这些功能都需要用到中断功能。

问题2:我们怎样才能高效的利用中断资源?

答:合理设计中断资源的外部线路是第一步,尤其是存在多种外部中断输入时,比如同样都是di数字量中断触发信号,按键信号的触发频率就比较低,那就可以把它安排在外部中断1,而频率更高的则放在中断0的脚位上。第二是合理设置中断优先级,让实时性要求高的中断任务获得更高的优先级。第三是需要精确计算中断服务程序所需要执行的时长,评估其对被中断任务的影响,在执行实时性很高的子程序时可以考虑屏蔽中断响应,执行完之后再开放中断。

问题3:使用中断有哪些注意事项?

答:

● 中断函数被调用的时间不固定:中断函数要自己保护现场。

● 中断函数被调用的地点不固定:当前的任务无法给中断函数传参。

● 中断函数的返回地点不固定:中断函数不能有返回值。

在一个嵌入式ARM裸机环境下,如果我们编写一个中断处理函数,一般要遵循以下基本流程。

保存中断现场:状态寄存器、返回地址入栈、中断ISR中要用到的寄存器入栈。

清中断:关中断,保护现场。有些硬件会自动清除,重开中断前记得要清除。

执行用户编写的中断处理函数。

恢复现场:将栈中保存的数据弹到CPU的各个寄存器中,恢复被中断的现场,从栈中弹出返回地址到PC寄存器,CPU从被打断的程序处继续执行。

问题4:如何使用才能让它稳定可靠?

答:对于可靠性要求更高的产品,对中断服务需要有非常精准的把控,高度的确定性是稳定可靠的前提条件。因此,在使用中断嵌套时就要非常小心,避免在特殊情况下高优先级的中断始终在占用芯片资源,这个又涉及到芯片工作主频的问题,因此在实践中需要综合考量,高优先级的中断嵌套问题,如果不能准确判断它中断的频率和占用资源的情况,那么就要想办法避免中断嵌套的发生,最简单的办法就是在进入某个中断服务子程序里去后暂时先关闭所有中断,在完成这个服务程序后再打开中断允许,让中断服务按照先到先执行的方式运行,这种反而更加简单可靠。

来源:电路开发实战小课堂

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 25