Переносим разработку в GIT

Добрый день.
Сегодня продолжим усложнять рабочее окружение, так как того, что мы настроили в первом занятии не достаточно для удобной разработки.
В первую очередь - введём правило: все разработки нам необходимо хранить в системе контроля версий.
Я для себя выбрал git.


Этот механизм очень сильно поможет нам на этапе знакомства с тем, какой именно и где код генерирует cubeMX.
Во вторую очередь - научимся смотреть значения переменных во время выполнения программы, без её остановки, либо пошаговой отладки.

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

Для своих нужд, я развернул локальный сервер Gitea по адресу 192.168.0.103:3000

Давайте зарегистрируемся там, и создадим новый проект, с использованием системы контроля версий.

Так как мы пока что изучили как поморгать светодиодом, то и суть проекта будет предельно проста:

Необходимо 2 раза "моргнуть" красным светодиодом, затем 2 раза - обоими синими, после чего зажечь жёлтый на 3 секунды.
После трёх циклов описанных выше - необходимо потушить все светодиоды на 10 секунд.
Под словом "моргнуть" - подразумевается зажечь светодиод на 100 милисекунд - что составляет 0,1 сек. Gосле чего потушить его на тот же промежуток времени.

На этом теория закончена - переходим к практике.

Идём регистрируемся.

Создаём новый репозиторий. Назовём его LedBlinking. Укажем какой шаблон gitignore использовать.
После чего нажимаем создать. Далее - клонируем его в VisualStudioCode.
Ожидаемо получаем ошибку. Git на компьютере еще не установлен. Исправляем это недоразумение.
Скачиваем и устанавливаем Git. При установке единственное что меняю - устанавливаю редактор по умолчанию для git - VSCode.

Как обычно - после установки новой программы - перезагружаемся, иначе половина действий будут выдавать ошибку.

После чего возвращаемся в Gitea, и клонируем проект в VSCode.
В открывшемся окне указываем директорию, в которой будем хранить все наши проекты.
Далее - соглашаемся с запросом безопасности.
Первая часть - готова. Далее создаём новый проект при помощи CubeMX.
Включаем отладку по Serial Wire, и назначаем выводы, к которым подключены светодиоды на выход.
Даём им осмысленные имена. После чего переходим на вкладку project manager. Имя проекта задаем то же, что и указали в Git. Папка - тоже. Ну и toolchain указываем CMake.
После чего генерируем код.

Прежде чем что либо менять, предлагаю открыть вкладку Git, и сохранить сгенерированный проект на сервере.
Для этого нажимаем в открывшейся вкладке commit. Пока что не будем рассматривать что именно за файлы у нас получились. Опять ошибка.
На этот раз Git ругается что мы ему не представились.
Исправим это, выполнив то, что от нас просят в консоли, благо она расположена у нас тут под боком.

Выполняем..

После чего опять делаем commit.
Обязательно указываем комментарий к нашей версии. В нашем случае это будет first commit, и подтверждаем.
В результате этих действий - всё, что у нас сейчас есть - сохранилось локально, то есть, создалась новая версия, и появилась возможность отправить эти данные на сервер.

Пока не будем это делать.

Чуть не забыл, нам же еще необходимо в VSCode испортировать созданный в CubeMX проект.
Для этого открываем вкладку STM32, и импортируем проект.
После импорта - идём в систему контроля версий, и соммитим изменения. Заодно видим что при импорте проекта на самом деле меняется всего 3 файла. При желании можно будет подробнее посмотреть что это за файлы.

Давайте всё таки реализуем наш алгоритм по морганию светодиодами.
Для этого открываем файл main.c, и найдя там бесконечный цикл - запрограммируем там требуемое.

А вот собственно и про что написано в рекомендациях STMicroElectronics. Открывать импортированные проекты необходимо в новом окне. По этому перезапустим VSCode.
После перезапуска - проблема ушла, мы можем использовать uint8_t.

Посмотрим что из этого получилось, запускаем отладку.

Отлично - работает как и задумано. Теперь внесённые изменения мы можем сохранить в системе контроля версий, и отправить на сервер.
Как это сделать мы уже разобрали, Открываем, сохраняем, синхронизируем.
Далее идём в браузер, и смотрим что же нам прилетело.

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

И тут очень удобно можно рассмотреть какой именно файл менялся, и какие строки были изменены.
Это свойство системы контроля версий очень сильно облегчит нам жизнь. Когда мы при помощи CubeMX будем генерировать код, то очень быстро сможем находить что именно меняется.
Так же - это позволяет вести разработку со множества компьютеров, так как благодаря gitignore от кода отбрасывается всё лишнее, что создаётся средой разработки, и мешаем переносимости кода.

Помимо работы с git, я хотел еще рассмотреть работу с CubeMonitor, но отложу это до следующего видео.
Не хочется делать ролик на пол часа, по итогам которого и сам запутаюсь, и объяснить ничего не получится.