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/监控/网络任务并启动调度器
- 输入子系统(按键事件)
- input/gpio_key.c:按键扫描任务,生成事件
- input/input_buffer.c、input/input_system.c:事件队列/设备注册
- 设备与驱动
- 驱动层(面向外设、引脚、协议):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)
- network/wifi_app.c:网络任务主体(检查模块→检查联网→连MQTT→周期上报→SmartConfig)
- ModuleDrivers/wifi_drv.c:AT 指令收发与硬复位
3. 任务/数据流(理解运行时行为)
3.1 主要任务
- PageMgr(UI) :处理按键事件、切页、定期刷新页面
- 入口:
PageManager_Start()→vTaskPageManager()(ui/page_manager.c)
- 入口:
- Monitor(采集) :1Hz 采集 RTC/温湿度/电池/PM2.5,写入 DataCenter
- 入口:
MonitorTask_Start()→vTaskMonitor()(data/data_center.c)
- 入口:
- WifiNet(联网) :AT 状态机驱动 ESP8266,连 WiFi、连 MQTT,上报数据并对时
- 入口:
WifiNetwork_Start()→WifiNetworkTaskBody()(network/wifi_app.c)
- 入口:
- KeyScan(按键扫描) :扫描 GPIO 形成输入事件(优先级通常更高,保证交互)
- 入口:
GPIOKeyInit()(input/gpio_key.c)
- 入口:
3.2 数据流(最常用的一条链)
- Monitor 采集 →
DataCenter_Set*()写入共享数据 - UI 周期
DataCenter_Get()→ 绘制图标/数值/历史曲线 - WifiNet 从传感器/或 DataCenter 获取数据 → MQTT 上报;同时根据网络状态
DataCenter_SetWifiState()让 UI 显示连接状态
4. 硬件接口要点(方便你对照接线/原理图)
工程内已在驱动层用注释明确了一些关键引脚/外设选择:
- 温湿度(SHT20,Soft I2C) :PA4(SDA)、PA5(SCL)
- WiFi 模块(ESP8266,USART1) :PA2(TX)、PA3(RX),复位脚 PA7
- PM2.5 传感器(USART0,9600bps) :串口协议头 0x42 0x4D(常见 PMS 系列协议)
- K1 按键(工厂测试入口) :启动时检测 GPIOC PIN4 低电平进入 Factory Test
- LCD :240×400,设备名
lcd_240x400,无完整帧缓冲,直接写硬件
5. 如何编译、烧录与运行
5.1 编译(Keil MDK-ARM)
- 用 Keil 打开工程文件:
- 确认器件包(DFP)已安装并选择为
GD32F303RE(工程内已配置) - 直接 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_TEST(CORE_TIME_TEST在 main 中已有示例但被注释)
- 目前默认打开
- MQTT 参数 :
User/air_check_device/network/wifi_app.c- 工程中把 MQTT 的
clientId/username/password/url/topic作为常量硬编码 - 建议在交付/公开前改为:编译时注入、独立配置文件、或安全下发,避免敏感信息泄露
- 工程中把 MQTT 的
7. 推荐阅读顺序(快速上手)
- User/main.c:了解任务启动
- ui/page_manager.c:了解 UI/按键/配网触发
- data/data_center.c:了解采集与共享数据
- network/wifi_app.c:了解联网状态机与上报