[STM32L4] 这两句代码什么意思啊

[复制链接]
2951|24
 楼主| wanglaojii 发表于 2017-3-22 11:56 | 显示全部楼层 |阅读模式
TA0CTL   = 0                        // 复位Timer0_A5, 分频系数设置为1
           | (1 << 2)                 // 计数器清0
           | (2 << 8);                // 计数时钟设为SMCLK

STM32F4 这后面两句什么意思啊??
laozhongyi 发表于 2017-3-22 11:58 | 显示全部楼层
感觉应该是:
TA0CTL = | (1 << 2)
TA0CTL = | (2 << 8)
Edisons 发表于 2017-3-22 12:00 | 显示全部楼层
资料上这样写法,应该是想说TA0CTL的三种操作吧
_gege 发表于 2017-3-22 12:04 | 显示全部楼层
其实那三行就是一句:
TA0CTL   = 0 | (1 << 2) | (2 << 8);
他为了写注释,分成了三行而已。
Mozarts 发表于 2017-3-22 12:07 | 显示全部楼层
想问下,0 | (1 << 2) | (2 << 8)  这句话就是或运算吗?  运算之后的结果是什么?   
Listate 发表于 2017-3-22 12:11 | 显示全部楼层
| 是按位或运算,<<是左移位运算。。。。
bbapple 发表于 2017-3-22 12:14 | 显示全部楼层
为什么不直接写入寄存器  还要进行移位运算等  这样写有什么好处吗?
handleMessage 发表于 2017-3-22 12:18 | 显示全部楼层
很多都是相通的,所以也不用太纠结型号。
zhouhuanの 发表于 2017-3-22 12:20 | 显示全部楼层
bbapple 发表于 2017-3-22 12:14
为什么不直接写入寄存器  还要进行移位运算等  这样写有什么好处吗?

个人感觉可能是习惯问题吧。
TXQDM 发表于 2017-3-22 13:13 | 显示全部楼层
其实就一行代码而已,
TA0CTL   = 0 | (1 << 2) | (2 << 8);
TA0CTL = 0x00000001 10000100
lxyppc 发表于 2017-3-22 13:37 来自手机 | 显示全部楼层
看着这楼像是同一个人用不同ID在问问题
杉树林罗 发表于 2017-3-22 14:56 | 显示全部楼层
bbapple 发表于 2017-3-22 12:14
为什么不直接写入寄存器  还要进行移位运算等  这样写有什么好处吗?

习惯不同
zhao_alan 发表于 2017-3-22 16:44 | 显示全部楼层
楼主提问是不是有不清楚的地方,没见过这种写法。
Karel_mrp 发表于 2017-3-22 19:58 | 显示全部楼层
就是寄存器赋值语句而已。只是同一寄存器的不同部分有不同功能,这么写起来直观一点,很清楚就能分出各部分的配置,而不用一个bit一个bit地数。你可以翻翻芯片的手册,找到这个寄存器,应该能更清楚一点。
小流氓1 发表于 2017-3-22 20:12 | 显示全部楼层
这其实就是一条语句被分成了三行而已
戈卫东 发表于 2017-3-22 20:36 | 显示全部楼层
为了阅读更直观写成这样的。
fly0218 发表于 2017-3-22 21:30 来自手机 | 显示全部楼层
呵呵,考研智商
ff8zgs 发表于 2017-3-23 08:52 | 显示全部楼层
zhouhuanの 发表于 2017-3-22 12:20
个人感觉可能是习惯问题吧。

这不是习惯问题,这个应该是TA0CTL寄存器的3个字段需要设置。这么写的好处是,可以一目了然的知道设置的是哪些字段,每个字段分别设置的什么内容。不容易错。错了也容易debug。
ecoren 发表于 2017-3-23 09:00 | 显示全部楼层
搞硬件的表示能看懂,
619888476 发表于 2017-3-23 09:22 | 显示全部楼层
没问题,哪种好看就用哪种
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

1411

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部