Доработна документация в целом - добавелн main page - исправлены ошибки в шапках и коментах - добавлен граф инклюдов
184 lines
6.4 KiB
C
184 lines
6.4 KiB
C
/**
|
||
**************************************************************************
|
||
* @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 задержек)
|
||
*/ |