首先需要弄明白,在移植的过程中哪些东西变了,哪些东西没变。
连接DS18B20的引脚变了,你的一些宏定义需要改一下。
# define DS18B20_DQ_OUT PAout(0)
# define DS18B20_DQ_IN PAout(0)
STM32的引脚功能需要提前设置,读数据时I/O口设置为输入模式,写数据时I/O设置为输出模式。
#define DS18B20_IO_IN() {GPIOA->CRL&=0xfffffff0;GPIOA->CRL|=8<<0;}
#define DS18B20_IO_OUT() {GPIOA->CRL&=0xfffffff0;GPIOA->CRL|=3<<0;}
DS18B20在初始化时,要使能时钟,配置引脚的工作方式。
u8 DS18B20_Init(void)
{
RCC->APB2ENR|=1<<2;
GPIOA->CRL&=0xfffffff0;
GPIOA->CRL|=0x00000003;
GPIOA->ODR|=1<<0;
DS18B20_Rst();//复位函数
return DS18B20_Check();//检测DS18B20是否存在
}
在STM32中,函数定义写在DS18B20.c 文件里,函数声明和宏定义写在DS18B20.h文件里。
DS18B20的读写时序不变。
更多精彩内容,欢迎关注微信公众号【跟单片机谈恋爱】