求分析,求解答

2019-03-24 09:15发布

在看例程的时候,有一个语句没看懂,求分析:
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的寄存器配置如下:
!111.png
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
huaiqiao
2019-03-24 23:51
其实,TACTL = TASSEL_1 + TACLR;
按照我的理解可以等价于: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楼答案。

一周热门 更多>

相关问题

    相关文章