DS18B20温度传感器的驱动需要配置IO口,每个IO口都有两个寄存器CRH和CRL来设置IO方向,其中CRH用来设置高8-15引脚,CRL用来设置0-7引脚,每个引脚的设置需要四位,
大家要注意“0”的位置,和代码中左移的位数(7*4=28,所以左移28),
0xffffffff从低位到高位数表示引脚位置,7引脚从0开始数到左边第八个为“0”,所以CRL&=0X0FFFFFFF;
第二个是PC3引脚
3引脚从0开始数到左边第四个为“0”,所以CRL&=0XFFFF0FFF,代码中左移的位数(3*4=28,所以左移12)。
#define DS18B20_IO_IN() {GPIOE->CRL&=0X0FFFFFFF;GPIOE->CRL|=8<<28;} //PE7
#define DS18B20_IO_OUT() {GPIOE->CRL&=0X0FFFFFFF;GPIOE->CRL|=3<<28;}
#define SDA_IN() {GPIOC->CRL&=0XFFFF0FFF;GPIOC->CRL|=(u32)8<<12;} //PC3输入模式
#define SDA_OUT() {GPIOC->CRL&=0XFFFF0FFF;GPIOC->CRL|=(u32)3<<12;} //PC3输出模式