STM32学习:外部中断

本文详细介绍了STM32外部中断的基本知识和设计流程,包括中断源、触发条件和中断服务函数。通过STM32CubeMX进行硬件配置,并在Proteus环境中搭建仿真电路。重点讲解了中断回调函数的编写和测试,通过主频配置及按键触发,实现LED状态的改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、STM32外部中断

1、基本知识

1、外部中断(EXTI)是STM32芯片实时处理外部事件的一种机制,由于中断请求来自于GPIO端口的引脚, 所以称之为外部中断。
2、STM32芯片有16个外部中断源EXTI0–EXTI15,分别对应7个中断服务函数,其中EXTI0–EXTI4是专用, 其他为共用。
3、EXTI0的连接引脚是:PA0–PG0,即每个端口的0号引脚。
4、EXTI1的连接引脚是:PA1–PG1,即每个端口的1号引脚,其他以此类推。
外部中断的触发条件包括上升沿触发和下降沿触发

2、中断设计流程

1.在STM32CubeMX中指定引脚
2.设置GPIO_EXTI
3.设置中断触发条件
4.使能NVIC通道
5.重写该I/O引脚对应的中断回调函数

二、硬件配置

1、proteus仿真电路搭建

请添加图片描述

2、CubeMX硬件配置

请添加图片描述
请添加图片描述
请添加图片描述

3、配置中断

1、寻找中断虚函数

打开stm32f1xx_it.c
请添加图片描述
找到外部中断服务函数HAL_GPIO_EXTI_IRQHandler()右键选择“Go To Definition Of…"跳转
请添加图片描述
HAL_GPIO_EXTI_CLEAR_IT()的作用就是清除中断标志
而我们需要关注的则是回调函数HAL_GPIO_EXTI_Callback()
它被定义为一个虚函数 __weak void HAL_GPIO_EXTI_Callback(… ),虚函数的意义在于用户可以重新编写一个同名函数,在编译时机器只编译用户重新编写的同名函数。

我们作为用户只需要调用重写这个虚函数即可

在这里插入图片描述

2、中断回调函数编写

找到main.c文件,粘贴我们的外部中断处理函数
注意要在主函数体外的"Private user code"下的
/* USER CODE BEGIN 0 /
/ USER CODE END 0 */
请添加图片描述

3、proteus仿真测试

1、主频配置

主频配置需要与前面Cubemx中配置的时钟频率一致
请添加图片描述

2、仿真运行

按下按键后电平翻转led状态改变
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值