GPIO输入有输入浮空、输入上拉、输入下拉、模拟输入4种方式,常用的GPIO输入应有三种,开关及独立按键输入和非按键类开关信号输入,其编程方法原理相同,配置略有不同。模拟输入在本章4.5节专门论述。
1.开关及独立按键输入
开关及独立按键输入在IO配置方法一样,开关输入一般在编程时不需去抖,独立按键输入时为了防止输入一次检测多次的发生,一般需要添加去抖程序。
【例4.3】通过键盘控制LED发光二极管,当键盘按下时对应的发光二极管发光,当键盘弹起时对应的发光二极管熄灭,硬件电路如图4.8所示。
图4.8 独立按键输入及LED示例硬件原理图
电路分析:
开关及独立按键输入电路与GPIO连接方式一样,一般开关或按键一侧管脚接地,另一侧连GPIO某个引脚,当开关关闭或按键按下时,输入低电平;当开关打开或按键松开时,输入高电平。因此,所连接的GPIO引脚工作方式应为输入上拉,以保证当开关打开或按键松开时输入高电平。
LED电路与例4.2相同,在4.1.3.2已讲解,在此不再赘述。
代码分析:
由于LED电路与例4.2相同,程序可在例4.2基础上修改、添加来实现。拷贝例4.2工程文件夹,在工程文件夹下再建立一个Key文件夹,放置与按键控制、初始化、头文件等(key.h、key.c),方便以后的移植。
修改led.c、led.h文件,将不用的自定义函数等内容删除。(www.daowen.com)
新建key.h、key.c文件,保存到Key文件夹,并添加找到key.h的编译路径和将key.c添加到工程中。
key.h源代码如下。
去抖主函数main.c部分源代码如下。
三个按键去抖方法一样,仅以K1说明去抖程序编写,方法是检测到电平变化,延时10毫秒稳定了再检测一次,来进行亮灭控制。
2.非按键类开关信号输入及其实现
非按键类开关信号输入编程和上述编程方法原理相同。由于输入电平由非按键类开关信号决定,因此工作方式设置需要使用输入浮空,以跟随输入信号的变化而改变,这里不再赘述。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。