在网上经常能看到在初始化TimerA或TimerB的时候,不同人写的代码,里面使用的寄存器名称不一样,刚开始学习的时候有点懵。后面找了时间查看了以下MSP430头文件,发现一些寄存器名称虽然不同,但是其功能和用法其实是完全一样的。
比如下面的代码,都是开启TimerA的中断。
//开启TimerA的中断
TA0CCTL0 = CCIE;
TACCTL0 = CCIE;
CCTL0 = CCIE;
MSP头文件中的定义能很清楚的看到如下内容:
首先在这里定义了TACCTL0_指向了TimerA所在的寄存器地址0x0162。
然后使用DEFW函数定义了TACCTL0,指向TACCTL0_。
接着又分别定义了CCTL0 和TA0CCTL0,指向TACCTL0。
所以,这三个寄存器变量名都代表的是同一个功能,只是名称叫法不同而已。
**
而关于使用DEFW函数,目前我有点一头雾水。
**
为什么不能使用下面这样的用法?
//将
DEFW(TACCCTL0,TACCTL_)
//替换为
#define TACCTL0 TACCTL0_
而是要大费周章的写一段函数?
这里也不过多纠结了,按照头文件中的意思,如果宏定义的是一个地址,那么就不能直接使用#define再重新定义一个名称。