__no_initvolatileunion
{
unsignedshortWDTCTL;/*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后边这段是什么意思呢。联合体?
unsignedshortWDTIS0:1;//1表明字段宽度(2进制),这表明WDTISO要么是1要么是0
后边这个8个位和WDTCTL同享存储单元。看userguide,WDTCTL是一个16位的寄存器,WDTIS0坐落其bit0,以此类推,WDTHOLD是bit7,复位之后这几个位都是0。在MSP的C语言中,并不支撑位变量。在430的IO头文件中,用这种界说方法完成了对寄存器的位变量拜访。
WDTCTL=WDTPW+WDTHOLD;//中止看门狗这个中止看门狗的操作怎么解说?
WDTCTL很明显,是看门狗操控寄存器,而WDTPW是一个宏界说,头文件里边是这姿态的,#defineWDTPW(0x5A00u),userguide中WDTCTL是一个16位的寄存器,其间bit15-bit8姓名是WDTPW,mustbewrittenas0x5a,这8个位有必要初始化成0x5a。这句也便是完成了WDTPW的初始化而且将WDTHOLD置位,WDTHOLD置位的结果是看门狗守时器中止。
unsignedshortWDTNMIES:1;//看门狗守时器非屏蔽中止边缘挑选位。
unsignedshortWDTNMI:1;//看门狗守时器非屏蔽中止挑选
unsignedshortWDTTMSEL:1;//看门狗守时器形式挑选
unsignedshortWDTCNTCL:1;//看门狗守时器计数器清零挑选位
unsignedshortWDTSSEL:1;//看门狗守时器时钟源挑选
unsignedshortWDTIS0:1;//看门狗守时距离挑选
unsignedshortWDTIS1:1;//时刻距离挑选
PUC上电清零powerupclear