博客
关于我
按键输入实验
阅读量:773 次
发布时间:2019-03-24

本文共 2046 字,大约阅读时间需要 6 分钟。

按键实验实践指南

1. 按键实验硬件连接

1.1 连接原理

在进行按键实验之前,我们需要正确配置硬件电路。KEY_UP按键连接到IO口时,系统会检测到高电平信号。而KEY0/KEY1/KEY2按键连接时,系统会检测到低电平信号。通过合理设置输入电平检测,可以实现对不同按键状态的准确捕捉。

1.2 提示

在实际操作中,KEY_UP按键按下时会输出高电平信号,而KEY0/KEY1/KEY2按下时会输出低电平信号。不同按键的连接方式需要根据实际电路进行相应设置,确保系统能够正确识别按键状态。


2. GPIO输入操作说明

2.1 输入库函数

在进行GPIO输入操作时,我们需要使用相应的库函数来读取IO口电平状态。

2.1.1 读取IO口输入电平

可以通过调用GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)函数来读取指定GPIO口的输入电平状态。该函数将返回对应引脚的输入电平信息。

2.1.2 读取输入电平操作寄存器

GPIO端口输入寄存器(GPIOx_IDR)是用于读取输入电平状态的主要寄存器。通过访问该寄存器,可以获得指定引脚的电平信息。

2.1.3 使用位带操作读取

可以通过位带操作的方式来读取GPIO口的输入电平状态。例如,针对GPIOE口,使用位带操作来读取GPIOE.4或其他指定引脚的电平信息。位带操作通过将位带地址映射到位带别名地址,从而实现对单个引脚状态的读取。


3. 按键实验

3.1 按键扫描思路

在进行按键扫描时,我们需要设计一个循环结构来连续检测多个键盘输入。通过使用static关键字,可以实现对单个按键的按住状态监控。此外,我们还可以设计一种双层扫描模式,确保能够同时检测多个按键的状态变化。

3.1.1 实现连续按

通过将static关键字应用于循环内部,可以实现对按键连续按下的检测。这种方式可以确保程序能够持续监控键盘输入,直到按键状态发生改变。

3.1.2 不支持连续按

某些硬件配置可能不支持对按键连续按下的检测。在这种情况下,开发者需要根据实际情况进行相应的设计调整,确保程序能够正确工作。

3.1.3 两种模式合一

为了提高开发效率,可以将两种模式合并为一种实现方式。通过灵活配置扫描周期和按键监控方式,可以实现对多种按键状态的准确检测。


3.2 实现代码

#include "sys.h"#include "delay.h"#include "usart.h"#include "led.h"#include "beep.h"#include "key.h"int main(void){    u8 key;  // 定义按键变量    delay_init(168);  // 初始化延时器    LED_Init();       // 初始化LED    BEEP_Init();     // 初始化蜂鸣器    KEY_Init();       // 初始化按键模块    LED0 = 0;       // 初始化LED0为低电平    while(1)    {        key = KEY_Scan(0);  // 扫描所有键盘(参数0表示只扫描一次)        if(key)        {            switch(key)            {                case WKUP_PRES:  // WKUP键按下                    BEEP = !BEEP;                    break;                case KEY0_PRES:  // KEY0键按下                    LED0 = !LED0;                    break;                case KEY1_PRES:  // KEY1键按下                    LED1 = !LED1;                    break;                case KEY2_PRES:  // KEY2键按下                    LED0 = !LED0; // LED0切换                    LED1 = !LED1; // LED1切换                    break;            }        }        else        {            delay_ms(10);  // 当无按键按下时,等待10ms        }    }}

以上代码实现了对按键状态的扫描检测和相应的LED及蜂鸣器的控制。通过合理设置键盘扫描周期和按键响应方式,可以实现对多种按键状态的准确捕捉。

转载地址:http://beakk.baihongyu.com/

你可能感兴趣的文章
mysql中的rbs,SharePoint RBS:即使启用了RBS,内容数据库也在不断增长
查看>>
mysql中的undo log、redo log 、binlog大致概要
查看>>
Mysql中的using
查看>>
MySQL中的关键字深入比较:UNION vs UNION ALL
查看>>
mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
查看>>
mysql中的字段如何选择合适的数据类型呢?
查看>>
MySQL中的字符集陷阱:为何避免使用UTF-8
查看>>
mysql中的数据导入与导出
查看>>
MySQL中的时间函数
查看>>
mysql中的约束
查看>>
MySQL中的表是什么?
查看>>
mysql中穿件函数时候delimiter的用法
查看>>
Mysql中索引的分类、增删改查与存储引擎对应关系
查看>>
Mysql中索引的最左前缀原则图文剖析(全)
查看>>
MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
查看>>
Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
查看>>
Mysql中视图的使用以及常见运算符的使用示例和优先级
查看>>
Mysql中触发器的使用示例
查看>>
Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
查看>>
mysql中还有窗口函数?这是什么东西?
查看>>