求分析,求解答

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条回答
cj_in
1楼-- · 2019-03-24 15:03
 精彩回答 2  元偷偷看……
火火山
2楼-- · 2019-03-24 18:39
< :TI_MSP430_内容页_SA7 -->
cj_in 发表于 2016-6-24 16:02
(1*0x100u) 即TASSELx字段=1  后缀u表示无符号数
(0x0004) 即TACLR字段(TACLR位)=1
两个都是数值当然 ...

那如果7*0x100u这个怎么看啊?
ienglgge
3楼-- · 2019-03-24 18:57
火火山 发表于 2016-6-24 18:58
那如果7*0x100u这个怎么看啊?

(1*0x100u) 。bit8的值为1,这是根据寄存器的含义得到的数据,7*0x100u,就是0x700u,对应的三个bit是1 啊。这只是一个数而已,由寄存器含义决定值。
火火山
4楼-- · 2019-03-24 23:47
 精彩回答 2  元偷偷看……
huaiqiao
5楼-- · 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楼答案。

一周热门 更多>

相关问题

    相关文章