/** ************************************************************************** * @file mylibs_include.h * @brief Заголочный файл для всех библиотек ************************************************************************** * @details Здесь нужно собрать библиотеки и дефайны, которые должны быть видны во всем проекте, чтобы не подключать 100 инклюдов в каждом ".c" файле ************************************************************************** * @defgroup MYLIBS_ALL My Libs * @brief Все используемые MyLibs библиотеки * @details Для подключения библиотеки необходимо: - Сконфигурировать mylibs_config.h: - Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx_hal.h) - Подключить другие заголовочные файлы которые общие для всего проекта и должны быть видны - - Подключить mylibs_include.h туда, где необходим доступ к библиотекам. * @defgroup MYLIBS_PERIPHERAL Peripheral * @ingroup MYLIBS_ALL * @brief Модули для управления периферией * *************************************************************************/ #ifndef __MYLIBS_INCLUDE_H_ #define __MYLIBS_INCLUDE_H_ #include "mylibs_defs.h" #ifdef ARM_MATH_CM4 #include "arm_math.h" #endif #ifdef INCLUDE_BIT_ACCESS_LIB #include "bit_access.h" #endif #ifdef INCLUDE_TRACKERS_LIB #include "trackers.h" #endif #ifdef INCLUDE_TRACE_LIB #include "trace.h" #endif #ifdef INCLUDE_GENERAL_PERIPH_LIBS #include "general_flash.h" #include "general_gpio.h" #ifdef HAL_SPI_MODULE_ENABLED #include "general_spi.h" #endif #ifdef HAL_UART_MODULE_ENABLED #include "general_uart.h" #endif #ifdef HAL_TIM_MODULE_ENABLED #include "general_tim.h" #endif #endif //INCLUDE_GENERAL_PERIPH_LIBS /////////////////////////---USER SETTINGS---///////////////////////// // user includes // user settings /////////////////////////---USER SETTINGS---///////////////////////// #endif // __MYLIBS_INCLUDE_H_ /** @mainpage @section overview Обзор MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32. @subsection features Основные возможности @subsubsection utils_module Общие утилиты @ref MYLIBS_DEFINES - Битовый доступ к регистрам через union - Трекеры для статистики и отладки - Макросы для задержек и утилит - Поддержка FreeRTOS @subsubsection trace_module Трассировка @ref TRACE - Serial трассировка через SWO и RTT - GPIO трассировка для отладки - Сохранение логов в Flash память - Обработка HardFault с сохранением контекста @subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO - Управление светодиодами (включение/выключение, моргание, плавное затухание) - Работа с кнопками (чтение состояния, фильтрация дребезга) - Инициализация портов и тактирования - Поддержка альтернативных функций @subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM - Базовая инициализация таймеров - Режимы прерываний - Формирование задержек (блокирующие и неблокирующие) - Работа с энкодерами (чтение положения, обработка кнопок) - Настройка ШИМ и Output Compare @subsection structure Структура проекта @code ├── inc/ # Заголовочные файлы │ ├── mylibs_include.h # Главный include файл │ ├── mylibs_config.h # Конфигурация библиотек │ ├── mylibs_defs.h # Общие определения и макросы │ ├── bit_access.h # Битовый доступ к регистрам │ ├── trackers.h # Трекеры для отладки │ ├── trace.h # Трассировка и логирование │ ├── general_gpio.h # Работа с GPIO │ └── general_tim.h # Работа с таймерами └── src/ # Исходные файлы ├── general_gpio.c # Реализация GPIO └── general_tim.c # Реализация TIM @endcode @subsection usage_basic Использование Инструкция по подключению: 1. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h 2. Подключите главный заголовочный файл: @code #include "mylibs_include.h" @endcode 3. Используйте нужные модули в своем коде @subsubsection gpio_example Пример работы с GPIO @code // Инициализация светодиода MX_GPIO_Init(); GPIO_LEDTypeDef led; GPIO_LED_Init(&led, GPIOA, GPIO_PIN_5, 1); // Включение светодиода GPIO_LED_On(&led); // Запуск моргания GPIO_LED_Blink_Start(&led, 500); // Период 500 мс // В основном цикле while (1) { GPIO_LED_Dynamic_Handle(&led); } @endcode @subsubsection tim_example Пример работы с таймером @code // Настройка таймера TIM_SettingsTypeDef tim_settings = {0}; tim_settings.htim.Instance = TIM2; tim_settings.sTimAHBFreqMHz = SystemCoreClock; tim_settings.sTickBaseUS = TIM_TickBase_1MS; tim_settings.sTimFreqHz = 1000; // 1 кГц tim_settings.sTimMode = TIM_IT_CONF; TIM_Base_Init(&tim_settings); HAL_TIM_Base_Start(&tim_settings.htim); @endcode @subsection dependencies Зависимости - HAL библиотека STM32 - SEGGER RTT (опционально, для RTT трассировки) - FreeRTOS (опционально, для FreeRTOS задержек) */