📘 充电宝租借终端 · 固件实战
🎒 30章 从入门到部署
01
项目概述与硬件选型
需求分析 · 系统架构 · STM32F103C8T6 · 4G/读卡器/电磁锁/电量/显示屏
➔
02
开发环境搭建
Keil MDK · CubeMX · HAL/LL库 · J-Link/SWD · 工程模板
➔
03
GPIO基础与LED控制
推挽/开漏/上拉/下拉 · 寄存器与HAL · 心跳LED · 状态指示灯
➔
04
系统时钟配置
时钟树 · HSE/LSE/PLL · CubeMX生成 · 频率验证
➔
05
UART串口通信
UART协议 · HAL_UART_Transmit/Receive · printf重定向 · 4G AT指令
➔
06
中断系统与外部中断
NVIC优先级 · EXTI配置 · 按键中断租借/归还 · 中断规范
➔
07
定时器基础与应用
Systick · TIMx配置 · PWM电磁锁 · 输入捕获触发ADC
➔
08
ADC与电量检测
ADC单次/连续 · DMA采集 · 电压换算电量百分比
➔
09
I2C通信与OLED显示
I2C时序 · HAL_I2C · SSD1306驱动 · 二维码/状态显示
➔
10
SPI通信与RFID读卡
SPI四种模式 · HAL_SPI · RC522驱动 · 读取IC卡UID
➔
11
FreeRTOS任务管理
FreeRTOS移植 · 任务创建/删除 · 优先级堆栈 · 电量/通信/显示
➔
12
FreeRTOS同步与通信
队列 · 信号量 · 事件标志组 · 多事件触发
➔
13
4G模块AT指令通信
EC200/EC600 · TCP/IP · MQTT封装 · 心跳包/断线重连
➔
14
JSON数据解析
cJSON库 · 构建租借/归还JSON · 解析服务器指令 · 异常处理
➔
15
电磁锁驱动与控制
电磁锁原理 · MOS管电路 · PWM控制 · 防误触/超时锁定
➔
16
充电仓状态检测
霍尔传感器 · TP4056读取 · 充电完成/故障 · 多仓轮询
➔
17
NFC近场通信
NFC标签读写 · ST25R3911/PN532 · 手机碰一碰租借 · 防碰撞
➔
18
低功耗设计
待机模式 · RTC唤醒 · 外设电源管理 · 实测uA级
➔
19
看门狗与系统稳定性
IWDG配置 · WWDG应用 · 死机自动复位 · 异常日志
➔
20
Bootloader与OTA升级
Bootloader原理 · Flash分区 · YModem · 跳转APP · 断点续传
➔
21
数据存储与Flash管理
内部Flash · W25Q64驱动 · 参数结构体 · 磨损均衡
➔
22
RTC实时时钟
内部RTC vs DS3231 · NTP同步 · 租借时长/超时计费
➔
23
按键与触摸输入
机械按键消抖 · 状态机 · TTP223触摸 · 组合键管理员模式
➔
24
蜂鸣器与语音提示
有源/无源蜂鸣器 · PWM音调 · SYN6288 TTS · 租借语音反馈
➔
25
Wi-Fi模块(ESP8266)备用通信
ESP8266 AT指令 · STA/AP切换 · 4G故障备用链路
➔
26
多任务调度与优先级优化
优先级调整原则 · 中断与任务冲突 · 栈使用率监控
➔
27
协议栈与数据安全
AES加密 · MD5校验 · HTTPS/TLS · 时间戳防重放
➔
28
生产测试与校准
PCBA测试工装 · 电量ADC校准 · RFID距离测试 · 老化方案
➔
29
故障诊断与日志系统
错误码ERR_CODE · 日志分级 · 串口输出 · 远程上传
➔
30
项目总结与迭代优化
常见问题复盘 · 代码重构 · 支付宝/微信支付对接
➔