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

本文共 2087 字,大约阅读时间需要 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/

你可能感兴趣的文章
NVDIMM原理与应用之四:基于pstore 和 ramoops保存Kernel panic日志
查看>>
NVelocity标签使用详解
查看>>
NVelocity标签设置缓存的解决方案
查看>>
Nvidia Cudatoolkit 与 Conda Cudatoolkit
查看>>
NVIDIA GPU 的状态信息输出,由 `nvidia-smi` 命令生成
查看>>
nvidia 各种卡
查看>>
Nvidia 系列显卡大解析 B100、A40、A100、A800、H100、H800、V100 该如何选择,各自的配置详细与架构详细介绍,分别运用于哪些项目场景
查看>>
NVIDIA-cuda-cudnn下载地址
查看>>
nvidia-htop 使用教程
查看>>
nvidia-smi 参数详解
查看>>
Nvidia驱动失效,采用官方的方法重装更快
查看>>
nvmw安装node-v4.0.0之后版本的临时解决办法
查看>>
nvm切换node版本
查看>>
nvm安装 出现 Error retrieving “http://xxxx/SHASUMS256.txt“: HTTP Status 404 解决方法
查看>>
nvm安装以后,node -v npm 等命令提示不是内部或外部命令 node多版本控制管理 node多版本随意切换
查看>>
NXLog采集windows日志配置conf文件
查看>>
ny540 奇怪的排序 简单题
查看>>
NYOJ -216 A problem is easy
查看>>
NYOJ 1066 CO-PRIME(数论)
查看>>
NYOJ 737:石子合并(一)(区间dp)
查看>>