1. 测试目标与工具链
继第一篇完成基本的硬件设计与点亮后,我们继续用这一块自制的 STM32WBA62CIU6 Nucleo 风格评估板做第二轮进阶功能验证:
LED:确认 GPIO 方向、时钟与 HAL 工作正常;
串口:确认下载调试之外的基础 I/O 通路可用;
蓝牙 BLE:验证无线链路与官方协议栈/例程兼容性。
工具链:STM32CubeMX 生成工程 + MDK(Keil) 编译下载,SWD 用外接调试器;串口用 USB‑TTL 模块配合调试助手;手机端用 nRF Connect。
2. LED + 串口
2.1 关键代码
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ICACHE_Init();
MX_LPUART1_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
printf("Hello WBA62\r\n");
HAL_Delay(500);
}
/* USER CODE END 3 */
}我把 LED 闪烁与串口打印放在同一个 while(1) 循环里,做到“肉眼可见 + 文本可见”的双重验证。核心逻辑是每 500ms:
翻转 LED 引脚;
printf("Hello WBA62\r\n"); 输出一行。
2.2 操作步骤
CubeMX 建立工程,打开 HAL,配置系统时钟;
配置 LED 对应 GPIO 为推挽输出;
打开 LPUART1,设定波特率并生成代码;
在工程里做 printf 重定向(将 fputc / _write 指向 UART 发送);
编译下载后观察两点:LED 是否稳定闪烁、串口是否稳定输出。
2.3 实验结果
经实验LED正常闪烁,串口可稳定输出。

本章测试通过后,说明:基础时钟、GPIO、UART、下载链路都没问题,可以进入 BLE 例程验证。
3. BLE:移植官方 BLE_HeartRate 例程进行验证
3.1 为什么选 BLE_HeartRate
蓝牙配置项多、踩坑点多(射频时钟、协议栈、中间件、内存布局等)。为了提高成功率,我没有从空工程搭建,而是选用官方 STM32WBA65 的 BLE_HeartRate 例程做“可运行基线”,再移植到 WBA62。
3.2 移植方法
获取官方 BLE_HeartRate 工程并在 MDK 打开;
在 MDK 工程里修改器件型号为 STM32WBA62CIU6(尽量不动中间件与应用层逻辑);
核对启动文件/链接脚本:重点关注 Flash/RAM 大小与地址映射,保证能正常启动与运行;
编译下载,观察是否开始广播;

3.3 现象验证:nRF Connect 连接与服务浏览
下载运行后,用手机 nRF Connect 扫描到设备并连接:
能看到 Heart Rate 相关服务;
可订阅/读取特征值,证明广播、连接、GATT 服务流程正常。

4. 小结
本次测试用两个层级快速收敛风险:先用 LED+串口验证“基础外设与工程框架”,再用 BLE_HeartRate验证“协议栈与无线链路”。自制板在不带 ST‑LINK 的精简架构下仍可稳定下载、稳定打印,并可直接运行官方 BLE 例程完成手机连接,射频软硬件可以正常运行。
我要赚赏金
