赞
踩
在使用DHT11时遇到的问题
//IO方向设置
#define DHT11_IO_IN() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}
#define DHT11_IO_OUT() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}
不了解
{GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}
0XFFFF0FFF:需要看前边的CRH(还是CRL),PIN IO分为高8(PIN15~PIN8) 和低8(PIN7-PIN0) 。0代表PIN口.
如果是CRL 则FFFF0FFF,从右往左分别是PIN0,PIN1,PIN2,PIN3,PIN4。则0代表的PIN4
如果是CRH 则FFFF0FFF,从右往左分别是PIN8,PIN9,PIN10,PIN11,PIN12。则0代表的PIN11。
GPIOG->CRH|=8<<12: 中的8代表输出模式() 12代表寄存器的位(看下图),比如CRH|=8<<12 就是CRH寄存器(参考CRH寄存器表)表中的MOE11的PIN11的模式配置寄存器(就是框框上的数字)
CRL:
CRH:
再看这一行:
{GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}
同样先复位,然后3变成二进制就是0011,00,通用推挽输出,11表示50mhz输出模式
懂了么??
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。