第四篇 STM32CubeMX创建STM32工程之GPIO外部中断实验

第四篇 STM32CubeMX创建STM32工程之GPIO外部中断实验

一、配置引脚成模式

1.配置引脚成外部中断输入模式
打开LED闪烁工程在此基础之上继续配置一个外部中断输入,小编选择PB12作为外部输入引脚,在右侧芯片引脚左键选择GPIO_EXITx,x表示引脚编号,不同得引脚编号不同,这里选择的是GPIO_EXIT12。
在这里插入图片描述

2.引脚参数配置
选择PB12,配置引脚出发方式,主要是参数1和参数2,参数一是GPIO模式选择,有六种模式,前三种是上升沿检测、下降沿检测、上下降沿检测的外部中断模式。后三种是外部事件模式,从内部结构是一个是硬件级的一个是软件级的,其他相关区别及具体定义,读者可以自行百度一下。
这里我们选择下降沿外部中断,因此上下拉模式选择上拉,参数一与参数2相互对应。
在这里插入图片描述
3.开启中断
选择NVIC,将EXIT line [15:10]INTERRUPTS使能勾选,开启外部中断使能,外部中断的15-10在同一个中断函数内,值得大家注意,后边小编也会提到。
在这里插入图片描述

4.配置LED引脚
参考第一篇LED闪烁等实验

二、编写外部中断处理程序

1.外部中断实现LED的亮灭
代开User.c文件新建一个中断回调函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

这里值得注意的是该函数在hal库中已经有定义,读者可以右键打开定义所在位置。

__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

该函数定义使用的是“__weak”关键字,该定义表示该函数为若定义,当user.c中再次出现定义的时候不会提示重定义错误。
定义完成以后,当中断产生以后会执行该函数,中断函数中执行LED反转操作。这里小编叫了if判断。原因是中断10-15是配置到同一个回调函数的,因此当有多个案件的时候需要注意判断是哪个引脚发生中断。

#include "user.h"
#include "gpio.h"                                              //引入gpio头文件

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == KEY_Pin)
	{
		HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
	}
}
void user_main(void)
{
	while(1)
	{
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值