【嵌入式学习笔记】---- 中断
1 中断概述
1.1 什么是中断
打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续执行。
中断是一种硬件机制,在这种机制中,中断可以随时发生,需要CPU立即处理;因此,当CPU通过指示中断请求线收到中断信号时,CPU停止当前进程并通过将控制权传递给服务设备的中断处理程序来响应该中断
1.2 中断的作用
- 实时控制
- 故障处理
- 数据传输
1.3 中断的意义和优点
高效处理紧急程序,不会一直占用CPU资源
- 分时操作:可以分时为多个外部设备服务,提高了处理器的利用率
- 实时相应:处理器能够及时处理系统的随机事件,提高了系统的实时性
- 可靠性高:具有处理设备故障及掉电等突发事件的能力,提高系统的可靠性
1.4 中断相关介绍
1.4.1 中断源
引发中断的事件
1.4.2 主程序
当前正在执行的程序(通常都是main函数)
1.4.3 断点
主程序被暂停的位置
1.4.4 中断服务函数程序
中断所对应的处理程序
1.4.5 中断向量表
一块固定的内存,以4字节对齐,为了区分中断源,系统为每一个中断源分配了一个唯一的编号,这个编号称为中断类型号,按照中断类型号,从小到大将所有中断服务程序的入口地址依次排列,得到中断向量表。
中断服务程序的入口地址称为中断向量,定义在启动文件,当发生中断时,CPU自动执行对应的中断服务函数程序。
2 嵌套向量中断控制器 NVIC
2.1 NVIC相关寄存器
NVIC相关寄存器 | 位数 | 寄存器个数 | 备注 |
---|---|---|---|
中断使能寄存器ISER | 32 | 8 | 每个位控制一个中断 |
中断除能寄存器ICER | 32 | 8 | 每个位控制一个中断 |
应用程序中断及复位控制寄存器AIRCR | 32 | 1 | 位[10:8]控制优先级分组 |
中断优先级寄存器IPR | 8 | 240 | 8个位对应一个中断,STM32只用高4位 |
2.2 NVIC工作原理
3 中断优先级
3.1 抢占优先级(pre)
抢占优先级高的(数字越小,优先级越高)最先执行,且可打断低优先级的中断,抢先执行
3.2 响应优先级(sub)
当两个抢占优先级相同的中断源同时触发时,响应优先级高的先执行(注意必须是同时触发,否则按照自然顺序依次执行,即不能互相打断)
3.3 自然优先级
中断向量表的优先级。抢占优先级和响应优先级都相同时,自然优先级高的先执行
3.4 优先级分组
优先级分组 | AIRCR[10:8] | IPRx bit[7:4]分配 | 分配结果 |
---|---|---|---|
0 | 111 | none:[7:4] | 0位抢占优先级,4位响应优先级 |
1 | 110 | [7]:[6:4] | 1位抢占优先级,3位响应优先级 |
2 | 101 | [7:6]:[5:4] | 2位抢占优先级,2位响应优先级 |
3 | 100 | [7:5]:[4] | 3位抢占优先级,1位响应优先级 |
4 | 011 | [7:4]:none | 4位抢占优先级,0位响应优先级 |
4 外部中断事件控制器 EXTI
4.1 EXTI基本概念
在STM32内部专门设计了一个外部中断事件控制器(EXTI)管理一些涉及GPIO引脚电平变化或者来自RTC和USB等外设的唤醒事件而引起的中断,EXTI提供了外部中断线,其中一部分用于GPIO引脚产生的中断,其余一部分用于RTC和USB等外设的唤醒事件(详情需参考芯片手册)
4.2 中断和事件的区别
4.2.1 中断
要进入NVIC,有相应的中断服务函数,需要CPU处理
4.2.2 事件
不进入NVIC,仅用于内部硬件自动控制,如TIM,DMA,ADC
4.3 EXTI主要特性
每条EXTI线都可以单独配置:
①选择类型:中断或事件
②触发方式:上升沿、下降沿、或双边沿触发
③......等等
4.4 EXTI工作原理
4.4.1 产生中断
要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写1允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,请求挂起寄存器对应位随之被置1,作为该中断请求的中断标志位,表明有中断发生。经与门后输出中断信号至NVIC。
完成中断处理后,必须对请求挂起寄存器的对应位写1,以清除本次中断的中断标志位,从而避免对同一个中断的重复响应
4.4.2 产生事件
如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测通过设置2个触发寄存器,同时在事件屏蔽寄存器的相应位写1允许事件请求,当事件线上发生了需要的边沿时,将产生一个事件请求脉冲
中断实验
本文来自博客园,作者:晚风也温柔,转载请注明原文链接:https://www.cnblogs.com/zxr-blog/p/17954642