有个小问题 关于位操作

2019-07-21 07:13发布

在配置odr寄存器的时候:
想拉高PE2~4 我这么写  GPIOE->ODR |= 0x00011100; 为啥不对

而这么写的话又是对的 GPIOE->ODR |= 7<<2;       

请问上面那个问什么不对
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
warship
1楼-- · 2019-07-21 08:05
0x00011100表示的是十六进制,
应该改成0x1C就对了
Jasonlearning
2楼-- · 2019-07-21 11:24
warship 发表于 2018-12-3 22:44
0x00011100表示的是十六进制,
应该改成0x1C就对了

啊 这两个不是一样的吗
warship
3楼-- · 2019-07-21 11:40
Jasonlearning 发表于 2018-12-4 11:48
啊 这两个不是一样的吗

如果这样的话,
我就无语了!!!
Jasonlearning
4楼-- · 2019-07-21 12:05
 精彩回答 2  元偷偷看……
hgr211
5楼-- · 2019-07-21 14:02
基础的c语言去学下吧,兄弟
warship
6楼-- · 2019-07-21 16:41
Jasonlearning 发表于 2018-12-4 15:35
o 我写成 0001 1100 就行了是吧,还请赐教

0x用于表示十六进制数,
你的0001 1100本意是二进制数,实际上就是0x1C
所以写成0x1C就可以了,难道写成0x1C会死的吗?
二进制写起来太长了,读写都不方便,在C语言里一般不用。
试想STM32是32位机,你写一个32位的二进制试试。
如果你非要写二进制,可以用0b00011100看行不行(我不确定,很久没直接写二进制了)。

一周热门 更多>