STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印

这篇具有很好参考价值的文章主要介绍了STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、简介

2、CubeMX初始化配置

2.1 基础配置

2.1.1 SYS配置

 2.1.2 RCC配置

2.2 软件IIC引脚配置

2.3 串口外设配置

 2.4 项目生成

 3、KEIL端程序整合

3.1 串口重映射

3.2 SHT30驱动添加

3.3 主函数代

3.4 效果展示


1、简介

本文通过STM32F103C8T6单片机通过HAL库方式对SHT30传感器进行数据的读取,并通过串口来进行显示。本次通过软件IIC对SHT30传感器进行数据读取。

2、CubeMX初始化配置

2.1 基础配置

2.1.1 SYS配置

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

 2.1.2 RCC配置

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

2.2 软件IIC引脚配置

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

2.3 串口外设配置

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

 2.4 项目生成

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

 3、KEIL端程序整合

3.1 串口重映射

具体步骤:stm32(HAL库)使用printf函数打印到串口

3.2 SHT30驱动添加

首先在建立Hardware文件,添加SHT30.c如下图所示:

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

 接着对SHT30.H进行添加如下图所示: 

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

SHT30驱动链接:

SHT30 https://www.aliyundrive.com/s/QrLwn5ACDLh 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

接着在adc.h中进行函数声明,如下图所示:

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

uint16_t ADC_IN_1(void);//ADC采集程序

3.3 主函数代

首先声明变量存放温湿度数据,如下图所示:

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机接着初始化SHT3x,如下图所示:STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

最后进行数据读取打印,如下图所示:

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

所用代码(便于复制)如下:

#include "SHT3x.h"
float Temp,Hum;			//声明变量存放温湿度数据

SHT3x_Init(); //初始化SHT3x

ReadSHT3x(&Hum,&Temp);	                
printf("%f\r\n",Hum);		
printf("%f\r\n",Temp);	
HAL_Delay(500);

main.c如下所示:

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "adc.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "OLED.h"
#include "SHT3x.h"
uint8_t adc_mq2;
float Temp,Hum;			//声明变量存放温湿度数据
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  HAL_ADCEx_Calibration_Start(&hadc1);//ADC采样校准
	OLED_Init();  //初始化OLED
	SHT3x_Init(); //初始化SHT3x
	
	
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		
		ReadSHT3x(&Hum,&Temp);
		printf("%f\r\n",Hum);
		printf("%f\r\n",Temp);
		HAL_Delay(500);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

/**	
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  {
    Error_Handler();
  }
}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

3.4 效果展示

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印,嵌入式小项目,stm32,嵌入式硬件,单片机

上文如有错误,恳请各位大佬指正。文章来源地址https://www.toymoban.com/news/detail-579470.html

到了这里,关于STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SHT30温湿度传感器应用笔记

            SHT30是一款温湿度传感器,使用IIC通信接口。可根据命令设置其测量频率、测量时间;测量持续时间有三种可选(见芯片手册2.2):         HIGH:12.5ms;         medium:4.5ms;         low:2.5ms;         测量频率有五种可选:0.5次/秒、1次/秒、2次/秒、4次/秒、

    2024年02月01日
    浏览(46)
  • 常用传感器-温湿度传感器SHT30

    SHT30温湿度传感器 工作电压:2.4V-5.5V 通讯协议:IIC 湿度测量范围:0-100 温度测量范围:-40°-125° VIN:电源正极 GND:电源负极 SCL:数据线 SDA:数据线 1.加载库文件:ClosedCube_SHT31D 选择库文件:ClosedCube_SHT31D 2.连接esp mini d1和温湿度传感器 VIN和GND分别取主板5V电压 SCL和SDA分别接

    2024年02月01日
    浏览(18)
  • STM32物联网项目-SHT30温湿度采集(IIC通信)

    SHT30数字温湿度传感器 SHT3x湿度传感器系列包括低成本版本SHT30、标准版本SHT31,以及高端版本SHT35。 SHT3x湿度传感器系列结合了多种功能和各种接口(I2C、模拟电压输出),应用友好,工作电压范围宽(2.15至5.5 V),适合各类应用。 SHT3x建立在全新和优化的CMOSens® 芯片之上,

    2023年04月21日
    浏览(15)
  • 【STM32(HAL库)--DHT11温湿度传感器】

    stm32控制DHT11温湿度传感器,进行温湿度的读取.以下是自己的一点学习过程和心得,若有不妥之处,还望各位大佬指正,在下感激不尽. DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器 。 它应用专用的数字模块采集技术温湿度传感技术, 确保产品具有极高

    2024年04月15日
    浏览(26)
  • [STM32]HAL库STM32CubeMX+DHT11温湿度传感器

    目录 所用的工具: 知识概括: DHT11介绍: DHT11性能说明: 接口说明  电源引脚 串行接口   工程创建 1、设置RCC 2、时钟设置 3、项目文件设置 4、设置IO口(DATA) 5、TIM时钟配置 6、USART配置   程序编写:          1、TIM3实现微秒(us)级延时函数: 2、IO口配置 3、DHT11检测

    2024年02月09日
    浏览(19)
  • linux添加sht3x温湿度传感器驱动记录

           最近拿到一块imx6ull板子,上面有一颗温湿度传感器sht30,需要读取其数值。本人能力有限,自己写驱动还有一点困难,好在 linux内核里自带了很多器件的驱动,只需要找到相关的驱动文件根据要求修改一下设备树、添加进内核里编译就可以。         目前新版本的l

    2024年02月10日
    浏览(16)
  • I2C协议介绍以及HAL库实现I2C对SHT30温湿度采样

    (1)I2C协议简介 I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。 12C Bus(IIC, Inter-Integrated Circuit Bus)是由一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步,利用上拉电阻将它们拉成高电平(表示总

    2023年04月24日
    浏览(21)
  • Clion开发Stm32之温湿度传感器(DHT11)驱动编写

    涵盖之前文章: Clion开发STM32之HAL库GPIO宏定义封装(最新版) Clion开发stm32之微妙延迟(采用nop指令实现) Clion开发STM32之日志模块(参考RT-Thread) 头文件 源文件

    2024年02月15日
    浏览(17)
  • Clion开发Stm32之温湿度传感器(DS18B20)驱动编写和测试

    涵盖之前文章: Clion开发STM32之HAL库GPIO宏定义封装(最新版) Clion开发stm32之微妙延迟(采用nop指令实现) Clion开发STM32之日志模块(参考RT-Thread) 头文件 源文件

    2024年02月15日
    浏览(14)
  • STM32之模拟IIC总线控制SHT20温湿度芯片

    一、IIC总线概述 1、IIC总线介绍 I2C (Inter-Integrated Circuit)总线产生于在80年代, 由PHILIPS公司开发的 两线式串行总线 ,用于连接微控制器及其外围设备, 最初为音频和视频设备开发。I2C总线两线制包括: 串行数据 SDA (Serial Data)、 串行时钟 SCL (Serial Clock)。时钟线必须由主

    2024年02月02日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包