Добавлен модуль для оптимизации по эволюционному алгоритму
This commit is contained in:
@@ -30,6 +30,8 @@
|
||||
|
||||
#ifdef ARM_MATH_CM4
|
||||
#include "arm_math.h"
|
||||
#else
|
||||
#include "math.h"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -39,13 +41,60 @@
|
||||
|
||||
#ifdef INCLUDE_TRACKERS_LIB
|
||||
#include "trackers.h"
|
||||
#else
|
||||
#define TrackerTypeDef(num_user_vars) void *
|
||||
#define num_of_usercnts(_user_) 0
|
||||
#define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
|
||||
#define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
|
||||
#define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
|
||||
#define TrackerGet_Ok(_cntstruct_) dummy
|
||||
#define TrackerGet_Err(_cntstruct_) dummy
|
||||
#define TrackerGet_Warn(_cntstruct_) dummy
|
||||
#define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
|
||||
#define TrackerCnt_Ok(_cntstruct_)
|
||||
#define TrackerCnt_Err(_cntstruct_)
|
||||
#define TrackerCnt_Warn(_cntstruct_)
|
||||
#define TrackerCnt_User(_cntstruct_, _uservarnumb_)
|
||||
#define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
|
||||
#define TrackerClear_All(_cntstruct_)
|
||||
#define TrackerClear_Ok(_cntstruct_)
|
||||
#define TrackerClear_Err(_cntstruct_)
|
||||
#define TrackerClear_Warn(_cntstruct_)
|
||||
#define TrackerClear_User(_cntstruct_)
|
||||
#define TrackerClear_UserAll(_cntstruct_)
|
||||
#endif
|
||||
|
||||
#ifdef INCLUDE_TRACE_LIB
|
||||
#include "trace.h"
|
||||
#else
|
||||
#define my_printf(...)
|
||||
#define log_printf(TAG, fmt, ...)
|
||||
#define TRACE_GPIO_SET(_gpio_,_pin_)
|
||||
#define TRACE_GPIO_RESET(_gpio_,_pin_)
|
||||
#define RTT_FlashPrepare(...)
|
||||
#define RTT_EraseFlash(...) 0
|
||||
#define RTT_SaveToFlash(...) 0
|
||||
#define RTT_ReadFromFlash(...) 0
|
||||
#define HF_CheckRecovered(...) 0
|
||||
#define HF_HandleFault(...)
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef INCLUDE_EVOLVE_OPTIMIZER
|
||||
#include "evolve_optimizer.h"
|
||||
#else
|
||||
typedef struct {
|
||||
uint16_t n_params;
|
||||
uint16_t n_cand;
|
||||
uint16_t n_best;
|
||||
uint16_t iq_mutation;
|
||||
int32_t loss[0];
|
||||
int32_t candidates[0][0];
|
||||
} EvolveOptimizer_t;
|
||||
#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
|
||||
#define EvolveOptimizer_Step(opt, params, LossFunc)
|
||||
#define PARAM_SCALE_Q16(x, min_val, max_val) (x)
|
||||
#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
|
||||
#endif
|
||||
|
||||
#ifdef INCLUDE_GENERAL_PERIPH_LIBS
|
||||
|
||||
@@ -73,112 +122,4 @@
|
||||
/////////////////////////---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 задержек)
|
||||
*/
|
||||
#endif // __MYLIBS_INCLUDE_H_
|
||||
Reference in New Issue
Block a user