欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: MCU初學者請教一個C語言代碼if(0)語句問題 [打印本頁]

作者: 初學STM    時間: 2019-5-10 15:46
標題: MCU初學者請教一個C語言代碼if(0)語句問題
#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)的意思嗎 ?是不是條件永遠為假進入不了{后面的內容呢?
我看程序代碼是這樣理解的,但是我運行這個程序是可以進入的。
有老師幫忙解惑一下嗎?



作者: 獅子歌歌    時間: 2019-5-10 15:46
初學STM 發表于 2019-5-13 14:26
老師,你的意思是其他地方有改變了這個值,并不是說一直都是0是嗎?

對,用volatile修飾的話,說明這個變量是易變的,可能在程序的其他地方被修改。你在其他c文件里邊找找這個變量。只有變量被改變為非0值,下邊的if(){}才會執行。
作者: ccl09    時間: 2019-5-10 20:52
程序死在第一個while處,while(b10MsFlag==0),一直執行
作者: wulin    時間: 2019-5-10 23:53
關鍵字 volatile 的存在,說明變量在程序執行中可被隱含地改變。
作者: 初學STM    時間: 2019-5-13 14:26
wulin 發表于 2019-5-10 23:53
關鍵字 volatile 的存在,說明變量在程序執行中可被隱含地改變。

老師,你的意思是其他地方有改變了這個值,并不是說一直都是0是嗎?
作者: 1255230    時間: 2019-5-13 22:04
可能是上面一個if語句沒有實現




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1