# Обзор `ExtendedLibs` ExtendedLibs - это набор библиотек для удобной работы с STM32. Данный субмодуль подключается напрямую из Git и содержит набор вспомогательных библиотек для работы МК, в частности STM32 и SEGGER RTT. ## Основные возможности #### Общие утилиты MyLibs (@ref MYLIBS_TOOLS) - Макросы для задержек (@ref DELAYS_DEFINES) - Утилиты для работы с всяким (@ref UTILS_DEFINES) - Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES) #### Отладка* (@ref MYLIBS_DEBUG_TOOLS) - Трассировка (@ref TRACE) - Измерение временных интервалов (@ref BENCH_TIME) - Генетический алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER) - Трекеры для статистики и отладки (@ref TRACKERS) _*Модули отладки независимы от MyLibs и могут быть использованы отдельно_ ## Структура библиотеки *Note: Файлы начинающиеся с `__` и которых нет в этом дереве являются **внутренними/непротестированными/недокументированными*** ``` ProjectRoot/ ├── MyLibs/ # Общие библиотеки, независимые от платформы (или почти) │ ├── inc/ │ │ ├── __mylibs_include.h # Главный include файл │ │ ├── __mylibs_config.h # Конфигурация библиотек │ │ ├── mylibs_defs.h # Общие определения и макросы │ │ ├── bit_access.h # Битовый доступ к регистрам │ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм) │ │ ├── trackers.h # Трекеры для отладки │ │ └── trace.h # Трассировка и логирование │ └── src/ │ └──RTT # Библиотека RTT ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT ├── SEGGER_RTT.c # Основной модуль RTT ├── SEGGER_RTT.h # Основной заголовок RTT ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M └── SEGGER_RTT_printf.c # Реализация printf() через RTT ``` ## Инструкция по подключению 1. **Склонируйте субмодуль** в ваш проект: ```bash git submodule add https://git.arktika.cyou/Razvalyaev/STM32_ExtendedLibs path/to/ExtendedLibs git submodule update --init --recursive ``` 2. **Скопируйте файлы конфигурации и главный include** в отдельную папку в вашем проекте (вне субмодуля) и удалите `__`: ``` ProjectRoot/ ├── Configs/ │ ├── mylibs_include.h │ └── mylibs_config.h │ └── SEGGER_RTT_Conf.h ``` 3. **Настройте конфигурацию** под ваш проект: * `mylibs_config.h` — задайте нужные параметры библиотек. * `mylibs_include.h` — укажите пути к вашим заголовочным файлам и подключаемым модулям. * `SEGGER_RTT_Conf.h` — настройки RTT. 4. **Подключайте библиотеки в вашем коде** через главный include файл: ```c #include "mylibs_include.h" ``` 5. **Обновление библиотеки**: После обновления субмодуля из Git, исходные файлы библиотеки будут обновлены, но ваши конфиги останутся в целевой папке и не перезапишутся: ```bash git submodule update --remote ```