目录
3.配置NVIC寄存器,初始化NVIC_InitTypeDef;
一、STM32中断应用概览
(1)简介
STM32 中断非常强大,每个外设都可以产生中断,所以中断的讲解放在哪一个外设里面去讲都不合适,这里单独抽出一章来做一个总结性的介绍。
中断:把正常正在运行的程序打断,运行中断服务函数,运行完之后再回到主程序,与51大体相仿。
外部中断,体现在外设水平,系统异常,体现在内核水平。下面,中断就是异常,异常就是中断。
以上向量表中,灰色标住的是体现在内核水平的(异常),其余的是外设水平的(外部中断)。
中断由NVIC这个外设来控制。
NVIC:嵌套向量中断控制器,属于内核外设,管理着包括部分内核和片上所有外设的中断相关的功能。 两个重要的库文件:core_cm3.h(定义所有内核上面的寄存器,NVIC寄存器就在这里面)和misc.h(相关的函数)。
对于中断而言,最重要的是优先级,由NVIC->IPRx(中断优先级寄存器)设定。打开内核寄存器的手册,
这个表里面的0-80对应着向量表里面外部中断的位置0-59,每一位都有8位位宽,真正起作用的只有4位。
函数:
NVIC_SetPriority (IRQn_Type IRQn, uint32_t priority) // core_cm3.h 1586行
两个形参:中断号和优先级。中断号对应手册向量表的位置编号。
配置的时候先判断中断号是否大于0,小于0是内核的中断;大于0是外部中断。如果是外部中断,让优先级左移4位。如果是小于0,就配置另一个寄存器,SCB->SHP。
(2)中断编程的顺序:
1-使能中断请求
2-配置中断优先级分组
3-配置NVIC寄存器,初