freertos开发空气检测仪之完结_Air_check_App 工程概览与使用说明

freertos开发空气检测仪之完结_Air_check_App 工程概览与使用说明

1. 工程是做什么的

本工程是一个运行在 GD32F303RE(Cortex‑M4)+ FreeRTOS 上的空气检测仪应用,核心能力包括:

  • 传感器采集:PM2.5(串口)、温湿度(SHT20,软件I2C)、电池电量/充电状态(ADC+GPIO)、RTC时间
  • LCD 图形界面:240×400 LCD,以"页面"方式显示主界面/详情/历史/网络等
  • WiFi 联网与上报:ESP8266(AT 指令)联网,MQTT 上报传感器数据,并通过 SNTP 对时
  • 按键交互:短按切页、长按灭屏/唤醒、在网络页双击触发 SmartConfig 配网

2. 代码总体结构(从"分层/模块"角度理解)

建议按"输入 → 设备/驱动 → 数据中心 → UI/网络"这条主链路阅读代码:

  • 入口与任务启动
    • User/main.c:设置中断优先级分组、初始化 DWT,启动 UI/监控/网络任务并启动调度器
  • 输入子系统(按键事件)
  • 设备与驱动
    • 驱动层(面向外设、引脚、协议):ModuleDrivers/
    • 设备抽象层(面向业务:Init/Read/Control):device/
  • 数据中心(共享数据汇聚)
    • data/data_center.c:监控任务 1Hz 采集并写入全局数据;UI 和网络从这里取状态/展示/上报
  • UI(页面管理 + 各页面绘制/处理)
    • ui/page_manager.c:页面管理任务,处理按键事件、切页、背光控制、配网触发
    • ui/main_page.c:主界面绘制(时间、温湿度、PM2.5、电池、WiFi图标等)
    • 字体/绘图/图片: fonts/picture/
  • 网络(ESP8266 AT 状态机 + MQTT + SNTP + SmartConfig)

3. 任务/数据流(理解运行时行为)

3.1 主要任务

  • PageMgr(UI) :处理按键事件、切页、定期刷新页面
  • Monitor(采集) :1Hz 采集 RTC/温湿度/电池/PM2.5,写入 DataCenter
  • WifiNet(联网) :AT 状态机驱动 ESP8266,连 WiFi、连 MQTT,上报数据并对时
  • KeyScan(按键扫描) :扫描 GPIO 形成输入事件(优先级通常更高,保证交互)

3.2 数据流(最常用的一条链)

  • Monitor 采集 → DataCenter_Set*() 写入共享数据
  • UI 周期 DataCenter_Get() → 绘制图标/数值/历史曲线
  • WifiNet 从传感器/或 DataCenter 获取数据 → MQTT 上报;同时根据网络状态 DataCenter_SetWifiState() 让 UI 显示连接状态

4. 硬件接口要点(方便你对照接线/原理图)

工程内已在驱动层用注释明确了一些关键引脚/外设选择:

5. 如何编译、烧录与运行

5.1 编译(Keil MDK-ARM)

  1. 用 Keil 打开工程文件:
  2. 确认器件包(DFP)已安装并选择为 GD32F303RE(工程内已配置)
  3. 直接 Build,输出文件在:
    • Project/MDK-ARM/Objects/(例如 Air_check_App.hex/.axf

5.2 烧录/调试

  • 使用 Keil 的 Download/Debug,通过 SWD(J-Link/ST-Link 等)烧录
  • 工程自带 SEGGER RTT 调试输出,可用 RTT Viewer 查看日志:

5.3 上电后的使用方式(UI 交互)

  • 短按按键:切换页面(Main/Detail/History/Network)
  • 长按释放:关闭背光(灭屏);灭屏状态短按可唤醒
  • Pomodoro 页面长按:开始/暂停/继续/重开 25:00 倒计时
  • 在 Network 页面双击 :触发 SmartConfig 配网(调用 StartSmartCfgWifi()
  • 上电时按住 K1(PC4):进入工厂测试模式(Factory Test)

更多网络页面的操作流程可参考:

6. 常用配置点(你最可能需要改的地方)

  • 测试宏开关User/air_check_device/config/app_config.h
    • 目前默认打开 LED_TEST/CORE_TIME_TESTCORE_TIME_TEST 在 main 中已有示例但被注释)
  • MQTT 参数User/air_check_device/network/wifi_app.c
    • 工程中把 MQTT 的 clientId/username/password/url/topic 作为常量硬编码
    • 建议在交付/公开前改为:编译时注入、独立配置文件、或安全下发,避免敏感信息泄露

7. 推荐阅读顺序(快速上手)

  1. User/main.c:了解任务启动
  2. ui/page_manager.c:了解 UI/按键/配网触发
  3. data/data_center.c:了解采集与共享数据
  4. network/wifi_app.c:了解联网状态机与上报

8. 工程下载

https://download.csdn.net/download/weixin_44317448/92753204

相关推荐
爱喝纯牛奶的柠檬4 小时前
基于STM32的4*4矩阵软键盘驱动
stm32·嵌入式硬件·矩阵
电子工程师成长日记-C514 小时前
51单片机低频信号发生器
单片机·嵌入式硬件·51单片机
望酹江月4 小时前
HNU-RFID与传感器原理实验
c语言·单片机
GodKK老神灭4 小时前
FOC中PLL的点乘法
单片机
逐步前行5 小时前
STM32_DMA_寄存器操作
stm32·单片机·嵌入式硬件
Funing76 小时前
无法打开 源 文件 “esp_err.h“
嵌入式硬件·esp32
Hello World . .7 小时前
51单片机基础外设:中断、定时器/计数器(PWM控制蜂鸣器、电机)
单片机·嵌入式硬件·51单片机
FakeOccupational8 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存结构图 + MPU内存保护单元 + Cache基本操作 + Cache&DMA 时序图
笔记·stm32·缓存
WangLanguager8 小时前
foc最终要求的是相电压,还是线电压
单片机