什么是中断
中断通常把CPU内部产生的紧急事件叫做异常,比如非法指令(除零)、地址访问越界等;
把来自CPU外部的片上外设产生的紧急事件叫做中断,比如GPIO引脚电平变化、定时器溢出等。
异常和中断的效果基本一致,都是暂停当前任务,优先执行紧急事件。因此一般将中断和异常统称为中断。
嵌套向量中断控制器【NVIC】
STM32中断优先级基本概念
1,抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断
2,响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
3,抢占和响应都相同的情况下,自然优先级越高的,先执行
4,自然优先级:中断向量表的优先级
5,数值越小,表示优先级越高
中断向量表
一个工程中一般只设置一次中断优先级分组
NVIC的使用
EXTI基本概念
External(Extended)interrupt/eventController,外部(扩展)中断事件控制器
包含20个产生事件/中断请求的边沿检测器,即总共:20条EXTI线(F1)
中断和事件的理解:
中断:要进入NVIC,有相应的中断服务函数,需要CPU处理
事件:不进入NVIC,仅用于内部硬件自动控制的,如:TIM、DMA、ADC
定时器进行一个波形的输出、控制DMA完成一次数据的搬运、让ADC完成一次数模转换。
中断服务函数
中断服务程序,在结构上与函数非常相似。 但不同的是,函数一般有参数有返回值,
并在应用程序中被人为显式地调用执行,而中断服务程序一般没有参数也没有返回值,
并只有中断发生时才会被自动隐式地调用执行。 每个中断都有自己的中断服务程序,用来记录中断发生后要执行的真正意义上的处理操作。
【引用】https://blog.csdn.net/weixin_41847555/article/details/125701719
在 HAL库中 步骤2~5使用 HAL_GPIO_Init() 一步到位