文件 key.h
#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
#define KEY_0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_0)//读取按键0
#define KEY_1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_1)//读取按键1
#define KEY_2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//读取按键2
#define KEY_3 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键3
#define KEY_4 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//读取按键4
#define KEY_5 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5)//读取按键5
#define KEY_6 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6)//读取按键6
#define KEY_7 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7)//读取按键7
#define KEY_8 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_8)//读取按键8
#define KEY_9 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_9)//读取按键9
#define KEY_UP GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_10)//读取按键上
#define KEY_DOWN GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_11)//读取按键下
#define KEY_LEFT GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_12)//读取按键左
#define KEY_RIGHT GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_13)//读取按键右
#define KEY_CANCEL GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_14)//读取按键撤销
#define KEY_ENTER GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_15)//读取按键确认
void KEY_Init(void);//IO初始化
u8 KEY_Scan(u8); //按键扫描函数
#endif
文件key.c
#include "stm32f10x.h"
#include "key.h"
#include "sys.h"
#include "delay.h"
u8 key_num;
//按键初始化函数
void KEY_Init(void) //IO初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE
}
//按键处理函数
u8 KEY_Scan(u8 mode)
{
if(KEY_0==0) key_num = 0;
if(KEY_1==0) key_num = 1;
if(KEY_2==0) key_num = 2;
if(KEY_3==0) key_num = 3;
if(KEY_4==0) key_num = 4;
if(KEY_5==0) key_num = 5;
if(KEY_6==0) key_num = 6;
if(KEY_7==0) key_num = 7;
if(KEY_8==0) key_num = 8;
if(KEY_9==0) key_num = 9;
if(KEY_UP==0) key_num = 10;
if(KEY_DOWN==0) key_num = 11;
if(KEY_LEFT==0) key_num = 12;
if(KEY_RIGHT==0) key_num = 13;
if(KEY_CANCEL==0) key_num = 14;
if(KEY_ENTER==0) key_num = 15;
return key_num ;
}
按 KEY_3, KEY_7,KEY_DOWN,KEY_ENTER 没反应 其他的正常
也就是
#define KEY_3 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键3
#define KEY_7 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键7
#define KEY_DOWN GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_11)//读取按键下
#define KEY_ENTER GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_15)//读取按键确认
好像没读一样 其他按键正常