芯片破解代码片段1为“DS18B20.h”
代码片段2为“DS18B20.c”
在main函数初始化部分直接调用“DQ_GPIO_Init();//初始化函数 使用时直接调用到主函数”
在main函数主循环中调用“Temp_Check(); //温度获取”即可获取温度
- 芯片破解#ifndef _DS18B20_H_
- 芯片破解#define _DS18B20_H_
- #include "gd32f4xx.h"
- //DQ_GPIO
- #define DQ_GPIO_Port GPIOC //GPIO分组编号 范围A-E
- #define DQ_Pin GPIO_PIN_13 //GPIO针脚号 范围0-15
- //#define SET GPIO_PIN_SET
- //#define RESET GPIO_PIN_RESET
- //总线的电平
- typedef enum
- {
- DQ_LEVEL_LOW = 0,
- DQ_LEVEL_HIGHT
- }DQ_LEVEL_Type;
- /* 引脚写高低电平 */
- #define DQ_Write(Level) if(Level) \
- gpio_bit_set(DQ_GPIO_Port,DQ_Pin); \
- else \
- gpio_bit_reset(DQ_GPIO_Port,DQ_Pin);
-
- #define DQ_Write_LOW gpio_bit_set(DQ_GPIO_Port,DQ_Pin)
-
-
- #define DQ_Write_HIGH gpio_bit_reset(DQ_GPIO_Port,DQ_Pin)
-
- /*读取总线电平*/
- #define DQ_Read gpio_input_bit_get(DQ_GPIO_Port,DQ_Pin)
- //ROM指令
- #define SKIP_ROM 0xCC //跳过 ROM
- #define CONVERT_TEMP 0x44 //转换温度
- #define READ_SCRATCHPAD 0xBE //读取暂存器内容
-
- /*************************相关函数************************************************/
- void DQ_GPIO_Init(void); //初始化函数 使用时直接调用到主函数
- uint8_t Ds18b20_Init(void); //初始化函数 使用时直接调用到主函数
- float Ds18b20_Get_Temp(void); //获取温度函数,使用时直接调用
- void Temp_Check(void); //温度获取函数,直接显示并调用,用于测试
- #endif
复制代码
- #include "DS18B20.h"
- #include "systick.h"
- float Tem = 0.0;
- char Data[20] = {0};
- //温度检测函数 检测环境温度 单精度浮点型
- void Temp_Check(void)
- {
- Tem = Ds18b20_Get_Temp();
- // sprintf(Data,"%f",Tem);
- }