#ifndef DS18B20_H
#define DS18B20_H

#include "stm32f10x.h"

// 引脚定义 

#define DS18B20_DQ_OUT_HIGH  (GPIOD->BSRR = (1 << 12))  // 设置PD12为高电平
#define DS18B20_DQ_OUT_LOW   (GPIOD->BRR = (1 << 12))   // 设置PD12为低电平
#define DS18B20_DQ_IN        ((GPIOD->IDR & (1 << 12)) != 0)  // 读取PD12的电平

// 设置DD12 输入模式（浮空输入）
#define DQ_IN()   { GPIOD->CRH &= ~(0xF << 16); GPIOD->CRH |= (0x4 << 16); }

void TIM7_Init(void) ;

void delay_us(uint16_t us);

void DS18B20_IO_IN(void);
void DS18B20_IO_OUT(void);

uint8_t DS18B20_Init(void);
void DS18B20_Rst(void);
uint8_t DS18B20_Check(void);

uint8_t DS18B20_Read_Bit(void);
uint8_t DS18B20_Read_Byte(void);
void DS18B20_Write_Byte(uint8_t data);

void DS18B20_Start(void);
short DS18B20_Get_Temperature(void);

#endif // DS18B20_H
