# Программная часть проекта ### Кроме cmsis и xpintf.h всё написано руками. Код в процессе, нужно много дописывать и переписывать. Архитектура прошивки крайне проста, после инициализации мы попадаем в бесконечный цикл где обрабатываем модас трафик, производим измерения, и т.д. uart и i2c работают по DMA и не блокируют цикл. Все временные интервалы измеряются о системному таймеру. Система сборки поддерживает разные сценарии: ``` make all #сборка прошивки make check #пройти статическим анализатором make doc #собрать doxygen make test #сборка тестов make flash #записать прошивку make gdb #запуск отладчика ``` Структура проекта: ``` . ├── Makefile - ссылается на файлы в ./tools/makefiles ├── src │ ├── core - cmsis, ld, startup │ ├── lib - код в котором нет обращения к регистрам │ ├── plib - код в отором идёт работа с регистрами │ └── main.c - main прошики ├── src_tests │ ├── tests - тесты │ ├── mock_file - обёртки для тестов │ └── main.cpp - main тестов └── tools ├── cppcheck_conf - файлы статического анализатора ├── dockerfile - для запуска в контейнере ├── doxygen_conf - настройки для doxygen ├── Jenkinsfile - попытка в CI-CD └── makefiles ├── mc_firmware.mk - сборка прошивка ├── settings.mk - все настройки, ключи файлы, директории └── utests.mk - сборка тестов ```