外部中断的概述 4.1.1 NVIC 特性 STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道。 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。 4.1.2 外部中断/事件控制器 (EXTI) 外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。 4.1.3 向量表 使能相应中断需要查询相应向量号。82个(从0到81,刚刚82个)。 4.1.4 EXTI 主要特性 《1》每个中断 /事件线上都具有独立的触发和屏蔽 《2》每个中断线都具有专用的状态位 《3》支持多达23个软件事件/中断请求 4.1.5 EXTI 框图 外部中断需要打通的线路。 4.1.6 外部中断/事件线映射 4.2 按键外部中断配置流程 4.2.1 搭建框架 写出如图所示的注释。 找到按键引脚、中断号 找到对应中断线,连接 配置模块寄存器 在同一中断线上,可以同时设置上升沿和下降沿触发。即任一边沿都可触发中断。 4.2.2 代码分析 1.开启模块时钟与GPIO时钟 2.连接中断线 先清零,在写入需要的数据,保证功能开启正确。 3.配置边沿检测 按键1,空闲状态位为低电平,适合上升沿触发, 按键2、3、4,空闲状态为 高电平,适合下降沿触发 4.开启模块中断 开启中断屏蔽寄存器,相当于图中写1的位置输出1,与门,全1出1。 或门有1出1,所以我们需要设置软件中断事件寄存器为不开启状态,即为默认关闭状态,进而得到图中的0,边沿检测电路,检测按键按键,输出1,即可触发外部模块的中断,不过还需要开机NVIC中断先,才能真正的中断。 5.开启NVIC中断 6.中断函数的配置 - 按键,按键会有一个不稳定期、抖动,需要延时越过不稳期。
rc_w1解读:此位可以读取、此位写1会被清零,清零的意思是变成0。 4.4.3 补充 《1》为什么没给外部中断配置优先级? 中断的优先级,可配,可不配,因为我在实验,可以不配,可根据需求,如多并发的任务设置中断优先级。 《2》外部中断与串口中断代码对比。 串口中断代码: 外部中断代码: 上两图分析,串口,我们配置了优先级,外部中断没有配置优先级,如果外部中断没有配置优先级,NVIC如何知道谁先谁后呢?同时来先响应谁呢?其实每个外部中断都有自己的自然优先级,在不配置抢占优先级与子优先级时,默认使用自然优先级。 以外部中断线为例,前面蓝色框里面的数字,代表向量号6、7、8、9、10。红色框的数字代表自然优先级,数字越小,优先级越高。 《3》按键1外部中断配置框图 NVIC是MCU的秘书,管理值所有的外部中断;EXTI是NVIC的助理,处理外交事务,所有片外外设的中断事件归它管。如按键就属于片外外设。 NVIC就是属于---片内外设(在内核里面,属于片内外设) USART\GPIO就属于---片上外设(在内核外面,但在芯片里面,属于片上外设,) LED\按键就属于---片外外设(在芯片外面,属于片外外设) EXTI只是NVIC的处理,管理着片外外设的中断事件,而NVIC在内核里面,GPIO和内核直接交互,因此我们配置通用模式。而且复用去的是片上外设,从片上外设出来,如下图。 而我们按键配置EXTI去的是NVIC,NVIC属于片内外设。所以配置通用。 通用模式:内核直接和GPIO“相连”,复用模式:GPIO先通过片上外设,最后才通过内核。 4.3 程序说明 《1》点亮一盏灯四种操作 可以好好研读,就不解析了。 《2》初始化函数都有寄存器版和库函数版 《3》寄存器与库函数的分析 寄存器:应用编程接口,对于MCU来说,一切配置最终都归于寄存器配置。 库函数:对寄存器操作进行了封装,目的是提高开发效率。 寄存器是易于学习和理解的,不懂的都可以翻手册理解。库函数必须在理解寄存器的基础上,才能灵活运用,不然你不能真正理解每个初始化函数参数的含义。 寄存器不好复用,比如配置了串口1之后再去配置串口2,需要查阅手册,修改比较多的参数,而库函数只需要修改小部分参数,即可配置好、效率高,无需翻阅手册。 《4》一般的按键实现与状态机的按键实现 一般的按键实现;单击、连按
状态机的按键实现:单击、双击、长按 状态机很好用,是一种思想,值得好时间研究。 《4》重定向打印函数 把printf打印方向重定向到这里,下图。
printf默认往某个内存打印,你可以具体告诉它,往哪里打印,如上面重定向。 就这?嗯,没了。。。
以上的Word格式文档51黑下载地址:
外部中断.docx
(3.96 MB, 下载次数: 8)
|