1、中断
一般无特别说明,异常就是中断,中断就是异常。
中断类型
-
系统异常,体现在内核水平
-
外部中断,体现在外设水平
2、NVIC简介
- NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能。
- 两个重要的库文件:core_cm3.h和misc.h
NVIC寄存器简介,core_cm3.h定义
数组成员很多,一般用不到用不完。内核10个,外设60个中断,一共70个。数组预留几百个,哈哈。
PS:最常用的是中断优先级寄存器。
3、中断编程
NVIC_InitTypeDef
函数 | 解释 |
---|---|
NVIC_IRQChannel | 中断源 |
NVIC_IRQChannelPreemptionPriority | 抢占优先级 |
NVIC_IRQChannelSubPriority | 子优先级 |
NVIC_IRQChannelCmd | 使能或者失能 |
中断优先级的定义
优先级设定:NVIC->IPRx
优先级分组:SCB->AIRCR:PRIGROUP[10:8]
中断编程顺序
- 1-使能中断请求
- 2-配置中断优先级分组
- 3-配置NVIC寄存器,初始化NVIC InitTypeDef;
- 4-编写中断服务函数
EXTI初始化结构体
EXTI_Init TypeDef
1-EXTI_Line:用于产生中断/事件线
2-EXTI_Mode:EXTI模式(中断/事件)
3-EXTI_Trigger:触发(上/下/上下)
4-EXTL_LineCmd:使能或者失能(IMR/EMR
编程要点
1-初始化要连接到EXTI的GPIO
2-初始化EXTI用于产生中断/事件(9.2.2选择输入线 需要配置外部中断配置寄存器1(AFIO_EXTICR1))
3-初始化NVIC,用于处理中断
4-编写中断服务函数
5-main函数