基本应用案例
在XMF07A或XMF07C开发板上,利用STM32CubeMX和Keil5协同开发,完成对GM06模块上温湿度传感器SHT10的数据读取,并在OLED屏上显示出来,每进行一次温湿度传感器的数据读取,LED2灯翻转一下。
SHT10的SCK引脚——>PB6
SHT10的SDA引脚——>PB7

基于STM32CubeMX的OLED底层驱动下载:
百度网盘链接,提取码:jlap
基于STM32CubeMX的SHT10底层驱动下载:
百度网盘链接,提取码:pnay
XMF07A 普及版:淘宝购买链接。
XMF07C 普及版:淘宝购买链接。
GM06温湿度传感器模块:淘宝购买链接。
关键源码分析
首先进行OLED屏和SHT10底层驱动文件的移植工作:
【1】将两个外围模块的相关驱动文件全部拷贝到main.c所在的文件夹src。
【2】用keil打开工程,将两个外围模块驱动中的.c文件添加到工程里面。
//引入OLED屏和SHT10的相关头文件
#include "XMF_OLED_STM32Cube.h"
#include "XMF_SHT10_STM32Cube.h"
#include "stdio.h"
//定义相关变量
extern unsigned char BMP1[]; //系统开机显示LOGO画面
uint16_t sht10_tem = 0; //温度数据
uint16_t sht10_hum = 0; //湿度数据
uint8_t str_buff[64]; //字符串格式和缓冲区
//系统开机界面显示函数
void OLED_display_pic()
{
OLED_Clear();
OLED_DrawBMP(0,0,128,8,BMP1);
}
//静态信息显示函数
void OLED_display_info()
{
OLED_Clear();
OLED_ShowString(8,0,(uint8_t *)"www.xmf393.com");
HAL_Delay(250);
OLED_ShowCHinese(0,3,6); //温
OLED_ShowCHinese(20,3,8); //度
OLED_ShowString(40,3,(uint8_t *)":"); //:
HAL_Delay(250);
OLED_ShowCHinese(0,6,7); //湿
OLED_ShowCHinese(20,6,8); //度
OLED_ShowString(40,6,(uint8_t *)":"); //:
HAL_Delay(250);
}
//动态数据刷新函数
void OLED_display_sht10()
{
call_sht11(&sht10_tem, &sht10_hum); //读取SHT10的温湿度
sprintf((char *)str_buff,"%d C",sht10_tem);
OLED_ShowString(54,3,(uint8_t *)str_buff);
sprintf((char *)str_buff,"%d %%",sht10_hum);
OLED_ShowString(54,6,(uint8_t *)str_buff);
}
//在mian()函数中添加以下代码:
/* USER CODE BEGIN 2 */
OLED_Init(); //初始化OLED屏
OLED_display_pic(); //显示开机画面
hal_temHumInit(); //初始化温湿度传感器
HAL_Delay(300); //延时0.3秒
OLED_display_info(); //显示静态信息
/* USER CODE END 2 */
while(1)
{
OLED_display_sht10(); //读取温湿度传感器数据并刷新
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8); //LED2灯翻转
}
