初级会员

- 积分
- 88
- 金钱
- 88
- 注册时间
- 2015-9-22
- 在线时间
- 15 小时
|
1金钱
我用STM32F103的片子,基本上复制的原子哥的库函数例程,其中有用到四个短路插针,不加短路帽时为高电平,加上短路帽为低电平,其中接PA口的两个可用,接PB口的两个不能用,一直不能识别,网学不久,哪位大哥帮忙看看是哪里的问题。
初始化程序如下:
unsigned char ucKey_value=0; //按键键值
//按键初始化函数
//PA11,PA12和PB13,PB14设置成输入
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//使能PORTA,PORTB时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);//开启SWD,失能JTAG
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12; //IC2=PA11,IC3=PA12
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //将IC2设置成内部上拉输入
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIOA11,GPIOA12
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; //IC4=PB13,IC5=PB14
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //将IC4设置成内部上拉输入
GPIO_Init(GPIOB,&GPIO_InitStructure); //初始化GPIOB13,GPIOB14
}
//处理函数
void KEY_Scan(void)
{
if(IC2==0||IC3==0||IC4==0||IC5==0) //有插针被短路帽短路
{
delay_ms(10); //去抖
if(IC2==0) ucKey_value=1; //
else if(IC3==0) ucKey_value=2; //
else if(IC4==0) ucKey_value=3; //
else if(IC5==0) ucKey_value=4; //
}
else if((IC2==1)&&(IC3==1)&&(IC4==1)&&(IC5==1)) ucKey_value=0;
}
现在的问题就是我短路IC2,IC3这两个接到PA口上的插针时,ucKey_value值是正常的,但是短路IC4,IC5这两个接到PB口上的插针(万用表测量引脚已经为低电平)时,ucKey_value值不变,一直为0,大家帮忙看是是哪里出错了?
|
|