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