WukiSong 2024-10-12 19:19 采纳率: 0%
浏览 450

32单片机程序只在debug模式下运行,正常启动不运行。

CUBEMX生成的工程只能在debug模式下运行,烧录进去复位后不运行

img


这是工程原理图。BOOT0也接地了。
有一点需要注意的时点debug的一开始会弹到启动文件里,如图,是卡在systeminit里面了吗?

img

img


代码也是很简单的只有串口传输测试这一点。网上说的什么勾选micro lib还有魔术棒的设置问题,reset and run我也试过了 没有用
恳请各位解答

  • 写回答

1条回答 默认 最新

  • 香格里辣 2024-10-12 19:20
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    首先,让我们理解你的问题:为什么在调试模式下,32 单片机程序会在复位后不执行。

    解决方案:

    1. 检查硬件连接: 确保 BOOT0、VCC 和 GND 接触良好,并且所有引脚都正确地接线。特别注意 RESET 和 NRST 的连接。

    2. 检查软件环境

      • 在编译阶段,确保设置了正确的库(比如 CUBEMX)并正确引用了相关头文件。
      • 验证工程中的 main.c 文件是否正确包含了 startup_stm321081xx.sSystemInit 函数。
      • 确认 main.c 中的代码段是完整的,并且没有语法错误。
      • 确保系统初始化函数调用了正确的 SystemInit 函数。
    3. 查看复位过程

      • 当复位时,可能会触发中断,导致程序被中断处理。确认是否有异常中断请求,或者尝试在复位前断点跳转至 SystemInit 函数。
    4. 检查外部设备

      • 如果有外部设备(如 USB 或 I/O 设备),确保它们在复位过程中能正常工作。检查这些设备的复位逻辑,以及如何处理复位信号。
    5. 检查内存布局

      • 确保 RAM 和闪存区域之间没有冲突。检查是否存在可能影响程序执行的内存泄漏或溢出问题。
    6. 代码审查

      • 对于 main.c 进行全面的代码审查,特别是检查循环、条件语句和其他关键部分,以寻找潜在的问题。

    注意事项:

    • 如果上述步骤都无法解决问题,建议提供详细的代码片段和更具体的信息以便进行深入分析。
    • 使用专业的编程工具(如 Quartus II、ISE 或 Keil uVision)可以帮助定位和解决特定问题。

    通过以上方法,你应该能够找出并修复导致复位后程序不执行的原因。如果有任何疑问或需要进一步的帮助,请随时提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 10月12日