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

相关推荐
kebidaixu1 天前
FreeRTOS 移植到 STM32F407VETX 记录(一)
stm32·单片机·嵌入式硬件
CSDN官方博客1 天前
「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令
嵌入式硬件·物联网·embedding
半条-咸鱼1 天前
【INACCESSIBLE_BOOT_DEVICE】安装 Config Tool 后 Windows 蓝屏,最终通过 VMware 虚拟机解决
windows·stm32·vmware·芯片
点灯小铭1 天前
基于单片机的数码管定时插座设计与定时开关功能实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
云栖梦泽1 天前
玩转RK3506SDK
linux·嵌入式硬件
数智工坊1 天前
机器人四大主控板系统分层选型指南:树莓派、ESP32、STM32与Arduino的能力边界与实战定位
stm32·嵌入式硬件·机器人
某林2121 天前
跨越底层与AI的鸿沟:ROS2+多模态大模型(Qwen-VL)机器人全链路排障实录
人工智能·stm32·机器人·人机交互·ros2·技术复盘
进击的小头1 天前
第8篇:IGBT 从零到精通:核心原理、关键参数、选型指南与工业级应用要点
经验分享·嵌入式硬件·学习
点灯小铭1 天前
基于单片机的多模式智能洗衣机设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
项目題供诗1 天前
STM32-AD单通道&AD多通道(十九)
stm32·单片机·嵌入式硬件