中断相关,NVIC,EXTI,中断使用
1使能GPIO时钟,.2gpio/afio/exti(HAL_GPIO_Init),.3设置中断分组,.4设置中断优先级,.5使能中断,.6设置中断服务函数,清中断标志,exti0~4各有一个中断服务函数,exti9-5用一个,exti15-10用一个,stm32共七个外部中断服务函数。.1使能GPIO时钟,.2设置gpio输入模式,.3使能afio时钟,.4设置exti和io对应关系,.5设置e
1,什么是中断
打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行
中断的作用和意义
1实时控制2故障处理3数据传输 意义:高效处理紧急程序不会占用CPU资源

2,NVIC
2.1,NVIC:nested vectored interrupt controller嵌套向量中断控制器,属于内核
NVIC支持256个中断(16内核+240外部),支持256个优先级,允许裁剪
f103:内中10,外中:60,中断优先级:16
中断向量表:定义一块固定的地址,以4字节对齐,存放各个中断服务函数程序的首地址。定义在启动文件(.s)中,发生中断时CPU会自动执行对应的中断服务函数
2.2NVIC相关寄存器介绍:ISER中断使能寄存器;ICER中断除能寄存器;AIRCR应用程序中断及复位控制寄存器;IPR中断优先级寄存器
2.3NVIC工作原理:

2.4 STM32中断优先级基本概念
抢占优先级(pre):高抢占优先级可以在打断正在执行的低抢占优先级中断
响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但不能相互打断
抢占优先级和响应优先级都相同,自然优先级越高的先执行
自然优先级:中断向量表的优先级,数值越小,优先级越高
2.5 STM32中断优先级分组
AIRCR(111),none:[7:4] 0位抢占优先级,4位响应优先级
AIRCR (110),[7]:[6:4] 1位抢占优先级,3位响应优先级
AIRCR(101),[7:6]:[5:4]……以此类推AIRCR(100);AIRCR (011)
一个工程中,一般只设置一次中断优先级分组
2.6 STM32 NVIC的使用
NVIC的配置步骤1,设置中断分组(AIRCR);2,设置中断优先级(IPR);3,使能中断(ISER)
3,EXTI
3.1,EXTI的基本概念:enternal interrupt/event controller外部(扩展)中断事件控制器
包含20个产生事件/中断请求的边沿检测器(20条EXIT线)
中断:要进入NVIC,有相应的中断服务函数,需要CPU
事件:不进入NVIC,仅用于内部硬件自动控制的,如TIM、DMA
3.2EXTI主要特性
每条EXTI线都可以单独配置:选择类型(中断或事件),触发方式(上升/下降/双边沿触发),支持软件触发,开启/屏蔽,有挂起状态位

3.3,EXTI工作原理
①边沿检测,②软件触发,③中断屏蔽/清除,④事件屏蔽
4,EXTI和IO映射关系
4.1 AFIO简介Alternate Function IO,复用功能IO,主要用于重映射和外部中断映射配置
调试IO口配置:AFIO_MAPR[26:24],配置JTAG/SWD的开关状态
重映射配置:AFIO_MAPR,部分外设IO重映射配置
外部中断配置:AFIO_EXTICR1~4,配置EXTI中断线0~15对应到那个具体的IO口
配置AFIO寄存器之前要使能AFIO时钟__HAL_RCC_AFIO_CLK_ENABLE();
4.2 EXTI与IO对应关系
Px0映射到EXTI0,Px1映射到Px1,以此类推,查手册看寄存器对应位设置什么可以选择哪个引脚
5,如何使用中断

EXTI的配置步骤(GPIO外部中断)
.1使能GPIO时钟,.2设置gpio输入模式,.3使能afio时钟,.4设置exti和io对应关系,.5设置exti屏蔽,上/下沿,.6设置nvic,设置中断服务函数。步骤2~5可用HAL_GPIO_Init一步到位
EXTI的HAL库设置步骤(GPIO外部中断
.1使能GPIO时钟,.2gpio/afio/exti(HAL_GPIO_Init),.3设置中断分组,.4设置中断优先级,.5使能中断,.6设置中断服务函数,清中断标志,exti0~4各有一个中断服务函数,exti9-5用一个,exti15-10用一个,stm32共七个外部中断服务函数
6,通用外设驱动模型
6.1初始化(时钟设置,参数设置,io设置,中断设置)6.2读函数,6.3写函数,6.4中断服务函数
7,HAL库中断回调处理机制介绍

更多推荐


所有评论(0)