STM32L-поэтапная отладка Discovery

Я использую STM32L-Discovery с STM32L152RBT6 на борту вместе с CoIDE. Я создал новый проект, выбрал микроконтроллер STM32L152RBT6 и добавил следующие компоненты:

  • C_library
  • cmsis_core (который, насколько я вижу, содержит boot)
  • 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, где она работает нормально. Эй, сообщество, у тебя есть идеи, что случилось?

1 ответ

Извините, моей репутации недостаточно, чтобы комментировать вопрос, поэтому единственный способ помочь вам - написать мой ответ в поле для ответов, хотя я полностью осознаю тот факт, что это может быть не полный ответ.

Причин такого поведения может быть несколько. К сожалению, в вашем вопросе не так много деталей, чтобы я мог дать вам прямой ответ. Неправильный выбор микро был бы моим самым первым предположением. STM32L152RBT6 - это Cortex M3, и, возможно, вы пытаетесь загрузить программу, скомпилированную для M4, на устройство семейства M3. Если вы это сделали, микроинициализация будет неправильной и может привести к неопределенному поведению.

Какие отладчики вы используете в обоих случаях? В случае платы обнаружения, я бы автоматически предположил, что вы используете встроенный STLink. А как насчет другой платы с микросхемой семейства M4?

Другие вопросы по тегам