中断:打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行。
中断的作用:
1,实时控制
2,故障处理
3,数据传输
中断的意义:
高效处理紧急程序,不会一直占用CPU资源
STM32GPIO外部中断简图:
GPIO (上拉输入,下拉输入,浮空输入) ——>AFIO(F1)——>EXTI(屏蔽,上升/下降沿)——>NVIC(使能,优先级控制)——>CPU
NVIC:Interrupt Request 中断请求(IRQ)
1,嵌套向量中断控制器,属于内核。
2,NVIC 内核中断(10)外部中断(60)中断优先级(16)
3),中断向量表:定义一块固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址。
STM32-中断优先级:
1,抢占优先级:高抢占优先级可以打断正在执行的底抢占优先级中断
2,响应优先级:当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
3,抢占和响应都相同的情况下,自然优先级越高的,先执行
4,数值越小优先级越高
注:一个工程中,一般只设置一次中断优先分组。
NVIC的使用:
1,设置中断分组:HAL_NVIC_SetPriorityGrouping
2, 设置中断优先级:HAL_NVIC_SetPriority
3,使能中断:HAL_NVIC_EnableIRQ
EXTI基本概念:
外部(扩展)中断事件控制器。
每条EXTI先都可以单独配置:选择类型,触发方式,支持软件触发。
EXTI工作原理:
1,边沿检测
2,软件触发
3,中断屏蔽/清除
4,事件屏蔽
中断的使用:
GPIO (上拉输入,下拉输入,浮空输入) ——>AFIO(F1)——>EXTI(屏蔽,上升/下降沿)——>NVIC(使能,优先级控制)——>CPU
1,使能GPIO时钟 __HAL_RCC_GPIOx_CLK_ENABLE
2,HAL_GPIO_Init
3,设置中断分组 HAL_NVIC_SetPriorityGrouping
4,设置中断优先级 HAL_NVIC_SetPriority
5,使能中断:HAL_NVIC_EnableIRQ、
6,设计中断服务函数 EXTIx_IRQHandler