
前言 某客户反应说他们做回来的板子测试发现程序上电就跑飞了,下载都正常。检查了一个礼拜都不知道哪里出了问题,感觉无从下手。 一 问题排查 1.1 检查电路板 排除虚焊漏焊现象,查看晶体起震波形正常,查看 BOOT 引脚配置正常。 1.2 检查软件代码 客户使用了老的标准库,反应说代码在别的板子上验证过,运行正常。 1.3 IDE 检查 客户使用 KEIL MDK V5.X 版本,下载代码正常,连接 ST-LINK/v2 仿真 DEBUG, 程序跑飞。停在了一段空白的地址空间中。 二 测试流程 2.1 编写测试代码 在老版本的标准库的基础上,做了一个 LED 闪烁的 DEMO 程序,方便直观的观察现象。测试后,问题同样,代码跑飞。 2.2 重新梳理工程 在 STM32Cube 架构上重新新建工程,确认发现客户使用的晶体频率已经超过了 16MHz 的上限马上更换一个合适的晶体后并修改时钟驱动代码后,程序运行正常。LED 开始稳定闪烁。 ![]() 三 小结 虽然很多工程师已经很熟悉老的标准库的使用,但还是应该推荐客户选择使用 STM32Cube 来进行开发,这样这个问题在一开始就会避免。 |