# MyLibs: MyLibs

Loading...
Searching...
No Matches
MyLibs

# Обзор

MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32.

## Основные возможности

### Общие утилиты General Defines

- Битовый доступ к регистрам через union
- Трекеры для статистики и отладки
- Макросы для задержек и утилит
- Поддержка FreeRTOS

### Трассировка Trace defines

- Serial трассировка через SWO и RTT
- GPIO трассировка для отладки
- Сохранение логов в Flash память
- Обработка HardFault с сохранением контекста

### Модуль GPIO GPIO Tools

- Управление светодиодами (включение/выключение, моргание, плавное затухание)
- Работа с кнопками (чтение состояния, фильтрация дребезга)
- Инициализация портов и тактирования
- Поддержка альтернативных функций

### Модуль таймеров TIM Tools

- Базовая инициализация таймеров
- Режимы прерываний
- Формирование задержек (блокирующие и неблокирующие)
- Работа с энкодерами (чтение положения, обработка кнопок)
- Настройка ШИМ и Output Compare

## Структура проекта

├── 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

## Использование

Инструкция по подключению:

1. Настройте конфигурацию Configs в mylibs_config.h
2. Подключите главный заголовочный файл:
   #include "mylibs_include.h"
   mylibs_include.h
   Заголочный файл для всех библиотек
3. Используйте нужные модули в своем коде

### Пример работы с GPIO

// Инициализация светодиода
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);
}
GPIO_LED_On
HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
Включить светодиод
Definition general_gpio.c:91
GPIO_LED_Init
HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)
Инициализировать светодиод (структуру светодиода)
Definition general_gpio.c:73
GPIO_LED_Dynamic_Handle
void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
Управление динамическими режимами свечения светодиода
Definition general_gpio.c:184
GPIO_LED_Blink_Start
HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
Активировать моргание светодиодом
Definition general_gpio.c:146
GPIO_LEDTypeDef
Структура светодиода
Definition general_gpio.h:94

### Пример работы с таймером

// Настройка таймера
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);
TIM_Base_Init
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
Инициализация таймера.
Definition general_tim.c:34
TIM_TickBase_1MS
@ TIM_TickBase_1MS
Таймер тактируется с частотой 1 кГц
Definition general_tim.h:96
TIM_SettingsTypeDef
Структура инициализации таймера
Definition general_tim.h:113
TIM_SettingsTypeDef::sTickBaseUS
TIM_MHzTickBaseTypeDef sTickBaseUS
Длительность одного тика
Definition general_tim.h:121
TIM_SettingsTypeDef::sTimAHBFreqMHz
float sTimAHBFreqMHz
Частота шины тактирования таймера
Definition general_tim.h:123
TIM_SettingsTypeDef::sTimMode
TIM_ITModeTypeDef sTimMode
Настройки прерывания таймера
Definition general_tim.h:120
TIM_SettingsTypeDef::htim
TIM_HandleTypeDef htim
HAL handle таймера
Definition general_tim.h:114
TIM_SettingsTypeDef::sTimFreqHz
float sTimFreqHz
Желаемая частота таймера
Definition general_tim.h:124

## Зависимости

- HAL библиотека STM32
- SEGGER RTT (опционально, для RTT трассировки)
- FreeRTOS (опционально, для FreeRTOS задержек)