在看例程的时候,有一个语句没看懂,求分析:
TACTL = TASSEL_1 + TACLR;
其中:
#define TASSEL_1 (1*0x100u) /* Timer A clock source select: 1 - ACLK */
#define TACLR (0x0004) /* Timer A counter clear */
虽然有注释,但是没看懂,为什么 (1*0x100u) + (0x0004) 得到的是什么东西?这两个可以相加的吗?谢谢解答!
TACTL的寄存器配置如下:
此帖出自
小平头技术问答
按照我的理解可以等价于:TACTL = TASSEL_1 | TACLR;就像stm32中初始化gpio的时候GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//选择 GPIOF的9和10
是一个道理。
因为TACTL定时器A寄存器,有16位来控制。TACTL = TASSEL_1 + TACLR,就表示TASSEL位和TACLR位被置位了。
至于#define TASSEL_1 (1*0x100u) 这个应该是头文件中定义的吧。
0x100u中的这个u很必要,因为不写的话,默认是有符号。所以如果是有符号的话,最高位是符号位。所以写了理解起来更容易一些。
其他的解释参考4楼答案。
一周热门 更多>