2139|5

348

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

求分析,求解答 [复制链接]

在看例程的时候,有一个语句没看懂,求分析:
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; 按照我的理解可以等价于: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楼答案。  详情 回复 发表于 2016-6-27 22:44
 
点赞 关注

回复
举报

120

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
(1*0x100u) 即TASSELx字段=1  后缀u表示无符号数
(0x0004) 即TACLR字段(TACLR位)=1
两个都是数值当然可以相加
 
 

回复

348

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
cj_in 发表于 2016-6-24 16:02
(1*0x100u) 即TASSELx字段=1  后缀u表示无符号数
(0x0004) 即TACLR字段(TACLR位)=1
两个都是数值当然 ...

那如果7*0x100u这个怎么看啊?

点评

(1*0x100u) 。bit8的值为1,这是根据寄存器的含义得到的数据,7*0x100u,就是0x700u,对应的三个bit是1 啊。这只是一个数而已,由寄存器含义决定值。  详情 回复 发表于 2016-6-25 00:56
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

4
 
火火山 发表于 2016-6-24 18:58
那如果7*0x100u这个怎么看啊?

(1*0x100u) 。bit8的值为1,这是根据寄存器的含义得到的数据,7*0x100u,就是0x700u,对应的三个bit是1 啊。这只是一个数而已,由寄存器含义决定值。
 
 
 

回复

348

帖子

0

TA的资源

一粒金砂(高级)

5
 
ienglgge 发表于 2016-6-25 00:56
(1*0x100u) 。bit8的值为1,这是根据寄存器的含义得到的数据,7*0x100u,就是0x700u,对应的三个bit是1  ...

哦哦,明白啦,谢谢
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

6
 
其实,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楼答案。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表