STM32F407 按键抖动 延时消抖

本文介绍了STM32F407单片机中按键抖动的问题及其影响,强调了消除抖动的必要性。通过代码实现延时消抖方法,详细解释了中断模块、EXTI模块以及NVIC模块在处理中断事件中的作用,提供了一套完整的按键消抖配置流程,确保单片机对按键操作的准确响应。

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

按键抖动:

在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理。
按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,而且还是一个很“漫长”的过程,因为单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级。
单片机如果在触点抖动期间检测按键的通断状态,则可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,从而引起误处理。因此,为了确保单片机对一次按键动作只作—次响应,就必须考虑如何消除按键抖动的影响。

按键读取识别异常:根本是按键触发后电平不稳定,会有波动,端口能识别。使用代码延时,让CPU忽略电平波动
方法:使用延时消抖

中断模块:
解决作业一按键的冲突(CPU循环扫描检测按键事件)

中断模块能够帮我们去检测一些内定的一些异常事件源(中断检测内定异常,则给CPU报告异常)

1.内定事件异常
2.事件监听
3.报告异常
4.优先级:仲裁
5.收到中断响应决策
6.继续任务

STM32内部有很多固定的(编号列表)让中断模块检测的中断源(产生中断异常的源头动作)

GPIO模块,…
NVIC模块,嵌套中断向量控制器,中断管理模块,NVIC管理的是全局中断,对中断优先级仲裁
EXTI模块,32中专门管理中断的模块

eg:usb插拔,以太网线插拔能对应扫描检测驱动
检测引脚电平变化:外部中断,22个外部中断,0-15是连接对应每组GPIO的0-15;

配置中断:
0.开启EXTI相关时钟RCC_ APB2PeriphClockCmd(RCC_ APB2Periph_ SYSCFG, ENABLE);
1.对应引脚使用GPIO_init();配置为输入模式
2.使用SYSCFG_ EXTILineConfig() ;选择一个引脚连接对应的一个外部中断线(EXTI0-15)
3.使用EXTI_init() ;选择模式(中断模式,事件模式(不会以中断机制处理))(上升沿,下降沿,都)
4.配置刚开启的外部中断优先级(中断管理,优先级管理)涉及:仲裁器 配置中断优先级函数NVIC_init();
优先级:
抢占优先级(0-15):第一优先
响应优先级(0-15):第二优先
两个或者两个抢占优先级一样才考虑响应优先级

按键延迟消抖代码实现:

#include <stm32f4xx.h>

void lightinit (void)//配置灯
{
   
	GPIO_InitTypeDef  GPIO_InitStructure;

	RCC_AHB1PeriphClockCmd</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值