【文件属性】:
文件名称:中断编程-基于hmm的语音识别系统的matlab仿真
文件大小:29.31MB
文件格式:PDF
更新时间:2021-07-11 10:58:38
STM32 F103
17.4 中断编程
在配置每个中断的时候一般有 3 个编程要点:
1、使能外设某个中断,这个具体由每个外设的相关中断使能位控制。比如串口有发送
完成中断,接收完成中断,这两个中断都由串口控制寄存器的相关中断使能位控制。
2、初始化 NVIC_InitTypeDef 结构体,配置中断优先级分组,设置抢占优先级和子优
先级,使能中断请求。NVIC_InitTypeDef 结构体在固件库头文件 misc.h 中定义。
代码 17-3 NVIC 初始化结构体
1 typedef struct {
2 uint8_t NVIC_IRQChannel; // 中断源
3 uint8_t NVIC_IRQChannelPreemptionPriority; // 抢占优先级
4 uint8_t NVIC_IRQChannelSubPriority; // 子优先级
5 FunctionalState NVIC_IRQChannelCmd; // 中断使能或者失能
6 } NVIC_InitTypeDef;
有关 NVIC 初始化结构体的成员我们一一解释下:
1)NVIC_IROChannel:用来设置中断源,不同的中断中断源不一样,且不可写错,即
使写错了程序也不会报错,只会导致不响应中断。具体的成员配置可参考 stm32f10x.h 头文
件里面的 IRQn_Type 结构体定义,这个结构体包含了所有的中断源。
代码 17-4 IRQn_Type 中断源结构体
1 typedef enum IRQn {
2 //Cortex-M3 处理器异常编号
3 NonMaskableInt_IRQn = -14,
4 MemoryManagement_IRQn = -12,
5 BusFault_IRQn = -11,
6 UsageFault_IRQn = -10,