【转】430的寄存器定义

1 篇文章 0 订阅

__no_init volatile union

{

unsigned short WDTCTL; /* Watchdog Timer Control */

struct

{

unsigned short WDTIS0 : 1; /* */

unsigned short WDTIS1 : 1; /* */

unsigned short WDTSSEL : 1; /* */

unsigned short WDTCNTCL : 1; /* */

unsigned short WDTTMSEL : 1; /* */

unsigned short WDTNMI : 1; /* */

unsigned short WDTNMIES : 1; /* */

unsigned short WDTHOLD : 1; /* */

}WDTCTL_bit;

} @ 0x0120;

enum {

WDTIS0 = 0x0001,

WDTIS1 = 0x0002,

WDTSSEL = 0x0004,

WDTCNTCL = 0x0008,

WDTTMSEL = 0x0010,

WDTNMI = 0x0020,

WDTNMIES = 0x0040,

WDTHOLD = 0x0080

};

WDTCTL 的地址单元是 0x0120 后面这段是什么意思呢。联合体?

unsigned short WDTIS0 : 1; // 1表示字段宽度(2进制),这表示WDTISO要么是1要么是0

后面这个8个位和WDTCTL 共享存储单元。看user guide , WDTCTL 是一个16位的寄存器,WDTIS0位于其 bit0, 以此类推,WDTHOLD 是bit7 ,复位之后这几个位都是0。在MSP的C语言中,并不支持位变量。在的IO中,用这种定义方式实现了对寄存器的位变量访问。

WDTCTL=WDTPW+WDTHOLD; // 停止看门狗 这个停止看门狗的操作如何解释?

WDTCTL 很明显,是看门狗控制寄存器,而WDTPW 是一个宏定义,头文件里面是这样子的,#define WDTPW (0x5A00u),user guide 中WDTCTL是一个16位的寄存器,其中bit15-bit8名字是 WDTPW,must be written as 0x5a,这8个位必须初始化成0x5a。这句也就是完成了WDTPW的初始化并且将WDTHOLD置位, WDTHOLD置位的结果是看门狗定时器停止。

unsigned short WDTNMIES : 1; // 看门狗定时器非屏蔽中断边沿选择位。

unsigned short WDTNMI : 1; // 看门狗定时器非屏蔽中断选择

unsigned short WDTTMSEL : 1; // 看门狗定时器模式选择

unsigned short WDTCNTCL : 1; // 看门狗定时器计数器清零选择位

unsigned short WDTSSEL : 1; //看门狗定时器时钟源选择

unsigned short WDTIS0 : 1; // 看门狗定时间隔选择

unsigned short WDTIS1 : 1; // 时间间隔选择

PUC 上电清零 power up clear

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值