<wbr id="9qp22"><legend id="9qp22"><rt id="9qp22"></rt></legend></wbr>
<th id="9qp22"><noframes id="9qp22"><form id="9qp22"></form></noframes></th>

      <dd id="9qp22"><big id="9qp22"><video id="9qp22"></video></big></dd>
      <th id="9qp22"></th>
        <rp id="9qp22"><acronym id="9qp22"></acronym></rp>
        <dd id="9qp22"><pre id="9qp22"></pre></dd>

        1. <dd id="9qp22"><pre id="9qp22"></pre></dd>
          1. 打印

            [原創] volatile關鍵字作用

            [復制鏈接]
            70|1
            跳轉到指定樓層
            樓主
            首先來看一段代碼:
              
            //P1.0口連接LED0
              
            #include <msp430.h>
              
            int main(void)
              
            {
              
                   WDTCTL  = WDTPW | WDTHOLD;      // stop watchdog  timer
              
                   unsigned  int i;
              
                   P1DIR=0x01;                    //定義P1.0口為輸出引腳。
              
                   while(1)
              
                   {
              
                       P1OUT=0x01;               //P1.0輸出高電平
              
                       for(i=5000;i>0;i--);
              
                       P1OUT=0x00;               //P1.0輸出低電平
              
                       for(i=5000;i>0;i--);
              
                   }
              
            }
              
            測試結果:
            LED0一直亮著
            為什么會這樣呢?
            把上述代碼變量i的定義語句做出如下修改,再上電測試
              
            volatile unsigned int i;
              
            測試結果:
            LED0 閃爍
            為什么加了volatile關鍵字就把問題解決了呢,這個關鍵字作用到底是什么?
            Volatile:定義“發揮性”變量,編譯器將認定該變量的值會隨時改變,對該變量的任何操作都不會被優化過程刪除。編者在實際編程的過程中發現,利用變量i遞減或遞加產生的軟件延時函數,會被編譯器優化而不會執行,因此若讀者遇到這種情況且希望延時函數工作,只能在變量i前加volatile關鍵字即可。
            注:上述內容摘自《MSP430單片機原理與應用—MSP430F5xx/6xx系列單片機入門、提高與開發(任保宏、徐科軍)》
            總結:
            volatile關鍵字作用。從實驗1測試結果可以得出,兩條for循環語句均被編譯器優化過程刪除。實際while循環中僅有P1OUT=0x01;P1OUT=0x00;所以輸出結果LED0常亮。通過實驗2可以得出如下結論:volatile關鍵字作用是告訴編譯器該變量(變量i)任何操作都不可以被優化過程刪除且希望軟件延時函數能正常工作

            使用特權

            評論回復
            沙發
            | 2019-9-11 21:28 | 只看該作者
            這應該還跟編譯器的優化設置有關吧

            使用特權

            評論回復
            掃描二維碼,隨時隨地手機跟帖
            您需要登錄后才可以回帖 登錄 | 注冊

            本版積分規則

            我要發帖 投訴建議 創建版塊 申請版主

            快速回復

            您需要登錄后才可以回帖
            登錄 | 注冊
            高級模式

            論壇熱帖

            在線客服 快速回復 返回頂部 返回列表
            成人短片线上看