OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1851|回复: 4

求助帖

[复制链接]

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
发表于 2019-2-21 15:23:26 | 显示全部楼层 |阅读模式
5金钱
写了个按键检测的代码,问题是不管怎么按KEY_B1,b1的值都不变
key_Init函数应该没有问题,然后按键用别工程测试也是好的,应该是程序哪里有不对,请大家指教

419C83FF93FC2977DEA88812357053EA.jpg

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;} } }
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-2-21 15:23:27 | 显示全部楼层
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;}
}
}


回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-2-21 15:31:54 | 显示全部楼层
unsigned int b1=1; 放while外面
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-2-21 16:32:18 | 显示全部楼层
edmund1234 发表于 2019-2-21 15:28
if(KEY_B1==0)        b1=0;
if(b1==0){if(KEY_B1==0)b1=1;}
if(b1==1){if(KEY_B1==0)b1=0;}

把代码改了后问题已解决,谢谢
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-2-21 16:32:49 | 显示全部楼层
nashui_sx 发表于 2019-2-21 15:31
unsigned int b1=1; 放while外面

放到外面了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 14:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表