GD32F427/F407领航者开发板学习教程—11 按键实验

大家好,我是凌智君。
之前的几节课一直介绍单片机GPIO输出功能的使用,这节课介绍一下输入功能的使用,单片机的GPIO不仅有输出功能,还有输入功能,这里通过使用按键,控制输入信号,每当按下一下按键都会输入一个不同的信号,单片机通过判断是否有这个信号输入来判断按键是否按下,废话不多说了,直接结合硬件看软件。
一、实验目的:
如何配置单片机实现GPIO的输入功能。
二、实验现象:
下载程序后复位开发板,按键 KEY1 按下,LED3 亮,松开按键 KEY1,LED3 灭。
三、实验原理
问题1:什么是按键?
原因:按键有很多类型,有机械按键,也有微动按键,领航者开发板用的是机械式按键,旗舰开发板用的微动按键,按键的原理很简单,按键按下,两侧导通,按键松开,两侧断开。


问题2:按键的电路原理是什么?
原因:如图所示,KEY1接口连接到单片机的GPIO引脚,通过10K电阻对其上拉,在这种情况下,单片机引脚一直是高电平,单片机读取的电平一直是高电平,当按键KEY1按下的时候,单片机引脚直接连接到了GND,所以此时单片机读取的电平是低电平,这样就会有有一个电平的变化。

问题3:程序是如何实现的?
原因:首先对引脚进行初始化,将引脚初始化为输入模式,这里对四个按键都进行了初始化,对应的函数在KEY.c文件。
在KEY.h文件里面声明一下函数和变量,方便外部调用,在LED的时候,宏定义是设置引脚高低电平,属于输出,在按键KEY,宏定义是读取引脚电平,属于输入,注意两个函数的区别。
在系统初始化函数和执行函数里面调用一下,实现实验效果。
这里按键需要一个消抖,基本是这样的,先判断按键是否按键,延时一段时间,再判断一次,如果两次都成功了,那么确实是按下了,如果只有一次,那么就是异常信号导致的,或者按键没按到位,这样可以有效的进行消抖。
按键KEY的程序这里就列出来了,LED相关的程序和之前教程介绍的一样,这里就不再赘述了,将程序下载到开发板内,然后复位开发板就可以实现实验效果了。
配套视频链接:
待更新
开发板链接:
https://item.taobao.com/item.htm?spm=a230r.1.14.23.711d35176CsxjD&id=694056890543&ns=1&abbucket=15#detail
公众号:

凌智君:
YunXiang_TechShare
(添加V,有相关技术交流群)