求教IO方向设置的问题#define DHT11_IO_IN() {GPIOC->CRL&=0XFFFFFFF0;GPIOC->CRL|=8<<0;}

2019-10-16 03:09发布

谁能讲讲这里是什么意思,为什么改了io就用不了,0XFFFFFFF0还有8<<0,都是什么意思,求具体讲一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
密耳
1楼-- · 2019-10-16 03:37
CRL表示的是0·7io CRH表示的就是8~15 IO 口;0xffffffff就分别对应0~7(8~15) 设置成8和3,是根据寄存器的要求设值的
hpeng1874
2楼-- · 2019-10-16 07:49
可以看下寄存器版本的GPIO初始化代码
曹世鹏
3楼-- · 2019-10-16 11:41
前面的我明白是什么意思。但是后面的GPIOC->CRL|=8<<0;和GPIOC->CRL|=3<<0;中的左移0是什么意思我就不知道了。
上面的8代表的是1000。表示浮空输入模式。
上面的3代表的是0011。表示推挽输出模式。
但是就是左移0不知道是啥意思。哪位师傅能帮我解答下呢。谢谢。
例如我把PC5设置成DS18B20的IO口
#define DS18B20_IO_IN()  {GPIOC->CRL&=0XFF0FFFFF;GPIOC->CRL|=8<<0;}
#define DS18B20_IO_OUT() {GPIOC->CRL&=0XFF0FFFFF;GPIOC->CRL|=3<<0;}
上面这两个是我自己改动的。前面一部分肯定是没有什么问题。但是左移0肯定是不对的。对于左移几,是怎么计算的呢。求解答。
sherryPn
4楼-- · 2019-10-16 12:24
曹世鹏 发表于 2016-10-31 10:22
前面的我明白是什么意思。但是后面的GPIOC->CRL|=8

设置第几个引脚就左移几;
前面部分GPIOC->CRL&=0XFF0FFFFF; 说明设置的是GPIO_Pin_5;
后面部分GPIOC->CRL|=8<<20;  应该左移pin_5*4=20位  
曹世鹏
5楼-- · 2019-10-16 13:07
 精彩回答 2  元偷偷看……
sherryPn
6楼-- · 2019-10-16 18:42
曹世鹏 发表于 2016-11-1 16:42
嗯嗯,非常感谢你的帮助。这个问题昨天问了下原子哥,解决了。再次感谢。

嗷嗷 没事儿

一周热门 更多>