一:stm32外部中断概述
1:stm32的外部中断线
STM32的每个IO都可以作为外部中断输入。
STM32的中断控制器支持19个外部中断/事件请求:
线0~15:对应外部IO口的输入中断。
线16:连接到PVD输出。
线17:连接到RTC闹钟事件。
线18:连接到USB唤醒事件。
每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。
2:外部中断线与io引脚对应关系
3:外部中断向量
在STM32中,中断向量表是一个重要的概念,它描述了当中断发生时,程序应该如何跳转到相应的中断处理函数。STM32的中断向量表是在启动文件(通常是startup_stm32.s)中定义的,并且是固化在MCU的内部ROM中的。
在STM32中,中断向量表通常如下所示:
-
复位向量(Reset Vector): 指向复位中断处理函数的起始地址。
-
未定义指令中断向量: 指向未定义指令中断处理函数的起始地址。
-
系统异常中断向量: 指向系统异常中断处理函数(如Prefetch Abort、Data Abort)的起始地址。
-
中断向量表: 每个中断源对应一个中断向量,指向该中断源的中断处理函数的起始地址。
-
NVIC中断向量表: 如果使用了Nested Vectored Interrupt Controller (NVIC),则会有额外的中断向量用于处理NVIC相关的中断。
二:流程分析
实验目的 :按下按键一次将led灯电平翻转完成亮灭控制
实现流程:·创建工程 -> 配置led引脚 ->配置按键引脚 ->配置中断->生成工程->完成代码编写
第一步:
三:工程创建
1: 打开stm32cubemx
2:选择芯片型号
3: 配置调试接口
4:选择led灯对应引脚
因为用的板子是飞线的方式来连接led所以可以随意选择io口,如果用的是成品板就要看板子上的led灯连接的是哪个io口进行相应的配置
5:选择按键对应引脚
6:创建工程
四:代码实践
1:打开工程
2:找到gpio相关库函数里面的中断回调函数复制原型到main函数
3:编写触发中断要产生的现象:翻转led灯引脚电平
4:主函数不需要进行操作 直接编译 点击两个其中一个都可以
5:烧入代码
选择isp 或者 仿真器下载
6:实验现象
烧入代码后程序默认led灯点亮
点击按键触发中断后led灯熄灭