支线二:从 STM32 走向 CH582M 蓝牙开发
延续 C、GPIO、串口和中断知识,比较开发工具与接口,再沿事件循环、服务回调和队列,走通手机到 STM32 的双向链路。
先准备什么
主线串口、中断、无线通信与应用协议;事件处理篇会说明与 FreeRTOS 的区别。
先从能看见结果的小实验开始,遇到问题再增加代码。已学过的采样、协议与任务知识通过链接接回,项目中尚未实现的部分会明确标注。
按这条顺序学习
从 STM32 到 CH582M:哪些知识可以继续用
手表需要一颗能与手机无线通信的芯片。本项目把采集、界面和推理交给 STM32U575,把低功耗蓝牙与串口桥接交给 CH582M。先认清这两颗芯片怎样配合,再打开新的开发环境。
01 / 8 篇打开 CH 工程:编译、下载与入口
先让工程的目标、编译结果和下载对象一一对应。然后沿 main 的初始化顺序,看看蓝牙库与自己写的外设代码分别从哪里开始运行。
02 / 8 篇用熟悉的串口,接上另一颗主控
无线功能先放在一边。CH582M 与 STM32 之间仍然是已经学过的串口:发送脚接接收脚、共地,并约定相同格式。先把这一段对应清楚。
03 / 8 篇蓝牙和串口怎样共用主循环
串口能收到字节以后,为什么没有直接在中断里发送蓝牙?先看主循环每轮在做什么,再认识项目使用的事件处理方式。
04 / 8 篇手机找到的服务和特征,怎样变成代码
手机能扫描并连接,只说明无线连接已经建立。接下来还要找到“往哪里写、从哪里收”。项目用一个服务和两个特征,把这两个方向交代给手机。
05 / 8 篇手机写入之后,字节怎样到达 STM32
从一次 FFE2 写入出发,依次跟过库回调、事件回调、软件队列与串口寄存器。这里不增加新的业务协议,沿用主线的消息格式。
06 / 8 篇STM32 发出之后,怎样成为蓝牙通知
反向传输多了一项限制:串口随时可能收到字节,蓝牙通知却要满足连接、订阅和发送资源条件。沿着现有发送流程看每个缓冲区为何出现。
07 / 8 篇把蓝牙接口与应用协议逐层对上
最后把两种“协议”放在各自的位置:蓝牙库负责连接和特征访问,应用协议说明这些字节代表什么。用一份实际电量消息,从主控一直追踪到手机显示。
怎样接回项目
阅读 当前模块说明,把本支线的小实验与现有数据路径逐项对应。示例按页内说明放置,不用整段替换生产工程。
练习与资料
所有样式、图解与交互随教程提供;外部官方资料和项目源码链接需要联网。配套实验见 tutorial/examples/branches 与 tutorial/examples/flutter_watch。