能烧录但是程序跑不起来

📅 2026/7/8 5:32:03 👁️ 阅读次数 📝 编程学习
能烧录但是程序跑不起来

核心排查清单(按优先级排序)
‌BOOT 引脚电平错误‌:确认非调试状态下 ‌BOOT0 接地(0V)‌,BOOT1 悬空或接地;若 BOOT0=1,芯片将从系统存储器启动而非 Flash,导致程序不执行 。
‌复位电路失效‌:检查 NRST 引脚是否有稳定高电平(>2.0V),上电复位脉宽是否足够(建议>50ms);复位时间过短会导致栈指针加载失败,CPU 跑飞 。
‌时钟配置死锁‌:代码中 SystemClock_Config 等待外部晶振(HSE)起振但晶振未工作,导致程序卡死在 while 循环;尝试临时切换为内部时钟(HSI)验证 。
‌Keil 关键配置缺失‌:若使用 printf 但未勾选 ‌"Use MicroLIB"‌,程序会因半主机模式(Semihosting)依赖调试器而卡死;同时检查 ‌"Reset and Run"‌ 是否勾选,确保烧录后自动复位 。
‌启动文件与向量表不匹配‌:确认工程引用的 startup_xxx.s 文件与芯片型号一致,且链接脚本中 Flash 起始地址(通常为 0x08000000)正确,否则 PC 指针无法跳转至 Reset_Handler 。‌‌