Debugging STM32L发现分步调试

Debugging STM32L发现分步调试,debugging,initialization,stm32,discovery,coocox,Debugging,Initialization,Stm32,Discovery,Coocox,我正在使用STM32L Discovery和带CoIDE的STM32L152RBT6。我创建了新项目,选择了STM32L152RBT6微控制器,并添加了以下组件: 大学图书馆 cmsis_内核(据我所知,它包含引导) STM32L152xB_CUBELIB 现在,我正在尝试对这段非常简单的代码进行逐步调试: int main(void) { int var1 = 1; int var2 = 2; while(1) { var1 = var1+

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

  • 大学图书馆
  • cmsis_内核(据我所知,它包含引导)
  • STM32L152xB_CUBELIB
现在,我正在尝试对这段非常简单的代码进行逐步调试:

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

    while(1)
    {
        var1 = var1+1;
        var2 = var2*var1; // breakpoint here
    }
}
它编译、加载,但在一步一步地调试时,编译器会删除它的代码行。当从一个断点运行到另一个断点时,程序的行为完全疯狂,var1和var2的值似乎是随机的。 编译器工具链:GNU工具ARM嵌入式4.9 2015q2

我有另一块STM32F4xx uC板,在那里工作正常。
嘿,社区,你知道怎么回事吗?

对不起,我的名声不足以对一个问题发表评论,所以唯一能帮助你的方法就是在答案框中写下我的回答,尽管我完全知道这可能不是一个完整的答案

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


您在这两种情况下使用的调试器是什么?对于discovery board,我会自动假定您正在使用内置STLink。另一块有M4系列micro的板呢

对不起,我的声誉不足以对一个问题发表评论,所以唯一能帮助你的方法就是在答案框中写下我的回答,尽管我完全知道这可能不是一个完整的答案

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


您在这两种情况下使用的调试器是什么?对于discovery board,我会自动假定您正在使用内置STLink。另一块有M4系列micro的板呢

看起来您选择了错误的MCU且初始化无法正常工作看起来您选择了错误的MCU且初始化无法正常工作