繁体   English   中英

嵌入式 C:程序执行在 STM32 上不连续

[英]Embedded C : Program execution is not sequetial on STM32

我正在使用带有 FreeRTOS OS 的 STM32L0 微控制器上开发应用程序,在执行以下简化的线程之一时遇到了一个奇怪的问题: 在此处输入图像描述

使用GDB,我发现这个线程没有按顺序执行。 下面是执行流程:

1 ==> 2 ==> 3 ==> 4 ==> 5 ==> 6 ==> 7 ==> 3 ==> 4 ==> 5 ==> 6 ==> 7 ==> 8 = => 10 ==> 8 ==> 10这些数字指的是代码中执行的行。

我知道我没有详细分享我的源代码,但我想至少获得一些关于此类问题来源的提示。

基本信息:

  • 平台::STM32L073 MCU
  • IDE:Windows 10 上的 STM32CubeIDE

谢谢你。

C 编译器可以自由生成他们想要的任何指令序列,因为它会产生正确的结果。 特别是为了优化代码执行时间或执行速度,生成的指令可能与源代码中的语句不匹配。

如果您正在尝试调试,您可能希望禁用优化(例如 gcc/clang 中的-O0 ),因为这通常会生成与源代码相似的代码,而不是启用优化。

如果这些是内存映射的 IO 变量,则需要让编译器知道这一点。 至少,它们需要是volatile 但我认为您还需要memory 围栏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM