初级会员

- 积分
- 63
- 金钱
- 63
- 注册时间
- 2019-7-20
- 在线时间
- 22 小时
|

楼主 |
发表于 2019-7-20 13:53:34
|
显示全部楼层
按键的初始化代码
//按键输入输出宏定义,移植到其他平台,只需修改相应IO即可
#define KEY_IN1() ( GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_8) )//将当前位全部移置
#define KEY_IN2() ( GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_7) )
#define KEY_IN3() ( GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) )
#define KEY_IN4() ( GPIO_ReadInputDataBit(GPIOB ,GPIO_Pin_0 ) )
#define KEY_IN() KEY_IN1()<<0 | KEY_IN2()<<1 | KEY_IN3()<<2 | KEY_IN4()<<3 //输入组成半个byte
#define KEY_OUT1_HIGH() GPIO_SetBits( GPIOC, GPIO_Pin_5)
#define KEY_OUT1_LOW() GPIO_ResetBits( GPIOC, GPIO_Pin_5)
#define KEY_OUT2_HIGH() GPIO_SetBits( GPIOC, GPIO_Pin_4)
#define KEY_OUT2_LOW() GPIO_ResetBits( GPIOC, GPIO_Pin_4)
#define KEY_OUT3_HIGH() GPIO_SetBits( GPIOA, GPIO_Pin_7)
#define KEY_OUT3_LOW() GPIO_ResetBits( GPIOA, GPIO_Pin_7)
#define KEY_OUT4_HIGH() GPIO_SetBits( GPIOA, GPIO_Pin_5)
#define KEY_OUT4_LOW() GPIO_ResetBits( GPIOA, GPIO_Pin_5)
#define KEY_OUT5_HIGH() GPIO_SetBits( GPIOA, GPIO_Pin_4)
#define KEY_OUT5_LOW() GPIO_ResetBits( GPIOA, GPIO_Pin_4)
u32 KeyNew = 0,KeyOld = 0,KeyValue = 0,KeyEvent = 0;
u32 uKeyLongTouch = 0;
u32 KeyEventPress = 0,KeyEventUplift = 0;
u8 GetKeyValue(u32 uKey);
//初始化按键模块管脚功能,
//key1\2\3\4\5为输出,key6\7\8\9为输入
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 ;//key
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//低速使用2M频率
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 ;//key
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 ;//key
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//低速使用2M频率
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 ;//key
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//
GPIO_Init(GPIOE,&GPIO_InitStructure);
}
//获取按键值
u8 Key_Scan(void)
{
u32 m = 0;
u32 w = 0;//?????????,??KeyValue ,?????????
KEY_OUT1_LOW();
KEY_OUT2_HIGH();
KEY_OUT3_HIGH();
KEY_OUT4_HIGH();
KEY_OUT5_HIGH();
Delay_us(5);
m = KEY_IN();
w |= m;
KEY_OUT1_HIGH();
KEY_OUT2_LOW();
KEY_OUT3_HIGH();
KEY_OUT4_HIGH();
KEY_OUT5_HIGH();
Delay_us(5);
m = KEY_IN();
w |= m << 4;
KEY_OUT1_HIGH();
KEY_OUT2_HIGH();
KEY_OUT3_LOW();
KEY_OUT4_HIGH();
KEY_OUT5_HIGH();
Delay_us(5);
m = KEY_IN();
w |= m << 8;
KEY_OUT1_HIGH();
KEY_OUT2_HIGH();
KEY_OUT3_HIGH();
KEY_OUT4_LOW();
KEY_OUT5_HIGH();
Delay_us(5);;
m = KEY_IN();
w |= m << 12;
KEY_OUT1_HIGH();
KEY_OUT2_HIGH();
KEY_OUT3_HIGH();
KEY_OUT4_HIGH();
KEY_OUT5_LOW();
Delay_us(5);
m = KEY_IN();
w |= m << 16;
.................................
}
|
|