【问题标题】:Why programs on stm32 can only be debugged to run?为什么stm32上的程序只能调试运行?
【发布时间】:2019-12-15 05:52:56
【问题描述】:

我用armclang编译我的程序,程序会让板上的LED亮起来。但是当我通过st-link将程序下载到stm32f407时,LED不亮。所以我通过st-link在调试模式下运行程序, 则 LED 会亮,表示程序正在运行。

我发现程序在O3优化下可以运行,在O2优化下不能运行。

为什么?

我使用armcc构建程序,一切正常。armclang的问题还是我忽略了一些配置。

请赐教,谢谢

【问题讨论】:

  • 你有一个未定义的行为错误。
  • 没有任何代码和构建脚本我们无法解决问题
  • 奥卡姆剃刀建议你应该首先责备自己新铸造的代码,只有你自己使用,然后再责怪成千上万的专业开发人员多年来每天在实际应用程序中使用的工具!因此,为了提供帮助,我们需要查看代码,因为它不是 armclang - 而您可能已经开发了具有未定义行为的代码 - 这种行为可能会在编译器和不同的编译器选项之间发生变化。如果你有调试器,调试它——看看到底发生了什么。通常你会使用-g -O0 进行调试(在这种情况下你的代码可能会很好地工作)。

标签: c arm embedded stm32 armclang


【解决方案1】:

要在没有调试模式的板子上运行程序,你应该用黑色按钮重置板子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多