当前位置: 首页 > news >正文

STM32F407ZGT6天气时钟+实时温湿度显示(附源码)

文章目录

  • 实现功能:
  • 项目展示:
  • 代码解析:

实现功能:

1.主要功能:通过485通信获取传感器温湿度,温湿度数据显示、实时时钟显示与用户交互。使用LVGL在显示屏上展示传感器温湿度数据,并提供UI设置温度、湿度的阈值和映射关系,并提供字体颜色切换
2.运行指示:系统运行时(绿灯)闪烁,超出阈值红灯闪烁,蜂鸣器长鸣
3.红外遥控:通过红外接收模块接收用户指令并控制UI
4.FLASH存储:将用户配置(阈值、字体颜色)保存在STM32F407ZGT6内部FLASH,并在开机时读取
5.数据存储与导出:按下保存按键时,保存实时温湿度数据(CSV文件),并可以通过菜单栏导出数据
6.本地升级:IAP本地升级、U盘升级
7.菜单功能:时间设置,U盘导出数据
8.按键功能:KEY_UP菜单键,KEY0切换键,KEY1确认键
9.5分钟更新一次天气
10.图标地址:icon

项目展示:

在这里插入图片描述

代码解析:

#include "main.h"FATFS fs;//任务句柄
TaskHandle_t vTaskLed_handle;
//任务函数
void vTaskLed(void *pvParameters);//任务句柄
TaskHandle_t vTaskDisplay_handle;
//任务函数
void vTaskDisplay(void *pvParameters);//任务句柄
TaskHandle_t vTaskSensor_handle;
//任务函数
void vTaskSensor(void *pvParameters);void Hardware_Init(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);		/* 设置系统中断优先级分组4 */delay_init();  										/* 延时初始化 */usart3_init(115200);								/* 初始化ESP8266串口3 */LED_Init();LCD_Init();											/* LCD初始化 */My_RTC_Init();		 								/* RTC初始化 */	RS485_Init(9600);									/* 初始化RS485串口2 */	SD_Init();											/* SD卡初始化 */f_mount(&fs,"0:",1); 								/* 挂载SD卡 */Display_Main();atk_8266_wifista_config();get_current_weather();delay_xms(500);get_3days_weather();delay_xms(500);get_beijing_time();
}int main(void)
{/* 硬件初始化 */Hardware_Init();/* 创建app_task1任务 */xTaskCreate((TaskFunction_t )vTaskLed,  		/* 任务入口函数 */(const char*    )"vTaskLed",			/* 任务名字 */(uint16_t       )256,  				/* 任务栈大小 */(void*          )NULL,				/* 任务入口函数参数 */(UBaseType_t    )1, 					/* 任务的优先级 */(TaskHandle_t*  )&vTaskLed_handle);	/* 任务控制块指针 */ /* 创建app_task2任务 */		  xTaskCreate((TaskFunction_t )vTaskDisplay,  		/* 任务入口函数 */(const char*    )"vTaskDisplay",			/* 任务名字 */(uint16_t       )256,  					/* 任务栈大小 */(void*          )NULL,					/* 任务入口函数参数 */(UBaseType_t    )2, 						/* 任务的优先级 */(TaskHandle_t*  )&vTaskDisplay_handle);	/* 任务控制块指针 */ /* 创建app_task2任务 */		  xTaskCreate((TaskFunction_t )vTaskSensor,  			/* 任务入口函数 */(const char*    )"vTaskSensor",			/* 任务名字 */(uint16_t       )256,  					/* 任务栈大小 */(void*          )NULL,					/* 任务入口函数参数 */(UBaseType_t    )3, 						/* 任务的优先级 */(TaskHandle_t*  )&vTaskSensor_handle);	/* 任务控制块指针 */ /* 开启任务调度 */vTaskStartScheduler(); while(1);}/* 任务1:LED 闪烁(优先级1) */ 
static void vTaskLed(void *pvParameters)
{while(1){if(Update_Flag == 1){get_current_weather();vTaskDelay(200);get_3days_weather();Update_Flag = 0;			}LED1=~LED1;vTaskDelay(200);}
}   
/* 任务2:显示温湿度(优先级2) */
static void vTaskDisplay(void *pvParameters)
{while(1){Display_TempHumi_Value();RTC_Show();vTaskDelay(200);}
}   
/* 任务3:485获取温湿度(优先级3) */
static void vTaskSensor(void *pvParameters)
{while(1){Get_TempHumi_Value();vTaskDelay(200);}
} 
http://www.xdnf.cn/news/1103077.html

相关文章:

  • Java结构型模式---组合模式
  • 瀚高数据库提交数据后,是否需要COMMIT(APP)
  • MyBatis 进阶:连接池、动态 SQL 与多表关联查询
  • SpringBoot 使用注解获取配置文件中的值
  • 机器学习-06(Optimization-自动调整学习率)
  • FS820R08A6P2LB——英飞凌高性能IGBT模块,驱动高效能源未来!
  • 线程通信与进程通信的区别笔记
  • Java教程:JavaWeb ---MySQL高级
  • 从语音识别到智能助手:Voice Agent 的技术进化与交互变革丨Voice Agent 学习笔记
  • Matlab裁剪降水数据:1km掩膜制作实战
  • 从Markdown到PPT:用Python打造专业演示文稿转换器
  • axios 与 fetch 的区别
  • Android 开发中插桩
  • 微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
  • Java 方法重载与类的构造器(一)
  • PDXP、UDP与HDLC协议技术解析:架构、应用与对比研究
  • NodeJs后端常用三方库汇总
  • UDP服务器的优缺点都包含哪些?
  • 森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
  • 静态路由综合配置实验报告
  • 政安晨【零基础玩转开源AI项目】ACE-Step —— 迈向音乐生成基础模型的重要一步:AI自动谱曲与自动演唱的免费开源框架部署实践
  • 林吉特危机下的技术革命:马来西亚金融系统升维作战手册
  • 2025人形机器动作捕捉技术研讨会于7月31日在京开启
  • 进制转换小题
  • 编码技术: PRBS, 8B/10B
  • 无锁队列:从零构建生产者-消费者数据结构
  • 数据结构 之 【链式二叉树】(C语言实现二叉树的前序中序后序层序遍历,节点个数、树的高度、第K层的节点个数、查找、完全二叉树的判别、销毁创建二叉树)
  • Redis5.0.5 漏洞
  • uni-app获取手机当前连接的WIFI名称
  • GIC控制器 (三)