STM32LL库系列教程(四)——外部中断

本文详细讲解了STM32F407ZET6开发平台上的外部中断配置与按键消抖处理,包括cubemx配置流程、GPIO_IDR与EXTI_PR寄存器操作、NVIC中断控制器管理、外部中断过程解析及软件消抖实现。
 **开发平台**  :  
 正点原子  探索者STM32F407ZET6
 cube mx:V 5.1.0
 keil uVision5 

项目地址:https://github.com/liliang1918/STM32LL

注意:
本教程默认读者已经对stm32和cubemx软件有一定了解;
为节省篇幅,详细配置cubemx的步骤仅在第一篇中说明,以后仅会简略介绍配置相关内容。
STM32LL库系列教程(四)——外部中断
实验目的:学会GPIO_IDR寄存器操作;
		 学会EXIT_PR寄存器操作;
		 学会外部中断的原理(重点);
		 了解按键消抖
实验现象:按下按键KEY_UP  LED1翻转一次(红灯);
		 按下KEY2 LED2翻转一次(黄灯)

1. 配置cubemx
1.1 配置LED

板载的LED是PF9,PF10引脚,配置为Output即可
在这里插入图片描述

1.2 配置按键

配置GPIO为EXIT
在这里插入图片描述

注意:如下原理图
WK_UP(PA0)按下按键会接到3.3V,我们配置中断类型为上升沿中断,内部下拉,当按下按键后,GPIO电平由低变高,触发上升沿中断
KEY0(PE2)按下会接到地,我们配置中断类型为下降沿中断,内部上拉,当按下按键后,GPIO电平由高变低,触发下降沿中断

在这里插入图片描述
在这里插入图片描述

1.3 配置中断优先级

这里就选用系统默认的优先级了,不做修改,具体含义在后面再具体解释
在这里插入图片描述

2.编写代码
2.1 main.c

因为只对中断进行响应和操作,在这里对main函数中的while(1)中是不需要编写代码的。
在这里插入图片描述

2.2 stm32f4xx_it.c

stm32f4xx_it.c是存放各类中断服务函数的文件。

首先,对EXIT0的(PA0),因为正点原子的开发板并没有涉及硬件防抖,因此我们需要软件进行按键防抖,否侧,会导致按一次按键,会进入多次中断的问题。读者也可以把按键防抖的程序去掉再看一看效果如何。

EXTI0_IRQHandler(void)函数中,LL库自身做了判断、清除标志位的操作,保证了程序不会一直卡在中断服务函数中

void EXTI0_IRQHandler(void)
{
   
   
  /* USER CODE BEGIN EXTI0_IRQn 0 */
	LL_mDelay(10);
	if(LL_GPIO_IsInputPinSet(GPIOA,LL_GPIO_PIN_0)==SET)//按键消抖
			LL_GPIO_TogglePin(GPIOF,LL_GPIO_PIN_9);//翻转LED1
  /* USER CODE END EXTI0_IRQn 0 */
  if (LL_EXTI
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值