先让实体行为稳定
按键触发 LD4,软件去抖避免一次按压产生多个事件;定时器提供心跳;空闲时由 WFI 等待中断,避免无意义忙等。
- 短按、长按与抖动输入能区分。
- 周期心跳让设备是否仍运行可见。
- 唤醒后不会丢失状态或重复执行动作。
CUMULATIVE PROJECT · CHAPTER 4–12
不是每章重新写一个小程序。这里用同一块 NUCLEO-G071RB 从按键、LED 和时间开始,逐步加入采样、串口协议、RTOS 与 ESP32 网关。每次只增加一项能力,同时保留已经验证过的行为。
telemetry-v1。主机脚本可帮助检查格式,但 LED、串口、ADC 与无线行为仍要在实际板卡上观察。MILESTONE MAP
完成一个里程碑后,先确认旧行为仍在,再进入下一个模块。这样问题出现时,才能判断是新增功能造成的,还是已有边界被破坏。
按键触发 LD4,软件去抖避免一次按压产生多个事件;定时器提供心跳;空闲时由 WFI 等待中断,避免无意义忙等。
UART 接受有限命令,ADC1/PA0 提供采样值,协议用版本、字段和错误计数把有效输入与坏输入分开。
STATUS 显示当前状态和运行时间。telemetry-v1。FreeRTOS 将采样与 I/O 分成任务,通过队列交接数据;诊断出口给出 uptime、队列状态和接收错误,帮助把卡顿与错误输入区分开。
ESP32 从串口接收完整帧,作为网关建立实验 SoftAP,并提供健康检查与最近一次遥测;它不替代 MCU 的采样和实时控制职责。
GET /health 显示网关是否收到有效帧。GET /telemetry 返回最后一帧遥测数据。WHAT TO VERIFY
只要换了接线、版本或协议字段,就从受影响的行重新检查。串口“能连上”不等于设备已经按预期工作。
| 阶段 | 可观察输出 | 出现异常时先检查 |
|---|---|---|
| GPIO 与时间 | LED 状态、心跳周期、按键事件 | 引脚映射、上拉下拉、去抖窗口与时钟配置 |
| 串口与采样 | 命令回应、ADC 读数、错误计数 | 波特率、换行、ADC 通道、输入电压范围 |
| RTOS | 任务健康输出、队列计数、超时记录 | 优先级、阻塞时间、共享数据与栈余量 |
| ESP32 网关 | /health 与 /telemetry 响应 | 完整帧边界、Wi-Fi 客户端地址与网关日志 |
PROJECT HANDOFF
完成第 12 章后,你可以保留这份工程作为模板;新增传感器或协议时,先写清输入、状态、输出和恢复方式,再开始改代码。