[求助] MSP430一条语句不太理解!

零晨   2011-8-29 11:20 楼主

TATCL=TASSEL_1+MC_1;这条语句是不是相当于TACTL=TASSEL0+MC0;?

因为头文件定义为:

#define TASSEL0             (0x0100u)  /* Timer A clock source select 1 */

#define MC0                 (0x0010u)  /* Timer A mode control 0 */

 

#define MC_1                (1*0x10u)  /* Timer A mode control: 1 - Up to CCR0 */
#define TASSEL_1            (1*0x100u) /* Timer A clock source select: 1 - ACLK  */
这是为什么呢,有大侠可以给我讲讲么,

另外#define TASSEL_3            (3*0x100u) /* Timer A clock source select: 3 - INCLK */

中3*0x100u,怎么回事啊?

回复评论 (5)

回复 楼主 零晨 的帖子

LZ,你好。两者是等效的。

是否可以这样理解,头文件中先把寄存器的每一位都表示出来,然后有些控制命令是由某些位组合控制的,比如说TASSEL时钟信号选择有两个位TASSEL0与TASSEL1。这就能产生4种组合方式:

TASSEL1 TASSEL0

 0                    0

 0                    1

 1                    0

 1                    1

实际中为了方便,头文件把这4钟不同的方式也宏定义出来,也就是

TASSEL_0  = 0*TASSEL1+0*TASSEL0 =0*0x200u+0*0x100u = 0           =0*0x100u

TASSEL_1  = 0*TASSEL1+1*TASSEL0 =0*0x200u+1*0x100u = 0x100u  =1*0x100u

TASSEL_2  = 1*TASSEL1+0*TASSEL0 =1*0x200u+0*0x100u = 0x200u  =2*0x100u

TASSEL_3  = 1*TASSEL1+1*TASSEL0 =1*0x200u+1*0x100u = 0x300u  =3*0x100u

[ 本帖最后由 3g465 于 2011-8-29 12:28 编辑 ]
点赞  2011-8-29 12:24
原来是这样,这样一解释,我就明白了,其实就是为了方便设计者,那defalt值应该都是0吧?
点赞  2011-8-29 14:06
拜读!
点赞  2011-8-29 21:24

引用: 原帖由 3g465 于 2011-8-29 12:24 发表 LZ,你好。两者是等效的。是否可以这样理解,头文件中先把寄存器的每一位都表示出来,然后有些控制命令是由某些位组合控制的,比如说TASSEL时钟信号选择有两个位TASSEL0与TASSEL1。这就能产生4种组合方式: TASS ...

厉害厉害。

讲解的很好啊。

点赞  2011-8-31 11:17
仔细看头文件,直接调试看看就晓得了,那个IAR 的头文件写的丑!
点赞  2011-8-31 17:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复