找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1591|回复: 0
收起左侧

STM32外部中断及程序补充说明

[复制链接]
ID:763998 发表于 2020-6-22 17:15 | 显示全部楼层 |阅读模式

外部中断的概述

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.中断函数的配置

  • 找到中断外部中断线0的中断服务函数

  • 按键,按键会有一个不稳定期、抖动,需要延时越过不稳期。

  • 出中断时,需要请中断标志,不然它会一直进。

rc_w1解读:此位可以读取、此位写1会被清零,清零的意思是变成0。

4.4.3 补充

《1》为什么没给外部中断配置优先级?

中断的优先级,可配,可不配,因为我在实验,可以不配,可根据需求,如多并发的任务设置中断优先级。

《2》外部中断与串口中断代码对比。

串口中断代码:

外部中断代码:

上两图分析,串口,我们配置了优先级,外部中断没有配置优先级,如果外部中断没有配置优先级,NVIC如何知道谁先谁后呢?同时来先响应谁呢?其实每个外部中断都有自己的自然优先级,在不配置抢占优先级与子优先级时,默认使用自然优先级。

以外部中断线为例,前面蓝色框里面的数字,代表向量号6、7、8、9、10。红色框的数字代表自然优先级,数字越小,优先级越高。

《3》按键1外部中断配置框图

  • MCU、NVICEXTI的关系?

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)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表