初级会员

- 积分
- 102
- 金钱
- 102
- 注册时间
- 2019-2-12
- 在线时间
- 36 小时
|
5金钱
写了个按键检测的代码,问题是不管怎么按KEY_B1,b1的值都不变
key_Init函数应该没有问题,然后按键用别工程测试也是好的,应该是程序哪里有不对,请大家指教
int main(void)
int main(void)
{
u8 string3[20];
key_Init();
STM3210B_LCD_Init();//LCD初始化
LCD_Clear(White);
LCD_SetTextColor(Black);
LCD_SetBackColor(White);
LCD_SetTextColor(Black);
LCD_SetBackColor(White);
while(1)
{
unsigned int b1=1;
if(KEY_B1==0) b1=0;
if(b1==0){if(KEY_B1==0)b1=1;}
if(b1==1){if(KEY_B1==0)b1=0;}
sprintf((char*)string3,"%s%.0f","b1 Value:",(float)b1);
LCD_DisplayStringLine(Line8,string3);
}
void key_Init()
{
GPIO_InitTypeDef GPIO_InitStrcture;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStrcture.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStrcture.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStrcture.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStrcture);
}
|
最佳答案
查看完整内容[请看2#楼]
if(KEY_B1==0) b1=0;
if(b1==0){if(KEY_B1==0)b1=1;}
if(b1==1){if(KEY_B1==0)b1=0;}
这段代码肯定有问题
改为
if(KEY_B1==0) b1=0;
else {
if(b1==0){if(KEY_B1==0)b1=1;}
else {
if(b1==1){if(KEY_B1==0)b1=0;}
}
}
|