找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1405|回复: 5
打印 上一主题 下一主题
收起左侧

MCU初学者请教一个C语言代码if(0)语句问题

[复制链接]
跳转到指定楼层
#
ID:532071 发表于 2019-5-10 15:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
5黑币
#ifndef FALSE
        #define FALSE 0
#endif
这个是在头文件里
volatile uint8_t b10MsFlag=FALSE;

int main(void)
{
RCC_Config();
KeyLampInit();
Timer2_Init(Timer2_10ms_Int);
SoundInit(&sign,u8SoundCnt,SOUND_MAX_CNT,SOUND_PIN,SOUND_NUM);  
//IWDG_Config(10000);
u8ASteps=1;
while(b10MsFlag==0){
  KeyLampRowClr(LAMP_ROW_1,(uint32_t*)LAPM1_COLOR);
  KeyLampRowClr(LAMP_ROW_2,(uint32_t*)LAPM2_COLOR);
  KeyLampRowClr(LAMP_ROW_3,(uint32_t*)LAPM3_COLOR);
}
while (1)
{
  //IWDG_Feed();
  if(b10MsFlag){
   b10MsFlag=FALSE;
            if(KEY_PRESS==GetKeyVal(50)){
                bStart=1;
            }
            if(bStart){
                Step1Handle();
                Step2Handle();
                SoundLoop(&sign);
            }
        }
其中的 if(b10MsFlag) 这个是if(0)的意思吗 ?是不是条件永远为假进入不了{后面的内容呢?
我看程序代码是这样理解的,但是我运行这个程序是可以进入的。
有老师帮忙解惑一下吗?


最佳答案

查看完整内容

对,用volatile修饰的话,说明这个变量是易变的,可能在程序的其他地方被修改。你在其他c文件里边找找这个变量。只有变量被改变为非0值,下边的if(){}才会执行。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

5#
ID:525068 发表于 2019-5-13 22:04 | 只看该作者
可能是上面一个if语句没有实现
回复

使用道具 举报

地板
ID:532071 发表于 2019-5-13 14:26 | 只看该作者
wulin 发表于 2019-5-10 23:53
关键字 volatile 的存在,说明变量在程序执行中可被隐含地改变。

老师,你的意思是其他地方有改变了这个值,并不是说一直都是0是吗?
回复

使用道具 举报

板凳
ID:213173 发表于 2019-5-10 23:53 | 只看该作者
关键字 volatile 的存在,说明变量在程序执行中可被隐含地改变。
回复

使用道具 举报

沙发
ID:347954 发表于 2019-5-10 20:52 | 只看该作者
程序死在第一个while处,while(b10MsFlag==0),一直执行
回复

使用道具 举报

楼主
ID:400380 发表于 2019-5-10 15:46 | 只看该作者
初学STM 发表于 2019-5-13 14:26
老师,你的意思是其他地方有改变了这个值,并不是说一直都是0是吗?

对,用volatile修饰的话,说明这个变量是易变的,可能在程序的其他地方被修改。你在其他c文件里边找找这个变量。只有变量被改变为非0值,下边的if(){}才会执行。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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