STM32F103 CubeMX 使用hal库控制DS18B20

本文详细介绍了如何在STM32F103单片机上使用STM32CubeMX配置工具和hal库来控制DS18B20温度传感器,包括硬件连接、CubMX配置、main函数编写以及串口重定向,展示了获取并显示温度的基本过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬件连接

需要购买一个DS18B20的模块
代码中使用 PB5 作为信号的连接

在这里插入图片描述

cubmx配置

  1. 配置debug口
  2. 配置外部晶振
  3. 配置串口
  4. 配置PB5 作为连接的GPIO
  5. 配置时钟72M
  6. 生成代码
    在这里插入图片描述

程序编写

主要需要3断程序的编写

  1. mian函数的编写
  2. 18B20.c 函数的编写
  3. 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);
  }
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值