STM32F407 按键抖动 延时消抖 |
您所在的位置:网站首页 › stm32按键中断消抖 › STM32F407 按键抖动 延时消抖 |
按键抖动:
在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理。 按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,而且还是一个很“漫长”的过程,因为单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级。 单片机如果在触点抖动期间检测按键的通断状态,则可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,从而引起误处理。因此,为了确保单片机对一次按键动作只作—次响应,就必须考虑如何消除按键抖动的影响。 按键读取识别异常:根本是按键触发后电平不稳定,会有波动,端口能识别。使用代码延时,让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 void lightinit (void)//配置灯 { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |