您的位置 首页 编程

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

STM32单片机的按键检测程序设计-STM32的按键检测相对比较简单,首先按部就班的初始化连接的到的i/o,然后写一个按键扫描函数,这个和51单片机的差不多。

 


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

以下是一个比较典型的比如:

使用按键操控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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/344061.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部