求大神解释一下这个主程序什么意思?特别是标红的意思

2019-03-23 17:33发布

main()
{
        unsigned int tem_c=0;
        unsigned char B_k1=0,B_k2=0;
       
        for(tem_c=0;tem_c<50000;tem_c++);
        Clock_init();
        GPIO_int();
       
        while (1)
        {
          if((GPIOG->IDR&0x80)==0x80)B_k1=0; //PG7为高电平,未有按键
                else if(B_k1==0)//PG6按下时,指示灯亮
                {
                        for(tem_c=0;tem_c<500;tem_c++);
                        if((GPIOG->IDR&0x80)==0x00)
                        {
                                B_k1=1;
                                GPIOA->ODR=0x30;
                        }
                }
               
                if((GPIOG->IDR&0x40)==0x40)B_k2=0; //PG6为高电平,未有按键
                else if(B_k2==0)//PG7按下时,指示灯灭
                {
                        for(tem_c=0;tem_c<500;tem_c++);
                        if((GPIOG->IDR&0x40)==0x00)
                        {
                                B_k2=1;
                                GPIOA->ODR=0x0;
                        }
                }
        }
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
KCP
1楼-- · 2019-03-24 23:55
wudianjun2001 发表于 2017-8-24 08:23
这两个是存储按键的状态,是按下还是未按下。
按键扫描的话,一般先判断有键按下,延时一段时间再判断一 ...

整个的while循环是什么意思,能具体说说吗?
wateras1
2楼-- · 2019-03-25 00:59
for(tem_c=0;tem_c<50000;tem_c++);第一处主要是用于上电后延时,作者之所以这样干可能是想让系统上电稳定后,再初始化外设。后面两处用于按键消抖。其实那句就是什么也不干(变量累加计算),就是空耗CPU时间,到了时间就运行下一条语句,这种代码自己玩还是,项目上这种代码,会被人给干死的。

一周热门 更多>