一、原理
四个独立按键
二、程序
key.c
//key.c
#include<key.h>
unsigned char key,key1,key2,key3,key4;定义按键值和四个按键的状态
void key_init()
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_8;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStruct);
}
unsigned char key__scan()
{
key1=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);//读取按键的状态
key2=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8);
key3=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1);
key4=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);
if(key1==0||key2==0||key3==0||key4==0)
{
if(key1==0)
{
key=1;
}
if(key2==0)
{
key=2;
}
if(key3==0)
{
key=3;
}
if(key4==0)
{
key=4;
}
}
return key;
}
,
,
key.h
#include "stm32f10x.h"
void key_init();
unsigned char key__scan();
,
,
main.c
#include "stm32f10x.h"
#include<stdio.h>
#include "lcd.h"
#include "key.h"
u32 TimingDelay = 0;
unsigned char key_value;//读取的按键返回值
char key_value_str[20];//显示的按键返回值
int main(void)
{
STM3210B_LCD_Init();//lcd初始化
LCD_Clear(White);//lcd清屏,白色
LCD_SetBackColor(White);//设置背景颜色
LCD_SetTextColor(Black);//设置字体颜色
key_init();//,按键初始化
while(1)
{
key_value=key__scan();//读取按键值
sprintf(key_value_str,"%d",key_value);//将按键值转化为字符
LCD_DisplayStringLine(1,key_value_str);//lcd显示按键值
}
}