1

我正在使用带有 CoIDE 的板载 STM32L152RBT6 的 STM32L-Discovery。我创建了新项目,选择了 STM32L152RBT6 微控制器并添加了以下组件:

  • C_library
  • cmsis_core(据我所知,它包含引导)
  • STM32L152xB_CUBELIB

现在我正在尝试对这个非常简单的代码进行逐步调试:

int main(void)
{
    int var1 = 1;
    int var2 = 2;

    while(1)
    {
        var1 = var1+1;
        var2 = var2*var1; // breakpoint here
    }
}

它编译、加载,但在逐步调试时,编译器会省略代码行。当从断点运行到断点时,程序的行为完全疯狂,var1 和 var2 的值似乎是随机的。编译器工具链:GNU Tools ARM Embedded 4.9 2015q2

我有另一块带有 STM32F4xx uC 的板,它工作正常。嘿,社区,你有什么想法吗?

4

1 回答 1

0

抱歉,我的声誉不足以对问题发表评论,因此帮助您的唯一方法是在答案框中写下我的回复,尽管我完全清楚这可能不是一个完整的答案。

这种行为可能有几个原因。不幸的是,您的问题中没有太多细节让我给您一个直接的答案。错误的微选择将是我的第一个猜测。STM32L152RBT6 是 Cortex M3,也许您正在尝试将针对 M4 编译的程序加载到 M3 系列设备。如果你这样做了,微初始化将是错误的,并可能导致一些未定义的行为。

您在这两种情况下使用的调试器是什么?在发现板的情况下,我会自动假设您使用的是内置的 STLink。另一块有 M4 系列微的主板呢?

于 2015-09-13T10:01:27.297 回答