单片机中断程序是如何被中断的?

你有没有想过一个问题:如果外部中断来的频率足够快,上一个中断没有处理完成,新来的中断该如何处理?
中断一般是由硬件(例如外设、外部引脚)产生,当某种内部或外部事件发生时,mcu的中断系统将迫使 cpu 暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去,所有的cortex-m 内核系统都有一个用于中断处理的组件nvic,主要负责处理中断,还处理其他需要服务的事件。嵌套向量式中断控制器(nvic: nested vectored interrupt controller)集成在cortex-m0处理器里,它与处理器内核紧密相连,并且提供了中断控制功能以及对系统异常的支持。
处理器中的nvic能够处理多个可屏蔽中断通道和可编程优先级,中断输入请求可以是电平触发,也可以是最小的一个时钟周期的脉冲信号。每一个外部中断线都可以独立的使能、清除或挂起,并且挂起状态也可以手动地设置和清除。
主程序正在执行,当遇到中断请求(interrupt request)时,暂停主程序的执行转而去执行中断服务例程(interrupt service routine,isr),称为响应,中断服务例程执行完毕后返回到主程序断点处并继续执行主程序。多个中断是可以进行嵌套的。正在执行的较低优先级中断可以被较高优先级的中断所打断,在执行完高级中断后返回到低级中断里继续执行,采用“咬尾中断”机制。
内核中断(异常管理和休眠模式等),其中断优先级则由scb寄存器来管理,irq的中断优先级是由nvic来管理。
nvic的寄存器经过了存储器映射,其寄存器的起始地址为0xe000e100,对其访问必须是每次32bit。
scb寄存器的起始地址:0xe000ed00,也是每次32bit访问,scb寄存器主要包含systick操作、异常管理和休眠模式控制。
nvic具有以下特性:
灵活的中断管理:使能清除、优先级配置
硬件嵌套中断支持
向量化的异常入口
中断屏蔽
1. 中断使能和清除使能
arm将处理器的中断使能设置和清除设置寄存器分在两个不同的地址,这种设计主要有如下优势:一方面这种方式减少了使能中断所需要的步骤,使能一个中断nvic只需要访问一次,同时也减少了程序代码并且降低了执行时间,另一方面当多个应用程序进程同时访问寄存器或者在读写操作寄存器时有操作其他的中断使能位,这样就有可能导致寄存器丢失,设置和清除分成两个寄存器能够有效防止控制信号丢失。
因此我可以独立的操作每一个中断的使能和清除设置。
1.1 c代码
*(volatile unsigned long) (0xe000e100) = 0x4 ; //使能#2中断
*(volatile unsigned long) (0xe000e180) = 0x4 ; //清除#2中断  
1.2 汇编代码
1.3 cmsis标准设备驱动函数
2. 中断挂起和清除挂起
如果一个中断发生了,却无法立即处理,这个中断请求将会被挂起。挂起状态保存在一个寄存器中,如果处理器的当前优先级还没有降低到可以处理挂起的请求,并且没有手动清除挂起状态,该状态将会一直保持。
可以通过操作中断设置挂起和中断清除挂起两个独立的寄存器来访问或者修改中断挂起状态,中断挂起寄存器也是通过两个地址来实现设置和清除相关位。这使得每一个位都可以独立修改,并且无需担心在两个应用程序进程竞争访问时出现的数据丢失。
中断挂起状态寄存器允许使用软件来触发中断。如果中断已经使能并且没有被屏蔽掉,当前还没有更高优先级的中断在运行,这时中断的服务程序就会立即得以执行。
2.1 c代码
2.2 汇编代码
2.3 cmsis标准设备驱动函数


毛老子固件内嵌花生壳PHTunnel,内网穿透实现局域网应用远程外网访问
视觉的亮度特性
高通新款飞行控制芯片支持无人机室内飞行及空中识别物体
纵观云计算市场的现有格局及未来发展趋势
总投资450亿元的长三角人工智能超算中心暨产业基地项目正式开工
单片机中断程序是如何被中断的?
阿牛巴流量计的应用
基于RTSJ的实时嵌入式系统API的优化研究
DS1923 温度/湿度记录仪iButton
特斯拉超级充电站已覆盖我国 270 多个城市,月增 20 城
vivo xplay7什么时候上市?vivo xplay7谍照曝光:全面屏+屏下指纹,性能颜值达到顶级
Fingerprints发布第四代指纹传感器
了解直插瓷片电容
MAX4929E用于HDMI/DVI低频开关
德勤科技加速数据化转型的迫切需求和中国数字基础设施计划的发展
三八节送什么礼物比较好?超高性价比的四款蓝牙耳机盘点
4路无线遥控开关电路制作
如何利用D3引擎来创建APP和短信推送规则
固定污染源挥发性有机物VOCs在线监测系统的应用
已证实!iPhone 12的A14处理器是残缺版,iPad Air 4是满血版