中级会员
 
- 积分
- 490
- 金钱
- 490
- 注册时间
- 2017-10-29
- 在线时间
- 150 小时
|
#include "aj.h"
//GPIO
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructuress;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructuress.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructuress.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStructuress.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_InitStructuress);
GPIO_InitStructuress.GPIO_Pin =GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructuress.GPIO_Mode =GPIO_Mode_IPD;
GPIO_InitStructuress.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_InitStructuress);
GPIO_SetBits( GPIOA,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11);
GPIO_ResetBits( GPIOA,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
}
u8 Keyspress(void)
{
u8 KeyValue;
u8 f=0;
GPIO_Configuration();
if((GPIO_ReadInputData(GPIOA)&0xff)!=0x0f)
{
delay_ms(20);
if((GPIO_ReadInputData(GPIOA)&0xff)!=0x0f)
{
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOA,GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11);
switch(GPIO_ReadInputData(GPIOA)&0xff)
{
case 0x11:KeyValue=12;break;
case 0x21:KeyValue=13;break;
case 0x41:KeyValue=14;break;
case 0x81:KeyValue=15;break;
}
GPIO_SetBits(GPIOA,GPIO_Pin_9);
GPIO_ResetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_11);
switch(GPIO_ReadInputData(GPIOA)&0xff)
{
case 0x12:KeyValue=8;break;
case 0x22:KeyValue=9;break;
case 0x42:KeyValue=10;break;
case 0x82:KeyValue=11;break;
}
GPIO_SetBits(GPIOA,GPIO_Pin_10);
GPIO_ResetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11);
switch(GPIO_ReadInputData(GPIOA)&0xff)
{
case 0x14:KeyValue=4;break;
case 0x24:KeyValue=5;break;
case 0x44:KeyValue=6;break;
case 0x84:KeyValue=7;break;
}
GPIO_SetBits(GPIOA,GPIO_Pin_11);
GPIO_ResetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10);
switch(GPIO_ReadInputData(GPIOA)&0xff)
{
case 0x18:KeyValue=0;break;
case 0x28:KeyValue=1;break;
case 0x48:KeyValue=2;break;
case 0x88:KeyValue=3;break;
}
GPIO_SetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10 |GPIO_Pin_11);
GPIO_ResetBits(GPIOA, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |GPIO_Pin_15);
while((GPIO_ReadInputData(GPIOA)&0xff)==0x0f);
switch(KeyValue)
{
case 0: f=0;break;
case 1: f=4;break;
case 2: f=8;break;
case 3: f=12;break;
case 4: f=1;break;
case 5: f=5;break;
case 6: f=9;break;
case 7: f=13;break;
case 8: f=2;break;
case 9: f=6;break;
case 10: f=10;break;
case 11: f=14;break;
case 12: f=3;break;
case 13: f=7;break;
case 14: f=11;break;
case 15: f=15;break;
}
}
}
return f;
}
这个程序大侠帮看下哪里出错了,下载进去按键没反应。
|
|