嵌入式按键驱动,支持短按、长按、双击(中断方式)

本文介绍如何利用STM32的中断方式实现按键驱动,包括短按、长按和双击功能。通过中断处理函数快速响应按键事件,节省CPU资源。文中提及开发环境为KEIL MDK5,开发板为STM32f103ZERT,并提供了中断配置、线路映射和防抖处理等关键步骤。
摘要由CSDN通过智能技术生成

 目录:

1:概述
2:stm32外部中断配置

3:code


概述:

1:本篇利用按键中断输入方式,当按键触发,中断处理函数置按键扫描标志位为1,开始按键键值扫描,完成后,主程序根据键值(短按、长按、双击),完成相应的动作;

2:当K1按键短按:LED1闪烁;当K1按键长按,LED2闪烁;当K1按键双击,LED3闪烁;

3:优点:相比于轮询扫描按键键值的方式,按键响应速度更快,节约CPU资源;

4:参考资料:stm32中文参考手册(EXIT的有关说明)、Cortex-M3权威指南(NVIC的有关说明)

5:开发板:STM32f103ZERT  奋斗开发板V5 开发环境:KEIL MDK5

6:工程下载:


stm32外部中断配置

1: 设置中断分组

设置中断优先级之前,一定要设置中断分组,本代码中有sysclk中断和按键外部中断,设置中断中断分组为2,2位主优先级和2位次优先级,需设置内部sysclk中断的优先级高于按键中断的优先级,内部中断使用NVIC_SetPriority()函数设置,具体函数参考core_cm3.h文件,外部中断优先级在NVIC_Init()函数中设置;

2:完成外部中断线路映射

使用GPIO_EXTILineConfig()函数完成中断线路的映射;

3:NVIC寄存器初始化

完成对应中断的使能和优先级设定,使用 NVIC_Init()库函数完成初始化。注意:一定要给NVIC_InitStructure结构体的成员赋值,因为NVIC_InitTypeDef结构体是在函数内部定义的,并且没有赋初值,

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值