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?