SMARTWATCH 学习手册有 C 基础 · 嵌入式从零开始
支线二 / CH582M 开发与蓝牙桥接 / 01

打开 CH 工程:编译、下载与入口

先让工程的目标、编译结果和下载对象一一对应。然后沿 main 的初始化顺序,看看蓝牙库与自己写的外设代码分别从哪里开始运行。

接续上一篇:从 STM32 到 CH582M:哪些知识可以继续用

1 · 先准备能编译这颗芯片的工具

本项目 CH 工程使用 MounRiver Studio 2。集成开发环境把编辑、编译、链接和下载入口放在一起;真正生成机器码的是配套的 RISC-V 工具链。下载器则负责把固件写入目标芯片。三者的用途不同。

从仓库 firmware/ch582m 导入现有工程。按模块 README 配置配套工具,执行 Build,先解决第一个编译错误。不要在另一个芯片的空模板里只复制 Main.c;工程还依赖启动、链接和蓝牙库配置。官方完整资料可从本篇末尾入口获取,下载时核对 CH582 的型号与封装。

2 · 编译成功之后查看什么

工程配置来自 .cproject,生成文件位于 obj。ELF 保存程序、地址和调试信息;HEX 是另一种带地址的下载文件。比较固件时要记录使用的代码版本和工程配置,不能只看两个文件名字一样。

命令参考 · 首次 IDE 构建生成 obj 后,在 CH 工程目录执行

make -C obj -j8 all

如果命令行找不到 make 或编译器,应补齐 MounRiver 配套工具路径。构建输出中的 FLASH、RAM 占用用于检查容量,先不要据此改动链接脚本。生成目录属于本地构建结果。

3 · 下载必须对准 CH582M

项目说明采用兼容的 WCH-LinkE 下载方式。先核对目标供电、公共地、调试连接与芯片选择,再执行下载。板上另有 STM32,它的下载接口与程序文件需要分别管理。不要因为接口也只有几根线,就假定 STM32 下载器与 CH 下载配置可以互换。

出现 WLink Open Error,先看电脑是否识别下载器,再看目标访问是否正常;编译成功并不能排除下载连接的问题。具体引脚位置要对照本板原理图和芯片手册的对应封装。

4 · main 中的顺序在准备什么

项目 main 中的调用顺序 · 只读对照

SetSysClock(CLK_SOURCE_PLL_60MHz);
CH58X_BLEInit();
HAL_Init();
GAPRole_PeripheralInit();
Peripheral_Init();
app_uart_init();
Main_Circulation();

先选择系统时钟,初始化蓝牙库与配套硬件,再建立蓝牙外设角色、应用服务和串口,最后进入循环。这里的“外设角色”是指等待手机扫描、连接的一端,和“某个 UART 硬件外设”不是同一个用法。

代码使用 60 MHz 时钟选项是当前工程事实;换库版本或时钟方案前,要按对应版本手册核对运行条件,不能从其他型号的规格表直接推断。

5 · 把第一次验证限定在启动

动手观察

先保留工程默认功能:确认生成文件的修改时间,再下载并观察手机能否扫描到 SmartWatch。分别记录“已编译”“已下载”“能被扫描”,不要把这三项合并成一句“蓝牙已经通了”。扫描成功后,下一篇单独核对串口。

本教程没有在阅读时执行下载。这里的步骤用于实际设备练习;电脑上阅读源码只能确认调用关系。

资料与代码