硬件连接
需要购买一个DS18B20的模块
代码中使用 PB5 作为信号的连接
cubmx配置
- 配置debug口
- 配置外部晶振
- 配置串口
- 配置PB5 作为连接的GPIO
- 配置时钟72M
- 生成代码
程序编写
主要需要3断程序的编写
- mian函数的编写
- 18B20.c 函数的编写
- 18B20.h 函数的编写
main函数的编写
添加18b20 头文件
/* USER CODE BEGIN Includes */
#include "18b20.h"
/* USER CODE END Includes */
添加串口重定向
/* USER CODE BEGIN PV */
#include <stdio.h>
//重定向c库函数printf到串口USARTx,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口USARTx */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return (ch);
}
/* USER CODE END PV */
添加下面main函数的编写信息,
进行了一个初始化,如果不成功就报错,成功的话就继续
while中的代码就是读取温度信息,然后就直接显示出来就好了
int main(void)
{
/* USER CODE BEGIN 1 */
float temperature = 0;
/* USER CODE END 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
//等待成功初始化
while(DS18B20_Init())
{
printf("DS18B20 checked failed!!!\r\n");
HAL_Delay(500);
}
printf("DS18B20 checked success!!!\r\n");
while (1)
{
temperature = DS18B20_Get_Temperature();
if(temperature < 0)
printf("temperature = -%.2f degree\r\n",temperature/10);
else
printf("temperature = %.2f degree\r\n",temperature/10);
HAL_Delay(200);
}