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.pswp.cn/news/914193.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914193.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914193.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

和鯨社區深度學習基礎訓練營2025年關卡4

使用 pytorch 構建一個簡單的卷積神經網絡(CNN)模型,完成對 CIFAR-10 數據集的圖像分類任務。 直接使用 CNN 進行分類的模型性能。 提示: 數據集:CIFAR-10 網絡結構:可以使用 2-3 層卷積層,ReLU…

前端性能優化全攻略:從加載到渲染

目錄 前言網絡請求優化資源加載優化JavaScript執行優化渲染優化用戶體驗優化性能監控與分析總結 前言 隨著Web應用復雜度不斷提升,前端性能優化變得尤為重要。本文將系統性地介紹從資源加載到頁面渲染的全鏈路性能優化策略,幫助開發者構建高效、流暢的…

hiredis: 一個輕量級、高性能的 C 語言 Redis 客戶端庫

目錄 1.簡介 2.安裝和配置 2.1.源碼編譯安裝(通用方法) 2.2.包管理器安裝(特定系統) 2.3.Windows 安裝 3.常用的函數及功能 3.1.連接管理函數 3.2.命令執行函數 3.3.異步操作函數 3.4.回復處理函數 3.5.錯誤處理 3.6.…

TCP套接字

1.概念套接字是專門進行網絡間數據通信的一種文件類型,可以實現不同主機之間雙向通信,包含了需要交換的數據和通信雙方的IP地址和port端口號。2.套接字文件的創建int socket(int domain, int type, int protocol); 功能:該函數用來創建各種各…

Go語言高并發聊天室(一):架構設計與核心概念

Go語言高并發聊天室(一):架構設計與核心概念 🚀 引言 在當今互聯網時代,實時通信已成為各類應用的核心功能。從微信、QQ到各種在線協作工具,高并發聊天系統的需求無處不在。本系列文章將手把手教你使用Go語…

Java基礎:泛型

什么是泛型? 簡單來說,Java泛型是JDK 5引入的一種特性,它允許你在定義類、接口和方法時使用類型參數(Type Parameters)。這些類型參數可以在編譯時被具體的類型(如 String, Integer, MyCustomClass 等&…

RMSNorm實現

當前Qwen、Llama等系列RMSNorm實現源碼均一致。具體現實如下: class RMSNorm(nn.Module):def __init__(self, hidden_size, eps1e-6):super().__init__()self.weight nn.Parameter(torch.ones(hidden_size))self.variance_epsilon epsdef forward(self, hidden_s…

智能Agent場景實戰指南 Day 11:財務分析Agent系統開發

【智能Agent場景實戰指南 Day 11】財務分析Agent系統開發 文章標簽 AI Agent,財務分析,LLM應用,智能財務,Python開發 文章簡述 本文是"智能Agent場景實戰指南"系列第11篇,聚焦財務分析Agent系統的開發。文章深入解析如何構建一個能夠自動處理財務報表…

人工智能安全基礎復習用:可解釋性

一、可解釋性的核心作用1. 錯誤檢測與模型改進發現模型的異常行為(如過擬合、偏見),優化性能。例:醫療模型中,可解釋性幫助識別誤診原因。2. 安全與可信性關鍵領域(醫療、軍事)需透明決策&#…

Qt:QCustomPlot類介紹

QCustomPlot的核心類就是QCustomPlot類。這個類繼承自QWidget,因此可以像其他QWidget一樣使用,比如放入布局中。QCustomPlot類基本結構一個QCustomPlot對象可以包含多個圖層(通過QCPLayer表示),通常使用默認圖層。它包…

Visual Studio 2022 上使用ffmpeg

目錄 1. 添加包含目錄 2. 添加庫目錄 3. 添加依賴項 4. 添加動態庫目錄 5. 測試 在解決方案中右擊項目名稱,彈出的窗口中選擇 "屬性"。 1. 添加包含目錄 "C/C" -> "常規" -> "附加包含目錄"中添加 ffmpeg中的…

Elasticsearch 線程池

Elasticsearch 線程池「每個線程池到底采用哪種實現策略」:Elasticsearch 線程池(ThreadPool)中 **所有內置線程池名稱的常量定義**。 每個字符串常量對應一個 **線程池的名字(name)**,也就是你在 Thread…

深入理解 Next.js API 路由:構建全棧應用的終極指南

Next.js 是一個強大的 React 框架,不僅支持服務端渲染(SSR)和靜態站點生成(SSG),還提供了內置的 API 路由功能,使開發者能夠輕松構建全棧應用。傳統的全棧開發通常需要單獨搭建后端服務&#xf…

【6.1.2 漫畫分布式事務技術選型】

漫畫分布式事務技術選型 🎯 學習目標:掌握架構師核心技能——分布式事務技術選型與一致性解決方案,構建高可靠的分布式系統 🎭 第一章:分布式事務模式對比 🤔 2PC vs 3PC vs TCC vs Saga 想象分布式事務就…

液冷智算數據中心崛起,AI算力聯動PC Farm與云智算開拓新藍海(二)

從算法革新到基礎設施升級,從行業滲透到地域布局,人工智能算力正以 “規模擴張 效率提升”雙輪驅動中國數字經濟轉型。中國智能算力規模將在 2025 年突破 1000 EFLOPS,2028 年達到 2781.9 EFLOPS,五年復合增長率 46.2%&#xff0…

《QtPy:Python與Qt的完美橋梁》

QtPy 是什么 在 Python 的廣袤編程宇宙中,當涉及到圖形用戶界面(GUI)開發,Qt 框架宛如一顆璀璨的明星,散發著獨特的魅力。而 QtPy,作為 Python 與 Qt 生態系統交互中的關鍵角色,更是為開發者們開…

ubuntu環境下調試 RT-Thread

調試 RT-Thread 下載源碼 github 搜索 RT-Thread 下載源碼 安裝 python scons 環境 你已經安裝了 kconfiglib,但 scons --menuconfig 仍然提示找不到它。這種情況通常是由于 Python 環境不一致 導致的:你在一個 Python 環境中安裝了 kconfiglib&#xff…

【數據結構初階】--順序表(二)

🔥個人主頁:草莓熊Lotso 🎬作者簡介:C研發方向學習者 📖個人專欄: 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言:生活是默默的堅持,毅力是永久的…

Java中的方法傳參機制

1. 概述Java中的方法傳參機制分為兩種:值傳遞(Pass by Value) 和 引用傳遞(Pass by Reference)。然而,Java中所有的參數傳遞都是值傳遞,只不過對于對象來說,傳遞的是對象的引用地址的…

C++——this關鍵字和new關鍵字

一、this 關鍵字1. 什么是 this?this 是 C 中的一個隱式指針,它指向當前對象(即調用成員函數的對象),在成員函數內部使用,用于引用調用該函數的對象。每個類的非靜態成員函數內部都可以使用 this。使用 thi…