<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430學(xué)習(xí)筆記——頭文件解析之看門狗

          MSP430學(xué)習(xí)筆記——頭文件解析之看門狗

          作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          MSP430設(shè)定的方法方便,但前提是看懂頭文件定義,只有這樣才能更好的運用。
          #define __MSP430_HAS_WDT__
          #define WDTCTL_ (0x0120u)
          DEFW( WDTCTL , WDTCTL_)
          這一段中讓人費解的就是DEFW,百度可以知道它代表新版本對寄存器的定義。
          #define DEFCW(name, address) __no_init union
          {
          struct
          {
          volatile unsigned char name##_L;
          volatile unsigned char name##_H;
          };
          volatile unsigned short name;
          } @ address;
          這種定義也變得相對好理解。以上的這種union的定義,將一個16位的地址存儲空間分成2個8bits或者1個16位??梢詫崿F(xiàn)字訪問,也可以實現(xiàn)字節(jié)訪問。
          WDTCL_代表的就是0X0120u這個地址,那么DEFW(WDTCTL,WDTCTL_)通過宏擴展就可以理解為
          __no_init union
          {
          struct
          {
          volatile unsigned char WDTCTL_L;
          volatile unsigned char WDTCTL_H;
          };
          volatile unsigned short WDTCTL;
          } @0X0120u;
          這里指出:
          ① __no_init是IAR擴展語法里面的一個擴展關(guān)鍵字。作用是聲明一個non-volatile類型的內(nèi)存地址(Support non-valotile memory)。
          ② @是一種語法。那么它的作用很明顯就是將變量放置到對應(yīng)的地址中。使用@,一個變量可以明確的制定一個存儲地址。
          就是將WDTCTL變量存放在0X0120u地址中,如此一來就可以為每個寄存器進行命名了,也就是說可以實現(xiàn)每個寄存器對應(yīng)一個或者多個變量。
          #define WDTIS0 (0x0001u) 選擇時鐘源周期
          #define WDTIS1 (0x0002u)
          #define WDTSSEL (0x0004u) 時鐘源選擇(0SM+1A)
          #define WDTCNTCL (0x0008u) 清除WDTCNT
          #define WDTTMSEL (0x0010u) 0看門狗模式,1 定時器模式
          #define WDTNMI (0x0020u) 0:RST/NMI引腳復(fù)位端,1:RST/NMI引腳為邊沿觸發(fā)的非屏蔽中斷輸入
          #define WDTNMIES (0x0040u) 0為上升沿觸發(fā)NMI中斷,1為下降沿
          #define WDTHOLD (0x0080u) 0:WDT功能激活,1為時鐘禁止輸入并停止計數(shù)降低功耗
          #define WDTPW (0x5A00u) 口令
          WDT的定時時間
          WDTSSELWDTISx定時時間/ms
          IS1IS0
          0110.064Tsmclk*64
          0100.51Tsmclk*512
          1111.95Taclk*64
          0018.19Tsmclk*8192
          11015.63Taclk*512
          00032.77Tsmclk*64
          101250Taclk*8192
          1001000Taclk*32768
          口令 :#define WDTPW (0x5A00u)
          時鐘源選擇:WDTTMSEL 0為SMCLK 1為ACLK
          WDTCNTCL 該位為1,清除WDTCNT
          WDTIS1+WDTIS0
          0:計數(shù)次數(shù)32768 1:8192 2:512 3:64 結(jié)合時鐘源的選擇衍生出下面的定時器延時
          +++
          #define WDT_MDLY_32 (WDTPW+WDTTMSEL+WDTCNTCL )
          MOV #WDTPW+WDTTMSEL+WDTCNTCL ,&WDTCTL 定時32ms
          #define WDT_MDLY_8 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 )
          #define WDT_MDLY_0_5 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1)
          #define WDT_MDLY_0_064 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0)
          #define WDT_ADLY_1000 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL)
          #define WDT_ADLY_250 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0) #define WDT_ADLY_16 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1)
          #define WDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)
          #define WDT_MRST_32 (WDTPW+WDTCNTCL)
          #define WDT_MRST_8 (WDTPW+WDTCNTCL+WDTIS0)
          #define WDT_MRST_0_5 (WDTPW+WDTCNTCL+WDTIS1)
          #define WDT_MRST_0_064 (WDTPW+WDTCNTCL+WDTIS1+WDTIS0)
          #define WDT_ARST_1000 (WDTPW+WDTCNTCL+WDTSSEL)
          #define WDT_ARST_250 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS0)
          #define WDT_ARST_16 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1)
          #define WDT_ARST_1_9 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)


          關(guān)鍵詞: MSP430頭文件看門

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();