中断系统
视频选集(11/50)[5-1] EXTI外部中断
1. 中断简介
-
中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行
-
中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源
-
中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回
一般中断程序都存放在一个函数里,这个函数不需要被手动调用;中断来临时,硬件会自动调用这个函数

2. STM32中断
-
68个可屏蔽中断通道(中断源),包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设
注1.“68”指的是F1系列中最多的中断数量,对于某一具体型号,可能并不具备这么多中断
-
使用NVIC统一管理中断
-
中断向量表:使程序能够跳到任意位置执行中断处理函数




3. NVIC:嵌套中断向量控制器
3.1 架构
注.一个外设可能同时占用n个中断通道
:NVIC根据优先级,分配中断的先后顺序,通过唯一的输出口向CPU逐个传递需要被处理的中断

3.2 优先级类型
- 抢占优先级:优先级高者,能够打断当前正在处理的任务,实现中断嵌套
- 响应优先级:优先级高者,可以优先排队
- 抢占优先级与响应优先级均相同的中断,按中断向量的中断号排队
【案例】现有三个中断,如下表:
(1)当前,内核正在执行C的中断服务函数
- 若产生A中断,由于A的抢占优先级比C更高:C将被打断(中断嵌套),内核优先执行A,A执行完后再继续执行C
- 若产生B中断,由于B的抢占优先级和C相同:B无法打断C,内核继续执行C,C执行完后再执行B
(2)当前,内核正在执行主函数,B和C中断同时到达。由于二者的抢占优先级相同、B的响应优先级更高:内核优先执行B,B执行完后再执行C
3.3 优先级分组
-
NVIC的中断优先级由优先级寄存器的4位决定(所以某种优先级最多有16个等级),这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级
-
n有5个取值(0~4),对应5种分组方式如下:
分组方式 抢占优先级 响应优先级 分组0 0位,取值为0 4位,取值为0~15 分组1 1位,取值为0~1 3位,取值为0~7 分组2 2位,取值为0~3 2位,取值为0~3 分组3 3位,取值为0~7 1位,取值为0~1 分组4 4位,取值为0~15 0位,取值为0
本文来自博客园,作者:LI,Yi-han,转载请注明原文链接:https://www.cnblogs.com/LiYi-han/p/19037863


浙公网安备 33010602011771号