430頭文件的解釋
{
本文引用地址:http://m.butianyuan.cn/article/201611/315510.htmunsignedshortWDTCTL;/*WatchdogTimerControl*/
struct
{
unsignedshortWDTIS0:1;/**/
unsignedshortWDTIS1:1;/**/
unsignedshortWDTSSEL:1;/**/
unsignedshortWDTCNTCL:1;/**/
unsignedshortWDTTMSEL:1;/**/
unsignedshortWDTNMI:1;/**/
unsignedshortWDTNMIES:1;/**/
unsignedshortWDTHOLD:1;/**/
}WDTCTL_bit;
}@0x0120;
enum{
WDTIS0=0x0001,
WDTIS1=0x0002,
WDTSSEL=0x0004,
WDTCNTCL=0x0008,
WDTTMSEL=0x0010,
WDTNMI=0x0020,
WDTNMIES=0x0040,
WDTHOLD=0x0080
};
WDTCTL的地址單元是0x0120后面這段是什么意思呢。聯(lián)合體?
unsignedshortWDTIS0:1;//1表示字段寬度(2進制),這表示W(wǎng)DTISO要么是1要么是0
后面這個8個位和WDTCTL共享存儲單元??磚serguide,WDTCTL是一個16位的寄存器,WDTIS0位于其bit0,以此類推,WDTHOLD是bit7,復(fù)位之后這幾個位都是0。在MSP的C語言中,并不支持位變量。在430的IO頭文件中,用這種定義方式實現(xiàn)了對寄存器的位變量訪問。
WDTCTL=WDTPW+WDTHOLD;//停止看門狗這個停止看門狗的操作如何解釋?
WDTCTL很明顯,是看門狗控制寄存器,而WDTPW是一個宏定義,頭文件里面是這樣子的,#defineWDTPW(0x5A00u),userguide中WDTCTL是一個16位的寄存器,其中bit15-bit8名字是WDTPW,mustbewrittenas0x5a,這8個位必須初始化成0x5a。這句也就是完成了WDTPW的初始化并且將WDTHOLD置位,WDTHOLD置位的結(jié)果是看門狗定時器停止。
unsignedshortWDTNMIES:1;//看門狗定時器非屏蔽中斷邊沿選擇位。
unsignedshortWDTNMI:1;//看門狗定時器非屏蔽中斷選擇
unsignedshortWDTTMSEL:1;//看門狗定時器模式選擇
unsignedshortWDTCNTCL:1;//看門狗定時器計數(shù)器清零選擇位
unsignedshortWDTSSEL:1;//看門狗定時器時鐘源選擇
unsignedshortWDTIS0:1;//看門狗定時間隔選擇
unsignedshortWDTIS1:1;//時間間隔選擇
PUC上電清零powerupclear
評論