ds18b20温度传感器stm32的初始化代码
时间: 2023-10-01 20:09:41 浏览: 105
基于STM32的温度传感器代码
很好的问题!以下是基于STM32的DS18B20温度传感器的初始化代码:
1.首先,我们需要定义以下参数:
#define DWT_CYCCNT (*(volatile uint32_t *)0xE0001004) //用于实现Delay_us延迟的参数
#define DWT_CONTROL (*(volatile uint32_t *)0xE0001000) //用于实现Delay_us延迟的参数
#define DWT_CYCCNTENA_BIT (1 << 0) //用于实现Delay_us延迟的参数
#define DS18B20_GPIO_PORT GPIOB //DS18B20连接到这个端口
#define DS18B20_GPIO_PIN GPIO_Pin_6 //DS18B20连接到这个引脚
#define DS18B20_GPIO_CLK RCC_APB2Periph_GPIOB //DS18B20 GPIO_CLK
#define DS18B20_DQ_OUT_HIGH() GPIO_SetBits(DS18B20_GPIO_PORT,DS18B20_GPIO_PIN) //DS18B20 数据线输出高电平
#define DS18B20_DQ_OUT_LOW() GPIO_ResetBits(DS18B20_GPIO_PORT,DS18B20_GPIO_PIN) //DS18B20 数据线输出低电平
#define DS18B20_DQ_IN() GPIO_ReadInputDataBit(DS18B20_GPIO_PORT,DS18B20_GPIO_PIN) //读取DS18B20数据线的输入值
#define DS18B20_SKIP_ROM 0xCC //跳过ROM快
#define DS18B20_CONVERT_TEMP 0x44 //温度转换命令
#define DS18B20_READ_SCRATCHPAD 0xBE //读取Scratchpad命令
2.初始化GPIO引脚:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(DS18B20_GPIO_CLK, ENABLE); //打开DS18B20的时钟
//配置GPIO引脚
GPIO_InitStructure.GPIO_Pin = DS18B20_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_Init(DS18B20_GPIO_PORT, &GPIO_InitStructure);
3.初始化延迟参数:
//初始化延时
DWT_CONTROL|= DWT_CYCCNTENA_BIT; //打开Cortex-M3的计数器功能
DWT_CYCCNT = 0; //重置计数器为0
4.初始化命令:
//初始化DS18B20
DS18B20_Reset();
DS18B20_Write_Byte(DS18B20_SKIP_ROM); //发送指令,跳过ROM阶段
DS18B20_Write_Byte(DS18B20_CONVERT_TEMP); //发送温度转换指令
5.完成初始化后,接下来需要从DS18B20获取温度值。关于读取温度值的代码,你可以参考这篇文章:
https://blog.csdn.net/fz493757/article/details/91804692
希望这个代码片段对你有所帮助!
阅读全文