MyLibs 1.0
Расширенные библиотеки для STM32
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"
    Заголочный файл для всех библиотек
  3. Используйте нужные модули в своем коде

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

// Инициализация светодиода
MX_GPIO_Init();
GPIO_LED_Init(&led, GPIOA, GPIO_PIN_5, 1);
// Включение светодиода
// Запуск моргания
GPIO_LED_Blink_Start(&led, 500); // Период 500 мс
// В основном цикле
while (1) {
}
HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
Включить светодиод
HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)
Инициализировать светодиод (структуру светодиода)
void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
Управление динамическими режимами свечения светодиода
HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
Активировать моргание светодиодом
Структура светодиода

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

// Настройка таймера
TIM_SettingsTypeDef tim_settings = {0};
tim_settings.htim.Instance = TIM2;
tim_settings.sTimAHBFreqMHz = SystemCoreClock;
tim_settings.sTimFreqHz = 1000; // 1 кГц
tim_settings.sTimMode = TIM_IT_CONF;
TIM_Base_Init(&tim_settings);
HAL_TIM_Base_Start(&tim_settings.htim);
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
Инициализация таймера.
Definition general_tim.c:34
@ TIM_TickBase_1MS
Таймер тактируется с частотой 1 кГц
Definition general_tim.h:96
Структура инициализации таймера
TIM_MHzTickBaseTypeDef sTickBaseUS
Длительность одного тика
float sTimAHBFreqMHz
Частота шины тактирования таймера
TIM_ITModeTypeDef sTimMode
Настройки прерывания таймера
TIM_HandleTypeDef htim
HAL handle таймера
float sTimFreqHz
Желаемая частота таймера

Зависимости

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