|
#include "touch.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#define KEY_left GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)
#define KEY_down GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)
#define KEY_right GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_3)
#define KEY_up GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入,默认下拉
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入,默认下拉
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;//按键按松开标志
if(mode)key_up=1; //支持连按
if(key_up&&(KEY_left==1||KEY_down==1||KEY_right==1||KEY_up==1))
{
delay_ms(10);
key_up=0;
if(KEY_left==1)return 1; // G
else if(KEY_down==1)return 2; // R
else if(KEY_right==1)
{
printf("下键状态置反\r\n");
return 3; // LED3 这里没有返回值,估计也就是KEY_right没有扫描到高电平
}
else if(KEY_up==1)return 4; // B
}
else if(KEY_left==0&&KEY_down==0&&KEY_right==0&&KEY_up==0)key_up=1;
return 0;
}
|
|