Отладка STM32 Nucleo с помощью VSCode - PullRequest
0 голосов
/ 12 апреля 2019

Я недавно купил STMicroelectronics NUCLEO-F446ZE , и я пытаюсь настроить среду сборки и отладки с использованием Visual Studio Code и создать с помощью mbed Framework .

Что я сделал:

  • Я настроил MSYS для make в Windows.

  • Я скачал gcc-avr-none-eabitoolchain

  • Я создал проект mbed с онлайн-инструментами mbed и загрузил его для использования вместе с make.

  • Я обновил ST-Ссылка прошивки на мою плату

  • Я установил USB-драйвер для Windows

  • Я установил ST-Link-Server

  • Я установил расширение cortex для vscode

Это простой код, который я пытаюсь отладить (для тестирования этоработает просто отлично)

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while (1)
    {
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is OFF
        wait(0.2); // 200 ms
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is ON
        wait(1.0); // 1 sec
    }
}

И после того как я все это сделал почти все заработало!Я могу построить, я могу прошить, и я могу даже отладить, НО символы cpp, кажется, не совпадают.

Некоторые из моих точек останова не достигнуты вообще, а с другими программа останавливается на одну строку выше или ниже требуемоголиния.Я не могу прочитать какие-либо переменные на панели «Смотреть» и не имею информации о разборке.

Вот ссылка на gif , которая показывает оба: одна точка останова игнорируется, другая останавливается нанеправильная строка.

Также, если я нажимаю F10, чтобы перешагнуть через инструкцию, выделенная строка иногда перемещается назад.

Я действительно не знаю, как исправить это раздражающее поведение.Я думаю , что у меня были похожие проблемы при отладке "обычного" кода C ++, работающего локально на моем ноутбуке (с MingW).Так что, возможно, это не имеет ничего общего со встроенной разработкой, но это общая проблема c ++ в vscode?

Редактировать:

Когда выполнение останавливается в неправильной строке, консоль отладки фактически говорит:

Breakpoint 1, main () at ../main.cpp:12
12          wait(0.2); // 200 ms

Но я установил точку останова в строке 11 в редакторе, а не в строке 12.: (

...