第七章 按键输入实验7.1 实验目的本实验旨在学习STM32的IO口作为数字输入口的使用方法,开发板板载4个功能按键,通过这几个按键学习机械按键的检测原理。
7.2 实验简介常用的按键键盘分为独立式按键和矩阵式按键。独立式按键电路为每个按键占用一个IO口,按键数目较少时(6个以内)采用这种方式较好;矩阵式按键为行列扫描式按键电路,当按键较多时,采用这种方式为宜,占用IO较少。本实验采用的就是独立式按键电路。下图为1个4*4矩阵键盘示例。
图7.2.1
按键在闭合和断开的瞬间,不会立即处于稳定的闭合或断开状态,会有一个抖动的过程,一般为5-10ms,如图7.2.2,在设计按键驱动程序时要注意这点,消除抖动的干扰,不然会出现按下一次按键,执行多次的现象,这就是抖动造成的。
图7.2.2
按键消抖方法:
① 检测到按键按下,延时20ms,再检测按键,如果依然按下,判断按键有效,执行相关操作。
② 检测到按键按下,延时1ms,循环检测20次,20次后,按键依然按下,判断按键有效,执行相关操作。
③ 检测到按键按下,利用定时器定时1ms,后再检测,循环检测20次,20次后,按键依然按下,判断按键有效,执行相关操作。
这3种方法,第一种实时性最低,第三种实时性最高,星光开发板按键驱动采用的是第二种,后面章节学完定时器后,用户可以尝试实现第3种方法。
7.3 电路设计闪电F407开发板载有4个功能按键,电路如图7.3.1所示:
图7.3.1
其中KEY1按键连接到PA0上,可用作普通按键,也可以用作待机唤醒输入,另外3个按键用作普通按键,KEY2-KEY4分别连接到STM32的PE2、PE3、PE4,这4个按键都可以作为普通IO输入,这4个按键都是低电平有效的。
7.4 软件设计打开光盘目录下的3、程序源码->1、基础实验->下的实验4 按键输入实验工程,打开左侧目录树BSP下的key.c文件,此为按键的驱动程序文件,工程目录如下图所示:
图7.4.1
打开key.c文件,代码如下:
按键驱动程序,用到一个按键信息结构体,定义在头文件key.h中,如下所示:
打开main.c文件,按键应用的处理代码如下:
7.5 下载验证用MINI USB线通过CN3的USB口连接电脑和开发板,拨动电源开关给开发板上电,D3电源指示灯点亮,连接好JLINK/ST-LINK下载调试器,打开“实验4 按键输入实验”工程代码,编译下载,按下KEY1键D4亮,按下KEY2键D4灭,按下KEY3键D5亮,按下KEY4键D5灭。
此内容由EEWORLD论坛网友hejecu原创,如需转载或用于商业用途需征得作者同意并注明出处
本文来自论坛,点击查看完整帖子内容。