STM32单片机的按键检测程序设计

stm32的按键检测相对比较简单,首先按部就班的初始化连接的到的i/o,然后写一个按键扫描函数,这个和51单片机的差不多。
以下是一个比较典型的例子:
利用按键控制led:
key.h文件
#ifndef__key_h
#define__key_h
#include“sys.h“
#definekey0 gpio_readinputdatabit(gpioe,gpio_pin_4)//读取按键0
#definekey1 gpio_readinputdatabit(gpioe,gpio_pin_3)//读取按键1
#definekey2 gpio_readinputdatabit(gpioe,gpio_pin_2)//读取按键2
#definekey3 gpio_readinputdatabit(gpioa,gpio_pin_0)//读取按键3(wk_up)
#definekey_up 4
#definekey_left 3
#definekey_down 2
#definekey_right 1
void key_init(void);//io初始化
u8 key_scan(u8); //按键扫描函数
#endif
key.c文件
void key_init(void)//io初始化
{
gpio_inittypedef gpio_initstructure;
//初始化key0--》gpioa.13,key1--》gpioa.15 上拉输入
rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_gpioe,enable);//使能时钟
gpio_initstructure.gpio_pin = gpio_pin_2|gpio_pin_3|gpio_pin_4;//pe2~4
gpio_initstructure.gpio_mode = gpio_mode_ipu; //设置成上拉输入
gpio_init(gpioe, &gpio_initstructure);//初始化gpioe2,3,4
gpio_initstructure.gpio_pin = gpio_pin_0;初始化 wk_up--》gpioa.0 下拉输入
gpio_initstructure.gpio_mode = gpio_mode_ipd;//pa0设置成输入,默认下拉
gpio_init(gpioa, &gpio_initstructure);//初始化gpioa.0
}
u8 key_scan(u8mode)
{ static u8 key_up=1;//按键按松开标志
if(mode)key_up=1;//支持连按
if(key_up&&(key0==0||key1==0||key2==0||key3==1))
{
delay_ms(10);//去抖动
key_up=0;
if(key0==0)return key_right;
else if(key1==0)return key_down;
else if(key2==0)return key_left;
else if(key3==1)return key_up;
}elseif(key0==1&&key1==1&&key2==1&&key3==0)key_up=1;
return0;// 无按键按下
}
main.c文件
int main(void)
{
u8 t;
delay_init(); //延时函数初始化
led_init(); //led端口初始化
key_init(); //初始化与按键连接的硬件接口
beep_init(); //初始化蜂鸣器端口
led0=0; //先点亮红灯
while(1) {
t=key_scan(0); //得到键值
if(t){
switch(t) {
casekey_up: //控制蜂鸣器
beep=!beep;
break;
casekey_left: //控制led0翻转
led0=!led0;
break;
casekey_down: //控制led1翻转
led1=!led1;
break;
casekey_right: //同时控制led0,led1翻转
led0=!led0;
led1=!led1;
break;
}
}else delay_ms(10);
}
}
来源;21ic

骨传导耳机有什么不一样?骨传导耳机有什么好处?
iOS11最新消息汇总:苹果今日正式推送iOS11 beta10开发者预览,待机时间明显提升,继续优化老设备
工业机器人基础知识大全
5G承载光模块白皮书指出25Gb/s波长可调谐光模块还处于在研阶段
从2020年开始AI硬件市场将如何变得更强大
STM32单片机的按键检测程序设计
三星Note系列全网正式首销 售价6599元起
【服务器数据恢复】VMware ESX SERVER数据恢复案例
基于QT设计的人脸考勤打卡签到系统
Windows CE操作系统在工业控制领域的应用
清洁能源产业先行样本,古瑞瓦特“光储充一体化”项目投运
NVIDIA CEO 黄仁勋:创业不止于眼前
CMET2011:云端技术加速医疗智能信息化
如何消除寄生电容的电路设计方案
什么是光伏电站?
如何比较UPS的好坏?
投资1.5亿欧元,瓦克化学在国内扩建特种有机硅产能
浪涌检测势在必行!
LPDDR5 UFS3.1 系列内存
2023中国5G+工业互联网大会|TCL引领融合创新,推动新型工业化进程