@@ -109,8 +109,8 @@ $(function(){initNavTree('group___u_t_i_l_s___d_e_f_i_n_e_s.html','',''); });
@@ -153,7 +153,7 @@ Macros
Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля.
-Definition at line 154 of file mylibs_defs.h .
+Definition at line 151 of file mylibs_defs.h .
@@ -188,7 +188,7 @@ Macros
Returns Результат деления, округленный вверх.
Если результат деления без остатка: он возвращается как есть Если с остатком - округляется вверх
-Definition at line 165 of file mylibs_defs.h .
+Definition at line 162 of file mylibs_defs.h .
@@ -218,7 +218,7 @@ Macros
Returns Результат с поменяными местами старшим и младшим байтом.
Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
-Definition at line 173 of file mylibs_defs.h .
+Definition at line 170 of file mylibs_defs.h .
@@ -248,7 +248,7 @@ Macros
Returns Абсолютное значение числа x.
Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
-Definition at line 181 of file mylibs_defs.h .
+Definition at line 178 of file mylibs_defs.h .
diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map
index f176eba..f130ade 100644
--- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map
+++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map
@@ -1,4 +1,4 @@
-
-
+
+
diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5
index 9687ecf..ead6af3 100644
--- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5
+++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-a22e11e67b1cc3135ba7e3b5e903043c
\ No newline at end of file
+e4f09128a7c7fea7dcaa8c425861feae
\ No newline at end of file
diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.png b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.png
index 25fc9b1..74a98f9 100644
Binary files a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.png and b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.png differ
diff --git a/Doc/html/index.html b/Doc/html/index.html
index a233fa5..87e4bf6 100644
--- a/Doc/html/index.html
+++ b/Doc/html/index.html
@@ -106,37 +106,35 @@ $(function(){initNavTree('index.html','',''); });
Основные возможности
+Общие утилиты (General Tools )
-Управление светодиодами (включение/выключение, моргание, плавное затухание)
-Работа с кнопками (чтение состояния, фильтрация дребезга)
-Инициализация портов и тактирования
-Поддержка альтернативных функций
+Инициализация портов и тактирования (General tools )
+Управление светодиодами (включение/выключение, моргание, плавное затухание) (LED tools )
+Работа с кнопками (чтение состояния, фильтрация дребезга) (Switch tools )
-Базовая инициализация таймеров
-Режимы прерываний
-Формирование задержек (блокирующие и неблокирующие)
-Работа с энкодерами (чтение положения, обработка кнопок)
-Настройка ШИМ и Output Compare
+Базовая инициализация таймеров (General tools )
+Формирование задержек (блокирующие и неблокирующие) (Delay tools )
+Работа с энкодерами (чтение положения, обработка кнопок) (Encoder tools )
+Настройка ШИМ и Output Compare (PWM/OC Channels tools )
Структура проекта
diff --git a/Doc/html/mainpage_8h_source.html b/Doc/html/mainpage_8h_source.html
new file mode 100644
index 0000000..14c5a8d
--- /dev/null
+++ b/Doc/html/mainpage_8h_source.html
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/mainpage.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/menudata.js b/Doc/html/menudata.js
index 3561c54..7655322 100644
--- a/Doc/html/menudata.js
+++ b/Doc/html/menudata.js
@@ -30,21 +30,27 @@ var menudata={children:[
{text:"Class Index",url:"classes.html"},
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html",children:[
+{text:"c",url:"functions.html#index_c"},
{text:"d",url:"functions.html#index_d"},
{text:"e",url:"functions.html#index_e"},
{text:"g",url:"functions.html#index_g"},
{text:"h",url:"functions.html#index_h"},
+{text:"i",url:"functions.html#index_i"},
{text:"l",url:"functions.html#index_l"},
+{text:"n",url:"functions.html#index_n"},
{text:"p",url:"functions.html#index_p"},
{text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"},
{text:"t",url:"functions.html#index_t"}]},
{text:"Variables",url:"functions_vars.html",children:[
+{text:"c",url:"functions_vars.html#index_c"},
{text:"d",url:"functions_vars.html#index_d"},
{text:"e",url:"functions_vars.html#index_e"},
{text:"g",url:"functions_vars.html#index_g"},
{text:"h",url:"functions_vars.html#index_h"},
+{text:"i",url:"functions_vars.html#index_i"},
{text:"l",url:"functions_vars.html#index_l"},
+{text:"n",url:"functions_vars.html#index_n"},
{text:"p",url:"functions_vars.html#index_p"},
{text:"r",url:"functions_vars.html#index_r"},
{text:"s",url:"functions_vars.html#index_s"},
@@ -57,17 +63,20 @@ var menudata={children:[
{text:"b",url:"globals.html#index_b"},
{text:"c",url:"globals.html#index_c"},
{text:"d",url:"globals.html#index_d"},
+{text:"e",url:"globals.html#index_e"},
{text:"g",url:"globals.html#index_g"},
{text:"h",url:"globals.html#index_h"},
{text:"i",url:"globals.html#index_i"},
{text:"l",url:"globals.html#index_l"},
{text:"m",url:"globals.html#index_m"},
{text:"n",url:"globals.html#index_n"},
+{text:"p",url:"globals.html#index_p"},
{text:"r",url:"globals.html#index_r"},
{text:"s",url:"globals.html#index_s"},
{text:"t",url:"globals.html#index_t"},
{text:"u",url:"globals.html#index_u"}]},
{text:"Functions",url:"globals_func.html",children:[
+{text:"e",url:"globals_func.html#index_e"},
{text:"g",url:"globals_func.html#index_g"},
{text:"h",url:"globals_func.html#index_h"},
{text:"r",url:"globals_func.html#index_r"},
@@ -79,12 +88,14 @@ var menudata={children:[
{text:"b",url:"globals_defs.html#index_b"},
{text:"c",url:"globals_defs.html#index_c"},
{text:"d",url:"globals_defs.html#index_d"},
+{text:"e",url:"globals_defs.html#index_e"},
{text:"g",url:"globals_defs.html#index_g"},
{text:"h",url:"globals_defs.html#index_h"},
{text:"i",url:"globals_defs.html#index_i"},
{text:"l",url:"globals_defs.html#index_l"},
{text:"m",url:"globals_defs.html#index_m"},
{text:"n",url:"globals_defs.html#index_n"},
+{text:"p",url:"globals_defs.html#index_p"},
{text:"r",url:"globals_defs.html#index_r"},
{text:"s",url:"globals_defs.html#index_s"},
{text:"t",url:"globals_defs.html#index_t"},
diff --git a/Doc/html/mylibs__config_8h.html b/Doc/html/mylibs__config_8h.html
index d0e7bd6..4c94c66 100644
--- a/Doc/html/mylibs__config_8h.html
+++ b/Doc/html/mylibs__config_8h.html
@@ -121,41 +121,44 @@ $(function(){initNavTree('mylibs__config_8h.html','',''); });
-
-
-
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -195,6 +198,14 @@ Macros
Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
#define GPIO_TRACE_ENABLE
Включить GPIO трассировку
+#define ENABLE_EVOLVE_OPTIMIZATION
+ Включить оптимизацию параметров
+#define EVOLVE_MAX_PARAMS 20
+ Максимальное количество параметров
+#define EVOLVE_MAX_CANDIDATES 100
+ Максимальное количество кандидатов для обучения
+#define INCLUDE_EVOLVE_OPTIMIZER
+ Подключить библиотеку для оптимизации параметров
#define INCLUDE_BIT_ACCESS_LIB
Подключить библиотеку с typedef с битовыми полями
#define INCLUDE_TRACKERS_LIB
diff --git a/Doc/html/mylibs__config_8h.js b/Doc/html/mylibs__config_8h.js
index 88d39b2..18173b2 100644
--- a/Doc/html/mylibs__config_8h.js
+++ b/Doc/html/mylibs__config_8h.js
@@ -16,6 +16,10 @@ var mylibs__config_8h =
[ "HF_FLASH_ADDR", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63", null ],
[ "HF_RAM_END", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051", null ],
[ "GPIO_TRACE_ENABLE", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b", null ],
+ [ "ENABLE_EVOLVE_OPTIMIZATION", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47", null ],
+ [ "EVOLVE_MAX_PARAMS", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee", null ],
+ [ "EVOLVE_MAX_CANDIDATES", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971", null ],
+ [ "INCLUDE_EVOLVE_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66", null ],
[ "INCLUDE_BIT_ACCESS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be", null ],
[ "INCLUDE_TRACKERS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32", null ],
[ "INCLUDE_TRACE_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7", null ],
diff --git a/Doc/html/mylibs__config_8h__dep__incl.map b/Doc/html/mylibs__config_8h__dep__incl.map
index cbc8c7e..64974ec 100644
--- a/Doc/html/mylibs__config_8h__dep__incl.map
+++ b/Doc/html/mylibs__config_8h__dep__incl.map
@@ -1,37 +1,40 @@
-
-
-
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__config_8h__dep__incl.md5 b/Doc/html/mylibs__config_8h__dep__incl.md5
index 191dedc..2f6fe17 100644
--- a/Doc/html/mylibs__config_8h__dep__incl.md5
+++ b/Doc/html/mylibs__config_8h__dep__incl.md5
@@ -1 +1 @@
-1d30e7f7262a5810100c1f2c179cf017
\ No newline at end of file
+29f3209273b7878fca69d464878bc9ff
\ No newline at end of file
diff --git a/Doc/html/mylibs__config_8h__dep__incl.png b/Doc/html/mylibs__config_8h__dep__incl.png
index d59b97a..e12080c 100644
Binary files a/Doc/html/mylibs__config_8h__dep__incl.png and b/Doc/html/mylibs__config_8h__dep__incl.png differ
diff --git a/Doc/html/mylibs__config_8h_source.html b/Doc/html/mylibs__config_8h_source.html
index 3859a5d..8ba7606 100644
--- a/Doc/html/mylibs__config_8h_source.html
+++ b/Doc/html/mylibs__config_8h_source.html
@@ -155,29 +155,45 @@ $(function(){initNavTree('mylibs__config_8h_source.html','',''); });
-
-
-
-
-
-
-
-
-
- 65 #define INCLUDE_BIT_ACCESS_LIB
- 66 #define INCLUDE_TRACKERS_LIB
- 67 #define INCLUDE_TRACE_LIB
- 68 #define INCLUDE_GENERAL_PERIPH_LIBS
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ 64 #define ENABLE_EVOLVE_OPTIMIZATION
+ 65 #define EVOLVE_MAX_PARAMS 20
+ 66 #define EVOLVE_MAX_CANDIDATES 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 80 #define INCLUDE_EVOLVE_OPTIMIZER
+ 81 #define INCLUDE_BIT_ACCESS_LIB
+ 82 #define INCLUDE_TRACKERS_LIB
+ 83 #define INCLUDE_TRACE_LIB
+ 84 #define INCLUDE_GENERAL_PERIPH_LIBS
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__defs_8h.html b/Doc/html/mylibs__defs_8h.html
index b1f09da..639bfe0 100644
--- a/Doc/html/mylibs__defs_8h.html
+++ b/Doc/html/mylibs__defs_8h.html
@@ -123,39 +123,42 @@ $(function(){initNavTree('mylibs__defs_8h.html','',''); });
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__defs_8h__dep__incl.map b/Doc/html/mylibs__defs_8h__dep__incl.map
index 705a23a..a1ac985 100644
--- a/Doc/html/mylibs__defs_8h__dep__incl.map
+++ b/Doc/html/mylibs__defs_8h__dep__incl.map
@@ -1,35 +1,38 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__defs_8h__dep__incl.md5 b/Doc/html/mylibs__defs_8h__dep__incl.md5
index 6f2aaa0..77cf79b 100644
--- a/Doc/html/mylibs__defs_8h__dep__incl.md5
+++ b/Doc/html/mylibs__defs_8h__dep__incl.md5
@@ -1 +1 @@
-40a69cba061c10e4f05878fe09df0f2e
\ No newline at end of file
+3009d51b0bc5d0623e8c666bec71ce5b
\ No newline at end of file
diff --git a/Doc/html/mylibs__defs_8h__dep__incl.png b/Doc/html/mylibs__defs_8h__dep__incl.png
index 89f4fe8..a5864bb 100644
Binary files a/Doc/html/mylibs__defs_8h__dep__incl.png and b/Doc/html/mylibs__defs_8h__dep__incl.png differ
diff --git a/Doc/html/mylibs__defs_8h_source.html b/Doc/html/mylibs__defs_8h_source.html
index 41719c1..86e81c3 100644
--- a/Doc/html/mylibs__defs_8h_source.html
+++ b/Doc/html/mylibs__defs_8h_source.html
@@ -105,7 +105,7 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
-
+
@@ -157,136 +157,133 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 84 #define msDelay(_ms_) osDelay(_ms_)
-
- 86 #define msDelay(_ms_) HAL_Delay(_ms_)
-
-
-
-
-
-
-
-
-
-
-
- 98 #define msDelayStart(_pvar_) *(_pvar_) = HAL_GetTick()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 115 #define msDelayWhileActive(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) < _ms_)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 132 #define msDelayWaitDone(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) >= _ms_)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 154 #define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
-
-
-
-
-
-
-
-
-
-
- 165 #define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1
-
-
-
-
-
-
-
- 173 #define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
-
-
-
-
-
-
-
- 181 #define ABS(x) ( ((x) > 0)? (x) : -(x))
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 80 #define msDelay(_ms_) osDelay(_ms_)
+
+ 82 #define msDelay(_ms_) HAL_Delay(_ms_)
+
+
+
+
+
+
+
+
+
+
+
+ 94 #define msDelayStart(_pvar_) *(_pvar_) = HAL_GetTick()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 111 #define msDelayWhileActive(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) < _ms_)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 128 #define msDelayWaitDone(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) >= _ms_)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 151 #define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
+
+
+
+
+
+
+
+
+
+
+ 162 #define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1
+
+
+
+
+
+
+
+ 170 #define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
+
+
+
+
+
+
+
+ 178 #define ABS(x) ( ((x) > 0)? (x) : -(x))
+
+
+
+
+
+
Конфигурации для библиотек MyLibs.
diff --git a/Doc/html/mylibs__include_8h.html b/Doc/html/mylibs__include_8h.html
index 6070469..a47e7ab 100644
--- a/Doc/html/mylibs__include_8h.html
+++ b/Doc/html/mylibs__include_8h.html
@@ -104,9 +104,11 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); });
Заголочный файл для всех библиотек
More...
#include "mylibs_defs.h "
+
#include "math.h"
#include "bit_access.h "
#include "trackers.h "
#include "trace.h "
+
#include "evolve_optimizer.h "
#include "general_flash.h"
#include "general_gpio.h "
#include "general_tim.h "
@@ -116,35 +118,44 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); });
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__include_8h__incl.map b/Doc/html/mylibs__include_8h__incl.map
index 7a50c10..325308a 100644
--- a/Doc/html/mylibs__include_8h__incl.map
+++ b/Doc/html/mylibs__include_8h__incl.map
@@ -1,31 +1,40 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__include_8h__incl.md5 b/Doc/html/mylibs__include_8h__incl.md5
index 1931951..48042dd 100644
--- a/Doc/html/mylibs__include_8h__incl.md5
+++ b/Doc/html/mylibs__include_8h__incl.md5
@@ -1 +1 @@
-ce4a5806741b3eb40f3fb015cc24db98
\ No newline at end of file
+d43d5a141d087c4ef99d3ea25bfc5d0a
\ No newline at end of file
diff --git a/Doc/html/mylibs__include_8h__incl.png b/Doc/html/mylibs__include_8h__incl.png
index fdfeb36..5c944d3 100644
Binary files a/Doc/html/mylibs__include_8h__incl.png and b/Doc/html/mylibs__include_8h__incl.png differ
diff --git a/Doc/html/mylibs__include_8h_source.html b/Doc/html/mylibs__include_8h_source.html
index a411e0b..4b13774 100644
--- a/Doc/html/mylibs__include_8h_source.html
+++ b/Doc/html/mylibs__include_8h_source.html
@@ -132,162 +132,105 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });
-
-
-
- 36 #ifdef INCLUDE_BIT_ACCESS_LIB
-
-
-
- 40 #ifdef INCLUDE_TRACKERS_LIB
-
-
-
- 44 #ifdef INCLUDE_TRACE_LIB
-
-
-
-
-
- 50 #ifdef INCLUDE_GENERAL_PERIPH_LIBS
-
- 52 #include "general_flash.h"
-
- 54 #ifdef HAL_SPI_MODULE_ENABLED
- 55 #include "general_spi.h"
-
- 57 #ifdef HAL_UART_MODULE_ENABLED
- 58 #include "general_uart.h"
-
- 60 #ifdef HAL_TIM_MODULE_ENABLED
-
-
-
-
-
+
+
+
+
+
+ 38 #ifdef INCLUDE_BIT_ACCESS_LIB
+
+
+
+ 42 #ifdef INCLUDE_TRACKERS_LIB
+
+
+ 45 #define TrackerTypeDef(num_user_vars) void *
+ 46 #define num_of_usercnts(_user_) 0
+ 47 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
+ 48 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
+ 49 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
+ 50 #define TrackerGet_Ok(_cntstruct_) dummy
+ 51 #define TrackerGet_Err(_cntstruct_) dummy
+ 52 #define TrackerGet_Warn(_cntstruct_) dummy
+ 53 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
+ 54 #define TrackerCnt_Ok(_cntstruct_)
+ 55 #define TrackerCnt_Err(_cntstruct_)
+ 56 #define TrackerCnt_Warn(_cntstruct_)
+ 57 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
+ 58 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
+ 59 #define TrackerClear_All(_cntstruct_)
+ 60 #define TrackerClear_Ok(_cntstruct_)
+ 61 #define TrackerClear_Err(_cntstruct_)
+ 62 #define TrackerClear_Warn(_cntstruct_)
+ 63 #define TrackerClear_User(_cntstruct_)
+ 64 #define TrackerClear_UserAll(_cntstruct_)
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ 67 #ifdef INCLUDE_TRACE_LIB
+
+
+
+ 71 #define log_printf(TAG, fmt, ...)
+ 72 #define TRACE_GPIO_SET(_gpio_,_pin_)
+ 73 #define TRACE_GPIO_RESET(_gpio_,_pin_)
+ 74 #define RTT_FlashPrepare(...)
+ 75 #define RTT_EraseFlash(...) 0
+ 76 #define RTT_SaveToFlash(...) 0
+ 77 #define RTT_ReadFromFlash(...) 0
+ 78 #define HF_CheckRecovered(...) 0
+ 79 #define HF_HandleFault(...)
+
+
+ 82 #ifdef INCLUDE_EVOLVE_OPTIMIZER
+
+
+
+
+
+
+
+
+ 91 int32_t candidates[0][0];
+
+ 93 #define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
+ 94 #define EvolveOptimizer_Step(opt, params, LossFunc)
+ 95 #define PARAM_SCALE_Q16(x, min_val, max_val) (x)
+ 96 #define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
+
+
+ 99 #ifdef INCLUDE_GENERAL_PERIPH_LIBS
+
+ 101 #include "general_flash.h"
+
+ 103 #ifdef HAL_SPI_MODULE_ENABLED
+ 104 #include "general_spi.h"
+
+ 106 #ifdef HAL_UART_MODULE_ENABLED
+ 107 #include "general_uart.h"
+
+ 109 #ifdef HAL_TIM_MODULE_ENABLED
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Заголочный файл для дефайнов битового доступа.
+Заголовочный файл для адаптивного подбора параметров
Заголовочный файл для модуля инициализации портов и работы с ними.
Заголовочный файл для модуля инициализации таймеров и работы с ними.
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
+Структура эволюционного оптимизатора
Заголочный файл для работы с трассировкой.
Заголочный файл для работы с трекерами Trackers defines.
diff --git a/Doc/html/navtreedata.js b/Doc/html/navtreedata.js
index 32e9b19..2fdddcb 100644
--- a/Doc/html/navtreedata.js
+++ b/Doc/html/navtreedata.js
@@ -27,7 +27,7 @@ var NAVTREE =
[ "MyLibs", "index.html", [
[ "Обзор", "index.html#overview", [
[ "Основные возможности", "index.html#features", [
- [ "Общие утилиты General Defines ", "index.html#utils_module", null ],
+ [ "Общие утилиты (General Tools )", "index.html#utils_module", null ],
[ "Трассировка Trace defines ", "index.html#trace_module", null ],
[ "Модуль GPIO GPIO Tools ", "index.html#gpio_module", null ],
[ "Модуль таймеров TIM Tools ", "index.html#tim_module", null ]
@@ -64,7 +64,7 @@ var NAVTREE =
var NAVTREEINDEX =
[
"____general__flash_8c_source.html",
-"trace_8h_source.html"
+"struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e"
];
var SYNCONMSG = 'click to disable panel synchronization';
diff --git a/Doc/html/navtreeindex0.js b/Doc/html/navtreeindex0.js
index 7323ed5..e45e5a6 100644
--- a/Doc/html/navtreeindex0.js
+++ b/Doc/html/navtreeindex0.js
@@ -13,17 +13,19 @@ var NAVTREEINDEX0 =
"dir_9c80311a018e1f8cfb6659b73d634be4.html":[3,0,0,1],
"dir_9e11e9a41112194af3eee6cc728f9515.html":[3,0,0],
"dir_eb423fea8a9c4b9b32b922020ec391e1.html":[3,0,0,0],
+"evolve__optimizer_8h.html":[3,0,0,0,4],
+"evolve__optimizer_8h_source.html":[3,0,0,0,4],
"files.html":[3,0],
"functions.html":[2,2,0],
"functions_vars.html":[2,2,1],
"general__gpio_8c.html":[3,0,0,1,3],
"general__gpio_8c_source.html":[3,0,0,1,3],
-"general__gpio_8h.html":[3,0,0,0,4],
-"general__gpio_8h_source.html":[3,0,0,0,4],
+"general__gpio_8h.html":[3,0,0,0,5],
+"general__gpio_8h_source.html":[3,0,0,0,5],
"general__tim_8c.html":[3,0,0,1,4],
"general__tim_8c_source.html":[3,0,0,1,4],
-"general__tim_8h.html":[3,0,0,0,5],
-"general__tim_8h_source.html":[3,0,0,0,5],
+"general__tim_8h.html":[3,0,0,0,6],
+"general__tim_8h_source.html":[3,0,0,0,6],
"globals.html":[3,1,0],
"globals_defs.html":[3,1,4],
"globals_enum.html":[3,1,2],
@@ -34,29 +36,39 @@ var NAVTREEINDEX0 =
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396":[1,0,1,0,4],
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086":[1,0,1,0,5],
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1":[1,0,1,0,6],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,2],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,2,2],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,2,1],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,2,0],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,2,3],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,1],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,1,2],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,1,4],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,1,1],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,1,3],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,1,5],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,1,0],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,3],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,3,2],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,3,1],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,3,0],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,3,3],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,2],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,2,2],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,2,4],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,2,1],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,2,3],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,2,5],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,2,0],
+"group___e_v_o_l_v_e___c_o_n_f_i_g.html":[1,0,0,1],
+"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47":[1,0,0,1,0],
+"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971":[1,0,0,1,2],
+"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee":[1,0,0,1,1],
+"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html":[1,0,1,1],
+"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563":[1,0,1,1,4],
+"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba":[1,0,1,1,2],
+"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9":[1,0,1,1,3],
+"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc":[1,0,1,1,1],
"group___g_p_i_o___i_n_i_t.html":[1,0,2,0,0,0],
"group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9":[1,0,2,0,0,0,3],
"group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023":[1,0,2,0,0,0,0],
"group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29":[1,0,2,0,0,0,2],
"group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067":[1,0,2,0,0,0,4],
"group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25":[1,0,2,0,0,0,1],
-"group___l_i_b_s___c_o_n_f_i_g.html":[1,0,0,1],
-"group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7":[1,0,0,1,2],
-"group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281":[1,0,0,1,3],
-"group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32":[1,0,0,1,1],
-"group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be":[1,0,0,1,0],
+"group___l_i_b_s___c_o_n_f_i_g.html":[1,0,0,2],
+"group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7":[1,0,0,2,3],
+"group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281":[1,0,0,2,4],
+"group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32":[1,0,0,2,2],
+"group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66":[1,0,0,2,0],
+"group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be":[1,0,0,2,1],
"group___m_y___l_i_b_s___g_p_i_o.html":[1,0,2,0],
"group___m_y___l_i_b_s___t_i_m.html":[1,0,2,1],
"group___m_y_l_i_b_s___a_l_l.html":[1,0],
@@ -123,7 +135,7 @@ var NAVTREEINDEX0 =
"group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c":[1,0,2,1,3,0,13],
"group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a":[1,0,2,1,3,0,8],
"group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac":[1,0,2,1,3,0,12],
-"group___t_r_a_c_e.html":[1,0,1,4],
+"group___t_r_a_c_e.html":[1,0,1,5],
"group___t_r_a_c_e___c_o_n_f_i_g.html":[1,0,0,0],
"group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8":[1,0,0,0,2],
"group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05":[1,0,0,0,4],
@@ -141,46 +153,46 @@ var NAVTREEINDEX0 =
"group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313":[1,0,0,0,10],
"group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca":[1,0,0,0,11],
"group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d":[1,0,0,0,8],
-"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,4,1],
-"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,4,1,1],
-"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,4,1,0],
-"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,4,3],
-"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,4,3,1],
-"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,4,3,2],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,4,2],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,4,2,1],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,4,2,3],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,4,2,2],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,4,2,4],
-"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,4,0],
-"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,4,0,1],
-"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,4,0,0],
-"group___t_r_a_c_k_e_r_s.html":[1,0,1,5],
-"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,5,18],
-"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,5,12],
-"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,5,9],
-"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,5,17],
-"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,5,4],
-"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,5,7],
-"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,5,10],
-"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,5,8],
-"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,5,0],
-"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,5,15],
-"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,5,14],
-"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,5,1],
-"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,5,11],
-"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,5,6],
-"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,5,19],
-"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,5,5],
-"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,5,13],
-"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,5,3],
-"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,5,2],
-"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,5,16],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,3],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,3,2],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,3,3],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,3,1],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,3,0],
+"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,5,1],
+"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,5,1,1],
+"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,5,1,0],
+"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,5,3],
+"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,5,3,1],
+"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,5,3,2],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,5,2],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,5,2,1],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,5,2,3],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,5,2,2],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,5,2,4],
+"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,5,0],
+"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,5,0,1],
+"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,5,0,0],
+"group___t_r_a_c_k_e_r_s.html":[1,0,1,6],
+"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,6,18],
+"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,6,12],
+"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,6,9],
+"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,6,17],
+"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,6,4],
+"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,6,7],
+"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,6,10],
+"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,6,8],
+"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,6,0],
+"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,6,15],
+"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,6,14],
+"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,6,1],
+"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,6,11],
+"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,6,6],
+"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,6,19],
+"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,6,5],
+"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,6,13],
+"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,6,3],
+"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,6,2],
+"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,6,16],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,4],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,4,2],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,4,3],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,4,1],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,4,0],
"index.html":[],
"index.html#dependencies":[0,3],
"index.html#features":[0,0],
@@ -193,13 +205,22 @@ var NAVTREEINDEX0 =
"index.html#trace_module":[0,0,1],
"index.html#usage_basic":[0,2],
"index.html#utils_module":[0,0,0],
-"mylibs__config_8h.html":[3,0,0,0,6],
-"mylibs__config_8h_source.html":[3,0,0,0,6],
-"mylibs__defs_8h.html":[3,0,0,0,7],
-"mylibs__defs_8h_source.html":[3,0,0,0,7],
-"mylibs__include_8h.html":[3,0,0,0,8],
-"mylibs__include_8h_source.html":[3,0,0,0,8],
+"mainpage_8h_source.html":[3,0,0,2],
+"mylibs__config_8h.html":[3,0,0,0,7],
+"mylibs__config_8h_source.html":[3,0,0,0,7],
+"mylibs__defs_8h.html":[3,0,0,0,8],
+"mylibs__defs_8h_source.html":[3,0,0,0,8],
+"mylibs__include_8h.html":[3,0,0,0,9],
+"mylibs__include_8h_source.html":[3,0,0,0,9],
"pages.html":[],
+"struct_evolve_optimizer__t.html":[1,0,1,1,0],
+"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae":[1,0,1,1,0,4],
+"struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8":[1,0,1,1,0,0],
+"struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5":[1,0,1,1,0,3],
+"struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d":[1,0,1,1,0,6],
+"struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6":[1,0,1,1,0,2],
+"struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1":[1,0,1,1,0,1],
+"struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d":[1,0,1,1,0,5],
"struct_g_p_i_o___l_e_d_type_def.html":[1,0,2,0,2,0],
"struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978":[1,0,2,0,2,0,2],
"struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec":[1,0,2,0,2,0,4],
@@ -212,42 +233,21 @@ var NAVTREEINDEX0 =
"struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405":[1,0,2,0,1,0,2],
"struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032":[1,0,2,0,1,0,1],
"struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a":[1,0,2,0,1,0,0],
-"struct_h_f___stack_frame__t.html":[1,0,1,4,3,0],
-"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,1,4,3,0,6],
-"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,1,4,3,0,1],
-"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,1,4,3,0,0],
-"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,1,4,3,0,3],
-"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,1,4,3,0,2],
-"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,1,4,3,0,5],
-"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,4,3,0,4],
-"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,4,3,0,7],
-"struct_r_t_t___flash_header__t.html":[1,0,1,4,2,0],
-"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,4,2,0,0],
-"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,4,2,0,2],
-"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,4,2,0,1],
-"struct_s_p_i___settings_type_def.html":[2,0,4],
+"struct_h_f___stack_frame__t.html":[1,0,1,5,3,0],
+"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,1,5,3,0,6],
+"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,1,5,3,0,1],
+"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,1,5,3,0,0],
+"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,1,5,3,0,3],
+"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,1,5,3,0,2],
+"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,1,5,3,0,5],
+"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,5,3,0,4],
+"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,5,3,0,7],
+"struct_r_t_t___flash_header__t.html":[1,0,1,5,2,0],
+"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,5,2,0,0],
+"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,5,2,0,2],
+"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,5,2,0,1],
+"struct_s_p_i___settings_type_def.html":[2,0,5],
"struct_t_i_m___encoder_type_def.html":[1,0,2,1,1,0],
"struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5":[1,0,2,1,1,0,3],
-"struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2":[1,0,2,1,1,0,1],
-"struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e":[1,0,2,1,1,0,5],
-"struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5":[1,0,2,1,1,0,6],
-"struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80":[1,0,2,1,1,0,7],
-"struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3":[1,0,2,1,1,0,0],
-"struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45":[1,0,2,1,1,0,8],
-"struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9":[1,0,2,1,1,0,4],
-"struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c":[1,0,2,1,1,0,2],
-"struct_t_i_m___settings_type_def.html":[1,0,2,1,3,1],
-"struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718":[1,0,2,1,3,1,7],
-"struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21":[1,0,2,1,3,1,3],
-"struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0":[1,0,2,1,3,1,1],
-"struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e":[1,0,2,1,3,1,6],
-"struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014":[1,0,2,1,3,1,8],
-"struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7":[1,0,2,1,3,1,4],
-"struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969":[1,0,2,1,3,1,2],
-"struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0":[1,0,2,1,3,1,5],
-"struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c":[1,0,2,1,3,1,0],
-"struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4":[1,0,2,1,3,1,9],
-"struct_u_a_r_t___settings_type_def.html":[2,0,7],
-"topics.html":[1],
-"trace_8h.html":[3,0,0,0,9]
+"struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2":[1,0,2,1,1,0,1]
};
diff --git a/Doc/html/navtreeindex1.js b/Doc/html/navtreeindex1.js
index 6d42345..b781f2a 100644
--- a/Doc/html/navtreeindex1.js
+++ b/Doc/html/navtreeindex1.js
@@ -1,8 +1,29 @@
var NAVTREEINDEX1 =
{
-"trace_8h_source.html":[3,0,0,0,9],
-"trackers_8h.html":[3,0,0,0,10],
-"trackers_8h_source.html":[3,0,0,0,10],
+"struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e":[1,0,2,1,1,0,5],
+"struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5":[1,0,2,1,1,0,6],
+"struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80":[1,0,2,1,1,0,7],
+"struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3":[1,0,2,1,1,0,0],
+"struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45":[1,0,2,1,1,0,8],
+"struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9":[1,0,2,1,1,0,4],
+"struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c":[1,0,2,1,1,0,2],
+"struct_t_i_m___settings_type_def.html":[1,0,2,1,3,1],
+"struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718":[1,0,2,1,3,1,7],
+"struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21":[1,0,2,1,3,1,3],
+"struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0":[1,0,2,1,3,1,1],
+"struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e":[1,0,2,1,3,1,6],
+"struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014":[1,0,2,1,3,1,8],
+"struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7":[1,0,2,1,3,1,4],
+"struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969":[1,0,2,1,3,1,2],
+"struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0":[1,0,2,1,3,1,5],
+"struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c":[1,0,2,1,3,1,0],
+"struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4":[1,0,2,1,3,1,9],
+"struct_u_a_r_t___settings_type_def.html":[2,0,8],
+"topics.html":[1],
+"trace_8h.html":[3,0,0,0,10],
+"trace_8h_source.html":[3,0,0,0,10],
+"trackers_8h.html":[3,0,0,0,11],
+"trackers_8h_source.html":[3,0,0,0,11],
"unionuint16___bit_type_def.html":[1,0,1,0,1],
"unionuint32___bit_type_def.html":[1,0,1,0,2],
"unionuint64___bit_type_def.html":[1,0,1,0,3],
diff --git a/Doc/html/search/all_10.js b/Doc/html/search/all_10.js
index 5d4eea7..b8c67f8 100644
--- a/Doc/html/search/all_10.js
+++ b/Doc/html/search/all_10.js
@@ -27,7 +27,7 @@ var searchData=
['tim_5ftickbase_5f10us_24',['TIM_TickBase_10US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f',1,'general_tim.h']]],
['tim_5ftickbase_5f1ms_25',['TIM_TickBase_1MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25',1,'general_tim.h']]],
['tim_5ftickbase_5f1us_26',['TIM_TickBase_1US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2',1,'general_tim.h']]],
- ['tools_27',['Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]],
+ ['tools_27',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]],
['tools_28',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]],
['trace_29',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]],
['trace_20configs_30',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]],
diff --git a/Doc/html/search/all_16.js b/Doc/html/search/all_16.js
index 60163ac..ca20af9 100644
--- a/Doc/html/search/all_16.js
+++ b/Doc/html/search/all_16.js
@@ -1,6 +1,6 @@
var searchData=
[
['обзор_0',['Обзор',['../index.html#overview',1,'']]],
- ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]],
+ ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]],
['основные_20возможности_2',['Основные возможности',['../index.html#features',1,'']]]
];
diff --git a/Doc/html/search/all_1b.js b/Doc/html/search/all_1b.js
index 6a8db26..f69cabe 100644
--- a/Doc/html/search/all_1b.js
+++ b/Doc/html/search/all_1b.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['утилиты_20mylibs_5fdefines_0',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]]
+ ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]]
];
diff --git a/Doc/html/search/all_2.js b/Doc/html/search/all_2.js
index bc3fb4b..471f910 100644
--- a/Doc/html/search/all_2.js
+++ b/Doc/html/search/all_2.js
@@ -1,12 +1,14 @@
var searchData=
[
- ['channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
- ['check_5fnull_5fptr_5f1_1',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f2_2',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f3_3',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f4_4',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f5_5',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]],
- ['clearstruct_6',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]],
- ['configs_7',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]],
- ['configs_8',['configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]]
+ ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]],
+ ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d',1,'EvolveOptimizer_t']]],
+ ['channels_20tools_2',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
+ ['check_5fnull_5fptr_5f1_3',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f2_4',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f3_5',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f4_6',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f5_7',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]],
+ ['clearstruct_8',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]],
+ ['configs_9',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]],
+ ['configs_10',['configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'Evolve configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]]
];
diff --git a/Doc/html/search/all_3.js b/Doc/html/search/all_3.js
index b6a060a..80775d3 100644
--- a/Doc/html/search/all_3.js
+++ b/Doc/html/search/all_3.js
@@ -1,9 +1,8 @@
var searchData=
[
['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]],
- ['defines_1',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
- ['defines_2',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]],
- ['delay_20tools_3',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]],
- ['delays_20defines_4',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]],
- ['divide_5fup_5',['Divide_Up',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e',1,'mylibs_defs.h']]]
+ ['defines_1',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]],
+ ['delay_20tools_2',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]],
+ ['delays_20defines_3',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]],
+ ['divide_5fup_4',['Divide_Up',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e',1,'mylibs_defs.h']]]
];
diff --git a/Doc/html/search/all_4.js b/Doc/html/search/all_4.js
index 2d7d531..ac3a9dc 100644
--- a/Doc/html/search/all_4.js
+++ b/Doc/html/search/all_4.js
@@ -1,7 +1,16 @@
var searchData=
[
- ['encoder_20tools_0',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]],
- ['encoder_5fdiff_1',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]],
- ['encoder_5fshdw_2',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]],
- ['error_20handler_20defines_3',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]]
+ ['enable_5fevolve_5foptimization_0',['ENABLE_EVOLVE_OPTIMIZATION',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47',1,'mylibs_config.h']]],
+ ['encoder_20tools_1',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]],
+ ['encoder_5fdiff_2',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]],
+ ['encoder_5fshdw_3',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]],
+ ['error_20handler_20defines_4',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]],
+ ['evolve_20configs_5',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]],
+ ['evolve_20optimizer_6',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]],
+ ['evolve_5fmax_5fcandidates_7',['EVOLVE_MAX_CANDIDATES',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971',1,'mylibs_config.h']]],
+ ['evolve_5fmax_5fparams_8',['EVOLVE_MAX_PARAMS',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee',1,'mylibs_config.h']]],
+ ['evolve_5foptimizer_2eh_9',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]],
+ ['evolveoptimizer_5finit_10',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9',1,'evolve_optimizer.h']]],
+ ['evolveoptimizer_5fstep_11',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563',1,'evolve_optimizer.h']]],
+ ['evolveoptimizer_5ft_12',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]]
];
diff --git a/Doc/html/search/all_6.js b/Doc/html/search/all_6.js
index bc1f396..ab97706 100644
--- a/Doc/html/search/all_6.js
+++ b/Doc/html/search/all_6.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['general_20defines_0',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
+ ['general_20tools_0',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
['general_20tools_1',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]],
['general_5fgpio_2ec_2',['general_gpio.c',['../general__gpio_8c.html',1,'']]],
['general_5fgpio_2eh_3',['general_gpio.h',['../general__gpio_8h.html',1,'']]],
diff --git a/Doc/html/search/all_8.js b/Doc/html/search/all_8.js
index c3890cd..2b98e91 100644
--- a/Doc/html/search/all_8.js
+++ b/Doc/html/search/all_8.js
@@ -2,8 +2,10 @@ var searchData=
[
['if_5fassert_5fusertracker_0',['if_assert_usertracker',['../group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07',1,'trackers.h']]],
['include_5fbit_5faccess_5flib_1',['INCLUDE_BIT_ACCESS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be',1,'mylibs_config.h']]],
- ['include_5fgeneral_5fperiph_5flibs_2',['INCLUDE_GENERAL_PERIPH_LIBS',['../group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281',1,'mylibs_config.h']]],
- ['include_5ftrace_5flib_3',['INCLUDE_TRACE_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7',1,'mylibs_config.h']]],
- ['include_5ftrackers_5flib_4',['INCLUDE_TRACKERS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32',1,'mylibs_config.h']]],
- ['init_20defines_5',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines']]]
+ ['include_5fevolve_5foptimizer_2',['INCLUDE_EVOLVE_OPTIMIZER',['../group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66',1,'mylibs_config.h']]],
+ ['include_5fgeneral_5fperiph_5flibs_3',['INCLUDE_GENERAL_PERIPH_LIBS',['../group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281',1,'mylibs_config.h']]],
+ ['include_5ftrace_5flib_4',['INCLUDE_TRACE_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7',1,'mylibs_config.h']]],
+ ['include_5ftrackers_5flib_5',['INCLUDE_TRACKERS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32',1,'mylibs_config.h']]],
+ ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines']]],
+ ['iq_5fmutation_7',['iq_mutation',['../struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5',1,'EvolveOptimizer_t']]]
];
diff --git a/Doc/html/search/all_9.js b/Doc/html/search/all_9.js
index 3688bc7..c3193f7 100644
--- a/Doc/html/search/all_9.js
+++ b/Doc/html/search/all_9.js
@@ -16,5 +16,6 @@ var searchData=
['libs_13',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]],
['log_5flevel_14',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]],
['log_5fprintf_15',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]],
- ['lr_16',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
+ ['loss_16',['loss',['../struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d',1,'EvolveOptimizer_t']]],
+ ['lr_17',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
];
diff --git a/Doc/html/search/all_a.js b/Doc/html/search/all_a.js
index a1f0bfd..f2ebf4a 100644
--- a/Doc/html/search/all_a.js
+++ b/Doc/html/search/all_a.js
@@ -10,7 +10,7 @@ var searchData=
['my_5fprintf_7',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]],
['mylibs_8',['MyLibs',['../index.html',1,'']]],
['mylibs_5fconfig_2eh_9',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]],
- ['mylibs_5fdefines_10',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]],
+ ['mylibs_5fdefines_10',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]],
['mylibs_5fdefs_2eh_11',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]],
['mylibs_5ferror_5fhandler_12',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]],
['mylibs_5finclude_2eh_13',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]]
diff --git a/Doc/html/search/all_b.js b/Doc/html/search/all_b.js
index a8606f0..ec18e7a 100644
--- a/Doc/html/search/all_b.js
+++ b/Doc/html/search/all_b.js
@@ -1,4 +1,7 @@
var searchData=
[
- ['num_5fof_5fusercnts_0',['num_of_usercnts',['../group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc',1,'trackers.h']]]
+ ['n_5fbest_0',['n_best',['../struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6',1,'EvolveOptimizer_t']]],
+ ['n_5fcand_1',['n_cand',['../struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1',1,'EvolveOptimizer_t']]],
+ ['n_5fparams_2',['n_params',['../struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8',1,'EvolveOptimizer_t']]],
+ ['num_5fof_5fusercnts_3',['num_of_usercnts',['../group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc',1,'trackers.h']]]
];
diff --git a/Doc/html/search/all_c.js b/Doc/html/search/all_c.js
index 3d76a60..fa27ef2 100644
--- a/Doc/html/search/all_c.js
+++ b/Doc/html/search/all_c.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]]
+ ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
+ ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]]
];
diff --git a/Doc/html/search/all_d.js b/Doc/html/search/all_d.js
index 576fee6..397ab9d 100644
--- a/Doc/html/search/all_d.js
+++ b/Doc/html/search/all_d.js
@@ -1,7 +1,9 @@
var searchData=
[
- ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]],
- ['peripheral_1',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]],
- ['psr_2',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]],
- ['pwm_20oc_20channels_20tools_3',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]]
+ ['param_5fscale_5fq16_0',['PARAM_SCALE_Q16',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc',1,'evolve_optimizer.h']]],
+ ['param_5funscale_5fq16_1',['PARAM_UNSCALE_Q16',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba',1,'evolve_optimizer.h']]],
+ ['pc_2',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]],
+ ['peripheral_3',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]],
+ ['psr_4',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]],
+ ['pwm_20oc_20channels_20tools_5',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]]
];
diff --git a/Doc/html/search/classes_0.js b/Doc/html/search/classes_0.js
index 7f32de6..e1df323 100644
--- a/Doc/html/search/classes_0.js
+++ b/Doc/html/search/classes_0.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['gpio_5fledtypedef_0',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]],
- ['gpio_5fswitchtypedef_1',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]]
+ ['evolveoptimizer_5ft_0',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]]
];
diff --git a/Doc/html/search/classes_1.js b/Doc/html/search/classes_1.js
index c637c5a..7f32de6 100644
--- a/Doc/html/search/classes_1.js
+++ b/Doc/html/search/classes_1.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['hf_5fstackframe_5ft_0',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]]
+ ['gpio_5fledtypedef_0',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]],
+ ['gpio_5fswitchtypedef_1',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]]
];
diff --git a/Doc/html/search/classes_2.js b/Doc/html/search/classes_2.js
index a9ade0a..c637c5a 100644
--- a/Doc/html/search/classes_2.js
+++ b/Doc/html/search/classes_2.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['rtt_5fflashheader_5ft_0',['RTT_FlashHeader_t',['../struct_r_t_t___flash_header__t.html',1,'']]]
+ ['hf_5fstackframe_5ft_0',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]]
];
diff --git a/Doc/html/search/classes_3.js b/Doc/html/search/classes_3.js
index bf0ca51..a9ade0a 100644
--- a/Doc/html/search/classes_3.js
+++ b/Doc/html/search/classes_3.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['spi_5fsettingstypedef_0',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]]
+ ['rtt_5fflashheader_5ft_0',['RTT_FlashHeader_t',['../struct_r_t_t___flash_header__t.html',1,'']]]
];
diff --git a/Doc/html/search/classes_4.js b/Doc/html/search/classes_4.js
index 91c6e88..bf0ca51 100644
--- a/Doc/html/search/classes_4.js
+++ b/Doc/html/search/classes_4.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['tim_5fencodertypedef_0',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]],
- ['tim_5fsettingstypedef_1',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]]
+ ['spi_5fsettingstypedef_0',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]]
];
diff --git a/Doc/html/search/classes_5.js b/Doc/html/search/classes_5.js
index e495a9f..91c6e88 100644
--- a/Doc/html/search/classes_5.js
+++ b/Doc/html/search/classes_5.js
@@ -1,8 +1,5 @@
var searchData=
[
- ['uart_5fsettingstypedef_0',['UART_SettingsTypeDef',['../struct_u_a_r_t___settings_type_def.html',1,'']]],
- ['uint16_5fbittypedef_1',['uint16_BitTypeDef',['../unionuint16___bit_type_def.html',1,'']]],
- ['uint32_5fbittypedef_2',['uint32_BitTypeDef',['../unionuint32___bit_type_def.html',1,'']]],
- ['uint64_5fbittypedef_3',['uint64_BitTypeDef',['../unionuint64___bit_type_def.html',1,'']]],
- ['uint8_5fbittypedef_4',['uint8_BitTypeDef',['../unionuint8___bit_type_def.html',1,'']]]
+ ['tim_5fencodertypedef_0',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]],
+ ['tim_5fsettingstypedef_1',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]]
];
diff --git a/Doc/html/search/classes_6.js b/Doc/html/search/classes_6.js
new file mode 100644
index 0000000..e495a9f
--- /dev/null
+++ b/Doc/html/search/classes_6.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['uart_5fsettingstypedef_0',['UART_SettingsTypeDef',['../struct_u_a_r_t___settings_type_def.html',1,'']]],
+ ['uint16_5fbittypedef_1',['uint16_BitTypeDef',['../unionuint16___bit_type_def.html',1,'']]],
+ ['uint32_5fbittypedef_2',['uint32_BitTypeDef',['../unionuint32___bit_type_def.html',1,'']]],
+ ['uint64_5fbittypedef_3',['uint64_BitTypeDef',['../unionuint64___bit_type_def.html',1,'']]],
+ ['uint8_5fbittypedef_4',['uint8_BitTypeDef',['../unionuint8___bit_type_def.html',1,'']]]
+];
diff --git a/Doc/html/search/files_1.js b/Doc/html/search/files_1.js
index 30872e3..9050e12 100644
--- a/Doc/html/search/files_1.js
+++ b/Doc/html/search/files_1.js
@@ -1,7 +1,4 @@
var searchData=
[
- ['general_5fgpio_2ec_0',['general_gpio.c',['../general__gpio_8c.html',1,'']]],
- ['general_5fgpio_2eh_1',['general_gpio.h',['../general__gpio_8h.html',1,'']]],
- ['general_5ftim_2ec_2',['general_tim.c',['../general__tim_8c.html',1,'']]],
- ['general_5ftim_2eh_3',['general_tim.h',['../general__tim_8h.html',1,'']]]
+ ['evolve_5foptimizer_2eh_0',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]]
];
diff --git a/Doc/html/search/files_2.js b/Doc/html/search/files_2.js
index 3a61f58..30872e3 100644
--- a/Doc/html/search/files_2.js
+++ b/Doc/html/search/files_2.js
@@ -1,6 +1,7 @@
var searchData=
[
- ['mylibs_5fconfig_2eh_0',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]],
- ['mylibs_5fdefs_2eh_1',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]],
- ['mylibs_5finclude_2eh_2',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]]
+ ['general_5fgpio_2ec_0',['general_gpio.c',['../general__gpio_8c.html',1,'']]],
+ ['general_5fgpio_2eh_1',['general_gpio.h',['../general__gpio_8h.html',1,'']]],
+ ['general_5ftim_2ec_2',['general_tim.c',['../general__tim_8c.html',1,'']]],
+ ['general_5ftim_2eh_3',['general_tim.h',['../general__tim_8h.html',1,'']]]
];
diff --git a/Doc/html/search/files_3.js b/Doc/html/search/files_3.js
index f744967..3a61f58 100644
--- a/Doc/html/search/files_3.js
+++ b/Doc/html/search/files_3.js
@@ -1,5 +1,6 @@
var searchData=
[
- ['trace_2eh_0',['trace.h',['../trace_8h.html',1,'']]],
- ['trackers_2eh_1',['trackers.h',['../trackers_8h.html',1,'']]]
+ ['mylibs_5fconfig_2eh_0',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]],
+ ['mylibs_5fdefs_2eh_1',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]],
+ ['mylibs_5finclude_2eh_2',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]]
];
diff --git a/Doc/html/search/files_4.js b/Doc/html/search/files_4.js
new file mode 100644
index 0000000..f744967
--- /dev/null
+++ b/Doc/html/search/files_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['trace_2eh_0',['trace.h',['../trace_8h.html',1,'']]],
+ ['trackers_2eh_1',['trackers.h',['../trackers_8h.html',1,'']]]
+];
diff --git a/Doc/html/search/functions_0.js b/Doc/html/search/functions_0.js
index a564d7b..a560c32 100644
--- a/Doc/html/search/functions_0.js
+++ b/Doc/html/search/functions_0.js
@@ -1,13 +1,5 @@
var searchData=
[
- ['gpio_5fclock_5fenable_0',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]],
- ['gpio_5fled_5fblink_5fstart_1',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
- ['gpio_5fled_5fdynamic_5fhandle_2',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5ffading_5fstart_3',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
- ['gpio_5fled_5finit_4',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]],
- ['gpio_5fled_5foff_5',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5fon_6',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5fset_7',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]],
- ['gpio_5fread_5fswitch_8',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]],
- ['gpio_5fswitch_5finit_9',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]]
+ ['evolveoptimizer_5finit_0',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9',1,'evolve_optimizer.h']]],
+ ['evolveoptimizer_5fstep_1',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563',1,'evolve_optimizer.h']]]
];
diff --git a/Doc/html/search/functions_1.js b/Doc/html/search/functions_1.js
index f4c609a..a564d7b 100644
--- a/Doc/html/search/functions_1.js
+++ b/Doc/html/search/functions_1.js
@@ -1,5 +1,13 @@
var searchData=
[
- ['hf_5fcheckrecovered_0',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]],
- ['hf_5fhandlefault_1',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]]
+ ['gpio_5fclock_5fenable_0',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]],
+ ['gpio_5fled_5fblink_5fstart_1',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
+ ['gpio_5fled_5fdynamic_5fhandle_2',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5ffading_5fstart_3',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
+ ['gpio_5fled_5finit_4',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]],
+ ['gpio_5fled_5foff_5',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5fon_6',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5fset_7',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]],
+ ['gpio_5fread_5fswitch_8',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]],
+ ['gpio_5fswitch_5finit_9',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]]
];
diff --git a/Doc/html/search/functions_2.js b/Doc/html/search/functions_2.js
index 75ac569..f4c609a 100644
--- a/Doc/html/search/functions_2.js
+++ b/Doc/html/search/functions_2.js
@@ -1,7 +1,5 @@
var searchData=
[
- ['rtt_5feraseflash_0',['RTT_EraseFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1',1,'trace.h']]],
- ['rtt_5fflashprepare_1',['RTT_FlashPrepare',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6',1,'trace.h']]],
- ['rtt_5freadfromflash_2',['RTT_ReadFromFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146',1,'trace.h']]],
- ['rtt_5fsavetoflash_3',['RTT_SaveToFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63',1,'trace.h']]]
+ ['hf_5fcheckrecovered_0',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]],
+ ['hf_5fhandlefault_1',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]]
];
diff --git a/Doc/html/search/functions_3.js b/Doc/html/search/functions_3.js
index d14df27..75ac569 100644
--- a/Doc/html/search/functions_3.js
+++ b/Doc/html/search/functions_3.js
@@ -1,14 +1,7 @@
var searchData=
[
- ['tim_5fbase_5finit_0',['TIM_Base_Init',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c']]],
- ['tim_5fbase_5fmspdeinit_1',['TIM_Base_MspDeInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c']]],
- ['tim_5fbase_5fmspinit_2',['TIM_Base_MspInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c']]],
- ['tim_5fdelay_3',['TIM_Delay',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
- ['tim_5fdelay_5fnonblocking_4',['TIM_Delay_NonBlocking',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
- ['tim_5fdelay_5fstart_5',['TIM_Delay_Start',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c']]],
- ['tim_5fencoder_5finit_6',['TIM_Encoder_Init',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim): general_tim.c']]],
- ['tim_5fencoder_5fread_7',['TIM_Encoder_Read',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c']]],
- ['tim_5fencoder_5freadswitch_8',['TIM_Encoder_ReadSwitch',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c']]],
- ['tim_5foc_5fcomparator_5finit_9',['TIM_OC_Comparator_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c']]],
- ['tim_5foutput_5fpwm_5finit_10',['TIM_Output_PWM_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN): general_tim.c']]]
+ ['rtt_5feraseflash_0',['RTT_EraseFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1',1,'trace.h']]],
+ ['rtt_5fflashprepare_1',['RTT_FlashPrepare',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6',1,'trace.h']]],
+ ['rtt_5freadfromflash_2',['RTT_ReadFromFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146',1,'trace.h']]],
+ ['rtt_5fsavetoflash_3',['RTT_SaveToFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63',1,'trace.h']]]
];
diff --git a/Doc/html/search/functions_4.js b/Doc/html/search/functions_4.js
new file mode 100644
index 0000000..d14df27
--- /dev/null
+++ b/Doc/html/search/functions_4.js
@@ -0,0 +1,14 @@
+var searchData=
+[
+ ['tim_5fbase_5finit_0',['TIM_Base_Init',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c']]],
+ ['tim_5fbase_5fmspdeinit_1',['TIM_Base_MspDeInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c']]],
+ ['tim_5fbase_5fmspinit_2',['TIM_Base_MspInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c']]],
+ ['tim_5fdelay_3',['TIM_Delay',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
+ ['tim_5fdelay_5fnonblocking_4',['TIM_Delay_NonBlocking',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
+ ['tim_5fdelay_5fstart_5',['TIM_Delay_Start',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c']]],
+ ['tim_5fencoder_5finit_6',['TIM_Encoder_Init',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim): general_tim.c']]],
+ ['tim_5fencoder_5fread_7',['TIM_Encoder_Read',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c']]],
+ ['tim_5fencoder_5freadswitch_8',['TIM_Encoder_ReadSwitch',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c']]],
+ ['tim_5foc_5fcomparator_5finit_9',['TIM_OC_Comparator_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c']]],
+ ['tim_5foutput_5fpwm_5finit_10',['TIM_Output_PWM_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN): general_tim.c']]]
+];
diff --git a/Doc/html/search/groups_2.js b/Doc/html/search/groups_2.js
index a6f1e91..e1a626d 100644
--- a/Doc/html/search/groups_2.js
+++ b/Doc/html/search/groups_2.js
@@ -2,5 +2,5 @@ var searchData=
[
['channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
['configs_1',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]],
- ['configs_2',['configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]]
+ ['configs_2',['configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'Evolve configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]]
];
diff --git a/Doc/html/search/groups_3.js b/Doc/html/search/groups_3.js
index 99972f3..dadffcf 100644
--- a/Doc/html/search/groups_3.js
+++ b/Doc/html/search/groups_3.js
@@ -1,7 +1,6 @@
var searchData=
[
- ['defines_0',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
- ['defines_1',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]],
- ['delay_20tools_2',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]],
- ['delays_20defines_3',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]]
+ ['defines_0',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]],
+ ['delay_20tools_1',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]],
+ ['delays_20defines_2',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]]
];
diff --git a/Doc/html/search/groups_4.js b/Doc/html/search/groups_4.js
index d2fc234..ca0406b 100644
--- a/Doc/html/search/groups_4.js
+++ b/Doc/html/search/groups_4.js
@@ -1,5 +1,7 @@
var searchData=
[
['encoder_20tools_0',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]],
- ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]]
+ ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]],
+ ['evolve_20configs_2',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]],
+ ['evolve_20optimizer_3',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]]
];
diff --git a/Doc/html/search/groups_6.js b/Doc/html/search/groups_6.js
index d520974..96772f9 100644
--- a/Doc/html/search/groups_6.js
+++ b/Doc/html/search/groups_6.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['general_20defines_0',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
+ ['general_20tools_0',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
['general_20tools_1',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]],
['gpio_20tools_2',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]],
['gpio_20trace_20defines_3',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]]
diff --git a/Doc/html/search/groups_b.js b/Doc/html/search/groups_b.js
index 3d76a60..fa27ef2 100644
--- a/Doc/html/search/groups_b.js
+++ b/Doc/html/search/groups_b.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]]
+ ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
+ ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]]
];
diff --git a/Doc/html/search/groups_f.js b/Doc/html/search/groups_f.js
index 2f73f99..96ba99e 100644
--- a/Doc/html/search/groups_f.js
+++ b/Doc/html/search/groups_f.js
@@ -1,7 +1,7 @@
var searchData=
[
['tim_20tools_0',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]],
- ['tools_1',['Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]],
+ ['tools_1',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]],
['tools_2',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]],
['trace_20configs_3',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]],
['trace_20defines_4',['Trace defines',['../group___t_r_a_c_e.html',1,'']]],
diff --git a/Doc/html/search/pages_1.js b/Doc/html/search/pages_1.js
index e8b83bf..c604c22 100644
--- a/Doc/html/search/pages_1.js
+++ b/Doc/html/search/pages_1.js
@@ -3,5 +3,5 @@ var searchData=
['my_5flibs_5fgpio_0',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]],
['my_5flibs_5ftim_1',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]],
['mylibs_2',['MyLibs',['../index.html',1,'']]],
- ['mylibs_5fdefines_3',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]]
+ ['mylibs_5fdefines_3',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]]
];
diff --git a/Doc/html/search/pages_7.js b/Doc/html/search/pages_7.js
index 60163ac..ca20af9 100644
--- a/Doc/html/search/pages_7.js
+++ b/Doc/html/search/pages_7.js
@@ -1,6 +1,6 @@
var searchData=
[
['обзор_0',['Обзор',['../index.html#overview',1,'']]],
- ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]],
+ ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]],
['основные_20возможности_2',['Основные возможности',['../index.html#features',1,'']]]
];
diff --git a/Doc/html/search/pages_c.js b/Doc/html/search/pages_c.js
index 6a8db26..f69cabe 100644
--- a/Doc/html/search/pages_c.js
+++ b/Doc/html/search/pages_c.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['утилиты_20mylibs_5fdefines_0',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]]
+ ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]]
];
diff --git a/Doc/html/search/searchdata.js b/Doc/html/search/searchdata.js
index 3d21b35..afacf37 100644
--- a/Doc/html/search/searchdata.js
+++ b/Doc/html/search/searchdata.js
@@ -1,10 +1,10 @@
var indexSectionsWithContent =
{
0: "abcdefghilmnoprstuвзимопрсту",
- 1: "ghrstu",
- 2: "bgmt",
- 3: "ghrt",
- 4: "deghlprst",
+ 1: "eghrstu",
+ 2: "begmt",
+ 3: "eghrt",
+ 4: "cdeghilnprst",
5: "gt",
6: "lt",
7: "abcdefghilmoprstu",
diff --git a/Doc/html/search/variables_0.js b/Doc/html/search/variables_0.js
index fd94506..c5df047 100644
--- a/Doc/html/search/variables_0.js
+++ b/Doc/html/search/variables_0.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]]
+ ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]],
+ ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d',1,'EvolveOptimizer_t']]]
];
diff --git a/Doc/html/search/variables_1.js b/Doc/html/search/variables_1.js
index 677b54d..fd94506 100644
--- a/Doc/html/search/variables_1.js
+++ b/Doc/html/search/variables_1.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['encoder_5fdiff_0',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]],
- ['encoder_5fshdw_1',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]]
+ ['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]]
];
diff --git a/Doc/html/search/variables_2.js b/Doc/html/search/variables_2.js
index ebaa3e9..677b54d 100644
--- a/Doc/html/search/variables_2.js
+++ b/Doc/html/search/variables_2.js
@@ -1,7 +1,5 @@
var searchData=
[
- ['gpio_5fpin_5fsw_0',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]],
- ['gpio_5fpin_5fti1_1',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]],
- ['gpio_5fpin_5fti2_2',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]],
- ['gpiox_3',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef']]]
+ ['encoder_5fdiff_0',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]],
+ ['encoder_5fshdw_1',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]]
];
diff --git a/Doc/html/search/variables_3.js b/Doc/html/search/variables_3.js
index 020fcba..ebaa3e9 100644
--- a/Doc/html/search/variables_3.js
+++ b/Doc/html/search/variables_3.js
@@ -1,4 +1,7 @@
var searchData=
[
- ['htim_0',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]]
+ ['gpio_5fpin_5fsw_0',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]],
+ ['gpio_5fpin_5fti1_1',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]],
+ ['gpio_5fpin_5fti2_2',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]],
+ ['gpiox_3',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef']]]
];
diff --git a/Doc/html/search/variables_4.js b/Doc/html/search/variables_4.js
index be38d2d..020fcba 100644
--- a/Doc/html/search/variables_4.js
+++ b/Doc/html/search/variables_4.js
@@ -1,8 +1,4 @@
var searchData=
[
- ['led_5factivelvl_0',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]],
- ['led_5fperiod_1',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]],
- ['led_5fpin_2',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]],
- ['led_5fport_3',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]],
- ['lr_4',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
+ ['htim_0',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]]
];
diff --git a/Doc/html/search/variables_5.js b/Doc/html/search/variables_5.js
index 7d04971..b322adf 100644
--- a/Doc/html/search/variables_5.js
+++ b/Doc/html/search/variables_5.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]],
- ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]]
+ ['iq_5fmutation_0',['iq_mutation',['../struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5',1,'EvolveOptimizer_t']]]
];
diff --git a/Doc/html/search/variables_6.js b/Doc/html/search/variables_6.js
index 29cfada..def9829 100644
--- a/Doc/html/search/variables_6.js
+++ b/Doc/html/search/variables_6.js
@@ -1,8 +1,9 @@
var searchData=
[
- ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]],
- ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]],
- ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]],
- ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]],
- ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]]
+ ['led_5factivelvl_0',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]],
+ ['led_5fperiod_1',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]],
+ ['led_5fpin_2',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]],
+ ['led_5fport_3',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]],
+ ['loss_4',['loss',['../struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d',1,'EvolveOptimizer_t']]],
+ ['lr_5',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
];
diff --git a/Doc/html/search/variables_7.js b/Doc/html/search/variables_7.js
index 4853f37..0e355de 100644
--- a/Doc/html/search/variables_7.js
+++ b/Doc/html/search/variables_7.js
@@ -1,21 +1,6 @@
var searchData=
[
- ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]],
- ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]],
- ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]],
- ['size_3',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]],
- ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]],
- ['sslaveconfig_5',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]],
- ['state_6',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]],
- ['stickbaseprescaler_7',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]],
- ['stickbaseus_8',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]],
- ['stimahbfreqmhz_9',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]],
- ['stimfreqhz_10',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]],
- ['stimmode_11',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]],
- ['sw_12',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]],
- ['sw_5factivelvl_13',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]],
- ['sw_5ffilterdelay_14',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fpin_15',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fport_16',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fprevstate_17',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]]
+ ['n_5fbest_0',['n_best',['../struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6',1,'EvolveOptimizer_t']]],
+ ['n_5fcand_1',['n_cand',['../struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1',1,'EvolveOptimizer_t']]],
+ ['n_5fparams_2',['n_params',['../struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8',1,'EvolveOptimizer_t']]]
];
diff --git a/Doc/html/search/variables_8.js b/Doc/html/search/variables_8.js
index 24558b0..7d04971 100644
--- a/Doc/html/search/variables_8.js
+++ b/Doc/html/search/variables_8.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]]
+ ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]],
+ ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]]
];
diff --git a/Doc/html/search/variables_9.js b/Doc/html/search/variables_9.js
new file mode 100644
index 0000000..29cfada
--- /dev/null
+++ b/Doc/html/search/variables_9.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]],
+ ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]],
+ ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]],
+ ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]],
+ ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]]
+];
diff --git a/Doc/html/search/variables_a.js b/Doc/html/search/variables_a.js
new file mode 100644
index 0000000..4853f37
--- /dev/null
+++ b/Doc/html/search/variables_a.js
@@ -0,0 +1,21 @@
+var searchData=
+[
+ ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]],
+ ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]],
+ ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]],
+ ['size_3',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]],
+ ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]],
+ ['sslaveconfig_5',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]],
+ ['state_6',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]],
+ ['stickbaseprescaler_7',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]],
+ ['stickbaseus_8',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]],
+ ['stimahbfreqmhz_9',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]],
+ ['stimfreqhz_10',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]],
+ ['stimmode_11',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]],
+ ['sw_12',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]],
+ ['sw_5factivelvl_13',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5ffilterdelay_14',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fpin_15',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fport_16',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fprevstate_17',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]]
+];
diff --git a/Doc/html/search/variables_b.js b/Doc/html/search/variables_b.js
new file mode 100644
index 0000000..24558b0
--- /dev/null
+++ b/Doc/html/search/variables_b.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]]
+];
diff --git a/Doc/html/struct_evolve_optimizer__t-members.html b/Doc/html/struct_evolve_optimizer__t-members.html
new file mode 100644
index 0000000..681531b
--- /dev/null
+++ b/Doc/html/struct_evolve_optimizer__t-members.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+MyLibs: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
This is the complete list of members for EvolveOptimizer_t , including all inherited members.
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_evolve_optimizer__t.html b/Doc/html/struct_evolve_optimizer__t.html
new file mode 100644
index 0000000..9263f29
--- /dev/null
+++ b/Doc/html/struct_evolve_optimizer__t.html
@@ -0,0 +1,278 @@
+
+
+
+
+
+
+
+MyLibs: EvolveOptimizer_t Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
Структура эволюционного оптимизатора
+ More...
+
+
#include <evolve_optimizer.h >
+
+
+uint16_t n_params
+ Количество параметров
+uint16_t n_cand
+ Количество кандидатов
+uint16_t n_best
+ Количество лучших, усредняемых
+uint16_t iq_mutation
+ Амплитуда мутации в Q16.16.
+uint16_t cand_index
+ Индекс кандидата для обработки
+int32_t loss [100]
+ Loss для каждого кандидата
+int32_t candidates [100][20]
+ Параметры кандидатов
+
+
+
Структура эволюционного оптимизатора
+
+
Definition at line 81 of file evolve_optimizer.h .
+
+
+
◆ n_params
+
+
+
+
+
+ uint16_t EvolveOptimizer_t::n_params
+
+
+
+
+
+
◆ n_cand
+
+
+
+
+
+ uint16_t EvolveOptimizer_t::n_cand
+
+
+
+
+
+
◆ n_best
+
+
+
+
+
+ uint16_t EvolveOptimizer_t::n_best
+
+
+
+
+
+
◆ iq_mutation
+
+
+
+
+
+ uint16_t EvolveOptimizer_t::iq_mutation
+
+
+
+
+
+
◆ cand_index
+
+
+
+
+
+ uint16_t EvolveOptimizer_t::cand_index
+
+
+
+
+
+
◆ loss
+
+
+
+
+
+ int32_t EvolveOptimizer_t::loss[100]
+
+
+
+
+
+
◆ candidates
+
+
+
+
+
+ int32_t EvolveOptimizer_t::candidates[100][20]
+
+
+
+
+
The documentation for this struct was generated from the following file:
+
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_evolve_optimizer__t.js b/Doc/html/struct_evolve_optimizer__t.js
new file mode 100644
index 0000000..9f66374
--- /dev/null
+++ b/Doc/html/struct_evolve_optimizer__t.js
@@ -0,0 +1,10 @@
+var struct_evolve_optimizer__t =
+[
+ [ "n_params", "struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8", null ],
+ [ "n_cand", "struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1", null ],
+ [ "n_best", "struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6", null ],
+ [ "iq_mutation", "struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5", null ],
+ [ "cand_index", "struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae", null ],
+ [ "loss", "struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d", null ],
+ [ "candidates", "struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d", null ]
+];
\ No newline at end of file
diff --git a/Doc/html/struct_h_f___stack_frame__t.html b/Doc/html/struct_h_f___stack_frame__t.html
index c49284d..520e7a8 100644
--- a/Doc/html/struct_h_f___stack_frame__t.html
+++ b/Doc/html/struct_h_f___stack_frame__t.html
@@ -97,7 +97,7 @@ $(function(){initNavTree('struct_h_f___stack_frame__t.html','','struct_h_f___sta
diff --git a/Doc/html/struct_r_t_t___flash_header__t.html b/Doc/html/struct_r_t_t___flash_header__t.html
index dc68957..1abfede 100644
--- a/Doc/html/struct_r_t_t___flash_header__t.html
+++ b/Doc/html/struct_r_t_t___flash_header__t.html
@@ -97,7 +97,7 @@ $(function(){initNavTree('struct_r_t_t___flash_header__t.html','','struct_r_t_t_
diff --git a/Doc/html/topics.html b/Doc/html/topics.html
index b8674ec..1361458 100644
--- a/Doc/html/topics.html
+++ b/Doc/html/topics.html
@@ -105,18 +105,20 @@ $(function(){initNavTree('topics.html','',''); });
My Libs Все используемые MyLibs библиотеки
Configs Конфигурации для библиотек MyLibs
Trace configs Конфигурация трекеров и трассировки
-
Libraries configs Подключение различных модулей библиотеки
-
General Defines Общие макросы и typedef'ы, используемые по всему проекту
-
Bit access defines Макросы и typedef'ы для работы с битами в unsigned типах
-
Error Handler defines Дефайны для обработки ошибок
-
Delays defines Макросы и определения для работы с задержками в миллисекундах
-
Utils defines Общие вспомогательные макросы
-
Trace defines Дефайны для работы с трассировкой
-
Serial trace defines Дефайны для работы с serial трассировкой (SWO, RTT)
-
GPIO trace defines Дефайны для работы с GPIO трассировкой
-
Flash RTT Buffer Макросы и функции для сохранения/чтения RTT буфера в Flash
-
Hardfault trace defines Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
-
Trackers defines Дефайны для работы с трекерами
+
Evolve configs Конфигурация однослойного персептрона и алгоритма обучения
+
Libraries configs Подключение различных модулей библиотеки
+
General Tools Общие макросы и typedef'ы, используемые по всему проекту
+
Bit access defines Макросы и typedef'ы для работы с битами в unsigned типах
+
Evolve optimizer Библиотека для эволюционного подбора параметров
+
Error Handler defines Дефайны для обработки ошибок
+
Delays defines Макросы и определения для работы с задержками в миллисекундах
+
Utils defines Общие вспомогательные макросы
+
Trace defines Дефайны для работы с трассировкой
+
Serial trace defines Дефайны для работы с serial трассировкой (SWO, RTT)
+
GPIO trace defines Дефайны для работы с GPIO трассировкой
+
Flash RTT Buffer Макросы и функции для сохранения/чтения RTT буфера в Flash
+
Hardfault trace defines Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
+
Trackers defines Дефайны для работы с трекерами
Peripheral Модули для управления периферией
GPIO Tools Функции и макросы для удобной работы с GPIO
General tools Общие функции/макросы для работы с GPIO
diff --git a/Doc/html/trackers_8h_source.html b/Doc/html/trackers_8h_source.html
index beb26f3..847f6be 100644
--- a/Doc/html/trackers_8h_source.html
+++ b/Doc/html/trackers_8h_source.html
@@ -238,26 +238,32 @@ $(function(){initNavTree('trackers_8h_source.html','',''); });
135 #define TrackerTypeDef(num_user_vars) void *
-
137 #define num_of_usercnts(_user_)
-
138 #define assert_tracecnt(_cntstruct_, _uservarnumb_)
-
-
140 #define TrackerCnt_Ok(_cntstruct_)
-
141 #define TrackerCnt_Err(_cntstruct_)
-
142 #define TrackerCnt_Warn(_cntstruct_)
-
143 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
-
144 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
-
-
-
147 #define TrackerClear_All(_cntstruct_)
-
148 #define TrackerClear_Ok(_cntstruct_)
-
149 #define TrackerClear_Err(_cntstruct_)
-
150 #define TrackerClear_Warn(_cntstruct_)
-
151 #define TrackerClear_User(_cntstruct_)
-
152 #define TrackerClear_UserAll(_cntstruct_)
-
-
-
-
+
137 #define num_of_usercnts(_user_) 0
+
138 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
+
139 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
+
140 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
+
+
142 #define TrackerGet_Ok(_cntstruct_) dummy
+
143 #define TrackerGet_Err(_cntstruct_) dummy
+
144 #define TrackerGet_Warn(_cntstruct_) dummy
+
145 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
+
+
147 #define TrackerCnt_Ok(_cntstruct_)
+
148 #define TrackerCnt_Err(_cntstruct_)
+
149 #define TrackerCnt_Warn(_cntstruct_)
+
150 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
+
151 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
+
+
153 #define TrackerClear_All(_cntstruct_)
+
154 #define TrackerClear_Ok(_cntstruct_)
+
155 #define TrackerClear_Err(_cntstruct_)
+
156 #define TrackerClear_Warn(_cntstruct_)
+
157 #define TrackerClear_User(_cntstruct_)
+
158 #define TrackerClear_UserAll(_cntstruct_)
+
+
+
+
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
diff --git a/Doc/html/unionuint16___bit_type_def.html b/Doc/html/unionuint16___bit_type_def.html
index e34fe8a..a6cc4cb 100644
--- a/Doc/html/unionuint16___bit_type_def.html
+++ b/Doc/html/unionuint16___bit_type_def.html
@@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint16___bit_type_def.html','','unionuint16___bit
diff --git a/Doc/html/unionuint32___bit_type_def.html b/Doc/html/unionuint32___bit_type_def.html
index 8d72933..05761c6 100644
--- a/Doc/html/unionuint32___bit_type_def.html
+++ b/Doc/html/unionuint32___bit_type_def.html
@@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint32___bit_type_def.html','','unionuint32___bit
diff --git a/Doc/html/unionuint64___bit_type_def.html b/Doc/html/unionuint64___bit_type_def.html
index 59935e4..d9aa7f7 100644
--- a/Doc/html/unionuint64___bit_type_def.html
+++ b/Doc/html/unionuint64___bit_type_def.html
@@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint64___bit_type_def.html','','unionuint64___bit
diff --git a/Doc/html/unionuint8___bit_type_def.html b/Doc/html/unionuint8___bit_type_def.html
index 0e46494..53a402f 100644
--- a/Doc/html/unionuint8___bit_type_def.html
+++ b/Doc/html/unionuint8___bit_type_def.html
@@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint8___bit_type_def.html','','unionuint8___bit_t
diff --git a/Doc/latex/annotated.tex b/Doc/latex/annotated.tex
index 0f093a6..6cc7cee 100644
--- a/Doc/latex/annotated.tex
+++ b/Doc/latex/annotated.tex
@@ -1,5 +1,6 @@
\doxysection{Class List}
Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \\*Структура эволюционного оптимизатора }{\pageref{struct_evolve_optimizer__t}}{}
\item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \\*Структура светодиода }{\pageref{struct_g_p_i_o___l_e_d_type_def}}{}
\item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \\*Структура кнопки }{\pageref{struct_g_p_i_o___switch_type_def}}{}
\item\contentsline{section}{\mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \\*Контекст стек-\/фрейма процессора при Hard\+Fault }{\pageref{struct_h_f___stack_frame__t}}{}
diff --git a/Doc/latex/bit__access_8h.tex b/Doc/latex/bit__access_8h.tex
index 4ce7302..31e7227 100644
--- a/Doc/latex/bit__access_8h.tex
+++ b/Doc/latex/bit__access_8h.tex
@@ -6,16 +6,14 @@
{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
-Include dependency graph for bit\+\_\+access.\+h\+:
-\nopagebreak
+Include dependency graph for bit\+\_\+access.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{bit__access_8h__incl}
\end{center}
\end{figure}
-This graph shows which files directly or indirectly include this file\+:
-\nopagebreak
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/bit__access_8h__dep__incl.pdf b/Doc/latex/bit__access_8h__dep__incl.pdf
index 482e90d..3d0eaaf 100644
Binary files a/Doc/latex/bit__access_8h__dep__incl.pdf and b/Doc/latex/bit__access_8h__dep__incl.pdf differ
diff --git a/Doc/latex/bit__access_8h__incl.pdf b/Doc/latex/bit__access_8h__incl.pdf
index 2de4b26..f48791a 100644
Binary files a/Doc/latex/bit__access_8h__incl.pdf and b/Doc/latex/bit__access_8h__incl.pdf differ
diff --git a/Doc/latex/evolve__optimizer_8h.tex b/Doc/latex/evolve__optimizer_8h.tex
new file mode 100644
index 0000000..f04a5c3
--- /dev/null
+++ b/Doc/latex/evolve__optimizer_8h.tex
@@ -0,0 +1,52 @@
+\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/evolve\+\_\+optimizer.h File Reference}
+\hypertarget{evolve__optimizer_8h}{}\label{evolve__optimizer_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h}}
+
+
+Заголовочный файл для адаптивного подбора параметров
+
+
+{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
+{\ttfamily \#include $<$stdint.\+h$>$}\newline
+{\ttfamily \#include $<$stdlib.\+h$>$}\newline
+Include dependency graph for evolve\+\_\+optimizer.\+h\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=295pt]{evolve__optimizer_8h__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=229pt]{evolve__optimizer_8h__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\+\_\+\+SCALE\+\_\+\+Q16}}(x, min\+\_\+val, max\+\_\+val)
+\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в Q16.\+16 \mbox{[}0, 65536) \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\+\_\+\+UNSCALE\+\_\+\+Q16}}(q16\+\_\+val, min\+\_\+val, max\+\_\+val)
+\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование Q16.\+16 значения в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, uint16\+\_\+t iq\+\_\+mutation, int32\+\_\+t \texorpdfstring{$\ast$}{*}start\+\_\+params)
+\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item
+\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, int32\+\_\+t \texorpdfstring{$\ast$}{*}params, int32\+\_\+t loss)
+\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Заголовочный файл для адаптивного подбора параметров
+
+
+
+Definition in file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.md5 b/Doc/latex/evolve__optimizer_8h__dep__incl.md5
new file mode 100644
index 0000000..17ac4cc
--- /dev/null
+++ b/Doc/latex/evolve__optimizer_8h__dep__incl.md5
@@ -0,0 +1 @@
+a385857375106a9066dc97059b8e5f66
\ No newline at end of file
diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.pdf b/Doc/latex/evolve__optimizer_8h__dep__incl.pdf
new file mode 100644
index 0000000..59395c0
Binary files /dev/null and b/Doc/latex/evolve__optimizer_8h__dep__incl.pdf differ
diff --git a/Doc/latex/evolve__optimizer_8h__incl.md5 b/Doc/latex/evolve__optimizer_8h__incl.md5
new file mode 100644
index 0000000..b0017bc
--- /dev/null
+++ b/Doc/latex/evolve__optimizer_8h__incl.md5
@@ -0,0 +1 @@
+e567d0680734fcff06b08511863dc20f
\ No newline at end of file
diff --git a/Doc/latex/evolve__optimizer_8h__incl.pdf b/Doc/latex/evolve__optimizer_8h__incl.pdf
new file mode 100644
index 0000000..e9b6ca4
Binary files /dev/null and b/Doc/latex/evolve__optimizer_8h__incl.pdf differ
diff --git a/Doc/latex/evolve__optimizer_8h_source.tex b/Doc/latex/evolve__optimizer_8h_source.tex
new file mode 100644
index 0000000..50733a7
--- /dev/null
+++ b/Doc/latex/evolve__optimizer_8h_source.tex
@@ -0,0 +1,224 @@
+\doxysection{evolve\+\_\+optimizer.\+h}
+\hypertarget{evolve__optimizer_8h_source}{}\label{evolve__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h}}
+\mbox{\hyperlink{evolve__optimizer_8h}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00001}00001\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00002}00002\ \textcolor{comment}{******************************************************************************}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ evolve\_optimizer.h}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ адаптивного\ подбора\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ EVOLVE\_OPTIMIZER\ \ \ \ Evolve\ optimizer}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ эволюционного\ подбора\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Любое\ количество\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Генерацию\ новых\ параметров\ на\ основе\ лучших\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Мутацию\ для\ поиска\ оптимальных\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Несколько\ независимых\ оптимизаторов\ в\ одной\ программе}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00015}00015\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00016}00016\ \textcolor{comment}{Если\ библиотека\ отключена\ @ref\ ENABLE\_EVOLVE\_OPTIMIZATION,\ то\ вставляются\ }}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00017}00017\ \textcolor{comment}{заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00018}00018\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00019}00019\ \textcolor{comment}{@par\ Пример\ использования:}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00020}00020\ \textcolor{comment}{@code}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00021}00021\ \textcolor{comment}{\#include\ "{}evolve\_optimizer.h"{}}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00022}00022\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00023}00023\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00024}00024\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00025}00025\ \textcolor{comment}{\#define\ IQ\_MUTATION\ \ \ \ \ 655}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00026}00026\ \textcolor{comment}{int32\_t\ params[N\_PARAMS];}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00027}00027\ \textcolor{comment}{EvolveOptimizer\_t\ optimizer;}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00028}00028\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00029}00029\ \textcolor{comment}{//\ Формирование\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00030}00030\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00031}00031\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00032}00032\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00033}00033\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00034}00034\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE\_Q16(param\_u16,\ \ 0,\ \ \ \ \ \ 1000);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00035}00035\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE\_Q16(param\_f,\ \ \ \ 0.001f,\ 0.1f);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00036}00036\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE\_Q16(param\_u8,\ \ \ 10,\ \ \ \ \ 100);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00037}00037\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE\_Q16(param\_i16,\ \ 500,\ \ \ \ 5000);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00038}00038\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00039}00039\ \textcolor{comment}{//\ Инициалиазция}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00040}00040\ \textcolor{comment}{EvolveOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ IQ\_MUTATION,\ params);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00041}00041\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00042}00042\ \textcolor{comment}{//\ Шаг\ эволюции}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00043}00043\ \textcolor{comment}{int32\_t\ loss\ =\ calc\_iq\_loss();\ //\ расчет\ эффективности\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00044}00044\ \textcolor{comment}{EvolveOptimizer\_Step(\&optimizer,\ params,\ loss);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00045}00045\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00046}00046\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00047}00047\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE\_Q16(params[0],\ \ 0,\ \ \ \ \ \ 1000);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00048}00048\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE\_Q16(params[1],\ \ 0.001f,\ 0.1f);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00049}00049\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE\_Q16(params[2],\ \ 10,\ \ \ \ \ 100);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00050}00050\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE\_Q16(params[3],\ \ 500,\ \ \ \ 5000);}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00051}00051\ \textcolor{comment}{@endcode}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00052}00052\ \textcolor{comment}{*\ @\{\ \ }}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00053}00053\ \textcolor{comment}{*****************************************************************************/}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00054}00054\ \textcolor{preprocessor}{\#ifndef\ \_\_EVOLVE\_OPTIMIZER\_H\_}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00055}00055\ \textcolor{preprocessor}{\#define\ \_\_EVOLVE\_OPTIMIZER\_H\_}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00056}00056\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00057}00057\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00058}00058\ \textcolor{preprocessor}{\#include\ }}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00059}00059\ \textcolor{preprocessor}{\#include\ }}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00060}00060\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00061}00061\ \textcolor{preprocessor}{\#ifdef\ ENABLE\_EVOLVE\_OPTIMIZATION}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00062}00062\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ Q16\_MUL(a,b)\ ((int32\_t)(((int64\_t)(a)\ *\ (int64\_t)(b))\ >>\ 16))}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00064}00064\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00065}00065\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ Q16.16\ [0,\ 65536)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00067}00067\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00068}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{00068}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \(\backslash\)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{((int32\_t)((((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))\ *\ 65536.0f))}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00070}00070\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00071}00071\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ Q16.16\ значения\ в\ диапазон\ [min\_val,\ max\_val]}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00073}00073\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00074}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{00074}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \(\backslash\)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00075}00075\ \textcolor{preprocessor}{(((float)(q16\_val)\ /\ 65536.0f)\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00076}00076\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00077}00077\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00078}00078\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00080}00080\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00081}\mbox{\hyperlink{struct_evolve_optimizer__t}{00081}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00082}\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{00082}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00083}\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{00083}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00084}\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{00084}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00085}\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{00085}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ в\ Q16.16}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00086}\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{00086}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ кандидата\ для\ обработки}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00087}\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{00087}}\ \ \ int32\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00088}\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{00088}}\ \ \ int32\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}}];\ \ \ \ \textcolor{comment}{///<\ Параметры\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00089}00089\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00090}00090\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00091}00091\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00092}00092\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00093}00093\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00095}00095\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00096}00096\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00097}00097\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00098}00098\ \textcolor{comment}{\ \ *\ @param\ iq\_mutation\ \ Амплитуда\ мутации\ в\ Q16.16}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00099}00099\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (Q16.16)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00101}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{00101}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{EvolveOptimizer\_Init}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00102}00102\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00103}00103\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00104}00104\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00105}00105\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ iq\_mutation,}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00106}00106\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t*\ start\_params)}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00107}00107\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00108}00108\ \ \ \textcolor{keywordflow}{if}(\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{check\_null\_ptr\_2}}(opt,\ start\_params))}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00109}00109\ \ \ \ \ \textcolor{keywordflow}{return};}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00110}00110\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00111}00111\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}}\ \ \ \ \ =\ n\_params;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00112}00112\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00113}00113\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00114}00114\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}}\ \ =\ iq\_mutation;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00115}00115\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00116}00116\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00117}00117\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00118}00118\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[i][j]\ =\ start\_params[j];}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00119}00119\ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00120}00120\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i]\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00121}00121\ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00122}00122\ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00123}00123\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00124}00124\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00125}00125\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00127}00127\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00128}00128\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00129}00129\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата\ (Q16.16)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00130}00130\ \textcolor{comment}{\ \ *\ @details}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00131}00131\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00132}00132\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00133}00133\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00134}00134\ \textcolor{comment}{\ \ *}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00135}00135\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00136}00136\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00137}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{00137}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{EvolveOptimizer\_Step}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00138}00138\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t*\ params,}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00139}00139\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t\ \ \ loss)}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00140}00140\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00141}00141\ \ \ \textcolor{keywordflow}{if}(\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{check\_null\_ptr\_2}}(opt,\ params))}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00142}00142\ \ \ \ \ \textcolor{keywordflow}{return};}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00143}00143\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00144}00144\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00145}00145\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00146}00146\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00147}00147\ \ \ uint16\_t\ mut\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}};}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00148}00148\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00149}00149\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00150}00150\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}]\ =\ loss;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00151}00151\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00152}00152\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}++;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00153}00153\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00154}00154\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ >=\ n\_cand)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00155}00155\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00156}00156\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand\ -\/\ 1;\ i++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ i\ +\ 1;\ j\ <\ n\_cand;\ j++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[j]\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i])\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ int32\_t\ tmp\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i];}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[j];}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00161}00161\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[j]\ =\ tmp\_loss;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00162}00162\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00163}00163\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ k\ =\ 0;\ k\ <\ n\_params;\ k++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00164}00164\ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t\ tmp\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[i][k];}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00165}00165\ \ \ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[i][k]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[j][k];}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00166}00166\ \ \ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[j][k]\ =\ tmp;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00167}00167\ \ \ \ \ \ \ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00168}00168\ \ \ \ \ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00169}00169\ \ \ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00170}00170\ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00171}00171\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00172}00172\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение:\ каждый\ кандидат\ берется\ случайно\ из\ лучших\ с\ мутацией}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00173}00173\ \ \ \ \ uint16\_t\ n\_elite\ =\ 2;\ \textcolor{comment}{//\ количество\ элитных\ кандидатов,\ которые\ сохраняем\ без\ изменений}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00174}00174\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00175}00175\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00176}00176\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Копируем\ лучших\ кандидатов\ напрямую\ без\ мутации}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00177}00177\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00178}00178\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i];\ \textcolor{comment}{//\ просто\ сохраняем\ параметры}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00179}00179\ \ \ \ \ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00180}00180\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[c]\ =\ 0;\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00181}00181\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00182}00182\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Остальные\ кандидаты\ формируются\ с\ кроссовером\ и\ мутацией}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00183}00183\ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00184}00184\ \ \ \ \ \ \ \ \ int32\_t\ noise\ =\ (rand()\ \%\ (2\ *\ mut))\ -\/\ mut;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00185}00185\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ rand()\ \%\ n\_best;\ \textcolor{comment}{//\ каждый\ параметр\ из\ случайного\ лучшего}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00186}00186\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[parent][i]\ +\ noise;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00187}00187\ \ \ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00188}00188\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[c]\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00189}00189\ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00190}00190\ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00191}00191\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00192}00192\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00193}00193\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00194}00194\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00195}00195\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ i++)}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00196}00196\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}][i];}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00197}00197\ \}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00198}00198\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00199}00199\ \textcolor{comment}{//заглушки}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00200}00200\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00201}00201\ \ \ uint16\_t\ n\_params;\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00202}00202\ \ \ uint16\_t\ n\_cand;\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00203}00203\ \ \ uint16\_t\ n\_best;\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00204}00204\ \ \ uint16\_t\ iq\_mutation;\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00205}00205\ \ \ int32\_t\ loss[0];\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00206}00206\ \ \ int32\_t\ candidates[0][0];\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00207}00207\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00208}00208\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00209}00209\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00210}00210\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00211}00211\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (q16\_val)}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00212}00212\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00213}00213\ }
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00214}00214\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_EVOLVE\_OPTIMIZER\_H\_}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00215}00215\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00216}00216\ \textcolor{comment}{/**\ EVOLVE\_OPTIMIZER}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ */}}
+
+\end{DoxyCode}
diff --git a/Doc/latex/files.tex b/Doc/latex/files.tex
index c59750b..009943f 100644
--- a/Doc/latex/files.tex
+++ b/Doc/latex/files.tex
@@ -1,9 +1,11 @@
\doxysection{File List}
Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__flash_8h_source}{\+\_\+\+\_\+general\+\_\+flash.\+h}} }{\pageref{____general__flash_8h_source}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__spi_8h_source}{\+\_\+\+\_\+general\+\_\+spi.\+h}} }{\pageref{____general__spi_8h_source}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__uart_8h_source}{\+\_\+\+\_\+general\+\_\+uart.\+h}} }{\pageref{____general__uart_8h_source}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{}
+\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{evolve__optimizer_8h}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__gpio_8h}{general\+\_\+gpio.\+h}} \\*Заголовочный файл для модуля инициализации портов и работы с ними }{\pageref{general__gpio_8h}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__tim_8h}{general\+\_\+tim.\+h}} \\*Заголовочный файл для модуля инициализации таймеров и работы с ними }{\pageref{general__tim_8h}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{}
diff --git a/Doc/latex/general__gpio_8c.tex b/Doc/latex/general__gpio_8c.tex
index 2a58371..af9a192 100644
--- a/Doc/latex/general__gpio_8c.tex
+++ b/Doc/latex/general__gpio_8c.tex
@@ -6,8 +6,7 @@
{\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline
-Include dependency graph for general\+\_\+gpio.\+c\+:
-\nopagebreak
+Include dependency graph for general\+\_\+gpio.\+c\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/general__gpio_8c__incl.pdf b/Doc/latex/general__gpio_8c__incl.pdf
index 56fa83e..fd06f3c 100644
Binary files a/Doc/latex/general__gpio_8c__incl.pdf and b/Doc/latex/general__gpio_8c__incl.pdf differ
diff --git a/Doc/latex/general__gpio_8h.tex b/Doc/latex/general__gpio_8h.tex
index b6d9be2..59de573 100644
--- a/Doc/latex/general__gpio_8h.tex
+++ b/Doc/latex/general__gpio_8h.tex
@@ -6,16 +6,14 @@
{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
-Include dependency graph for general\+\_\+gpio.\+h\+:
-\nopagebreak
+Include dependency graph for general\+\_\+gpio.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{general__gpio_8h__incl}
\end{center}
\end{figure}
-This graph shows which files directly or indirectly include this file\+:
-\nopagebreak
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/general__gpio_8h__dep__incl.pdf b/Doc/latex/general__gpio_8h__dep__incl.pdf
index e488cfd..23e831f 100644
Binary files a/Doc/latex/general__gpio_8h__dep__incl.pdf and b/Doc/latex/general__gpio_8h__dep__incl.pdf differ
diff --git a/Doc/latex/general__gpio_8h__incl.pdf b/Doc/latex/general__gpio_8h__incl.pdf
index 1699710..ae0be16 100644
Binary files a/Doc/latex/general__gpio_8h__incl.pdf and b/Doc/latex/general__gpio_8h__incl.pdf differ
diff --git a/Doc/latex/general__tim_8c.tex b/Doc/latex/general__tim_8c.tex
index c305423..3cdafc0 100644
--- a/Doc/latex/general__tim_8c.tex
+++ b/Doc/latex/general__tim_8c.tex
@@ -6,8 +6,7 @@
{\ttfamily \#include "{}general\+\_\+tim.\+h"{}}\newline
-Include dependency graph for general\+\_\+tim.\+c\+:
-\nopagebreak
+Include dependency graph for general\+\_\+tim.\+c\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/general__tim_8c__incl.pdf b/Doc/latex/general__tim_8c__incl.pdf
index 536a020..bacd041 100644
Binary files a/Doc/latex/general__tim_8c__incl.pdf and b/Doc/latex/general__tim_8c__incl.pdf differ
diff --git a/Doc/latex/general__tim_8h.tex b/Doc/latex/general__tim_8h.tex
index c021dc9..a7508f1 100644
--- a/Doc/latex/general__tim_8h.tex
+++ b/Doc/latex/general__tim_8h.tex
@@ -7,16 +7,14 @@
{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
{\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline
-Include dependency graph for general\+\_\+tim.\+h\+:
-\nopagebreak
+Include dependency graph for general\+\_\+tim.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{general__tim_8h__incl}
\end{center}
\end{figure}
-This graph shows which files directly or indirectly include this file\+:
-\nopagebreak
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/general__tim_8h__dep__incl.pdf b/Doc/latex/general__tim_8h__dep__incl.pdf
index 7dda336..7984a6b 100644
Binary files a/Doc/latex/general__tim_8h__dep__incl.pdf and b/Doc/latex/general__tim_8h__dep__incl.pdf differ
diff --git a/Doc/latex/general__tim_8h__incl.pdf b/Doc/latex/general__tim_8h__incl.pdf
index 1bade59..99a1fb4 100644
Binary files a/Doc/latex/general__tim_8h__incl.pdf and b/Doc/latex/general__tim_8h__incl.pdf differ
diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5
index aab75c0..d0764fb 100644
--- a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5
+++ b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-58861c427738147326054c740ac5c202
\ No newline at end of file
+56d577ae2ce4b45bacd111b61cb7554f
\ No newline at end of file
diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf
index 82cca8d..3ae7469 100644
Binary files a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex
index a8bcb4b..4038bb6 100644
--- a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex
+++ b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex
@@ -5,12 +5,11 @@
Макросы и typedef\textquotesingle{}ы для работы с битами в unsigned типах.
-Collaboration diagram for Bit access defines\+:
-\nopagebreak
+Collaboration diagram for Bit access defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=300pt]{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}
+\includegraphics[width=288pt]{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}
\end{center}
\end{figure}
\doxysubsubsubsubsection*{Classes}
diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5
index c96e50e..286061b 100644
--- a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5
+++ b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-591a0b98d98294b7a16c22b9669d8b64
\ No newline at end of file
+c52cb47284eaa7377e976a0f04f0002e
\ No newline at end of file
diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf
index 236624e..09da61d 100644
Binary files a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex
index 6df380c..fce705b 100644
--- a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex
+++ b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex
@@ -5,12 +5,11 @@
Макросы и определения для работы с задержками в миллисекундах.
-Collaboration diagram for Delays defines\+:
-\nopagebreak
+Collaboration diagram for Delays defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=284pt]{group___d_e_l_a_y_s___d_e_f_i_n_e_s}
+\includegraphics[width=273pt]{group___d_e_l_a_y_s___d_e_f_i_n_e_s}
\end{center}
\end{figure}
\doxysubsubsubsubsection*{Macros}
@@ -65,7 +64,7 @@ Collaboration diagram for Delays defines\+:
\end{DoxyNote}
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00086}{86}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}\index{Delays defines@{Delays defines}!msDelayStart@{msDelayStart}}
\index{msDelayStart@{msDelayStart}!Delays defines@{Delays defines}}
@@ -91,7 +90,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00086}{86}} of file
Используется для реализации неблокирующих задержек.
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00098}{98}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00094}{94}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}\index{Delays defines@{Delays defines}!msDelayWhileActive@{msDelayWhileActive}}
\index{msDelayWhileActive@{msDelayWhileActive}!Delays defines@{Delays defines}}
@@ -131,7 +130,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00098}{98}} of file
\end{DoxyCode}
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00115}{115}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00111}{111}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}\index{Delays defines@{Delays defines}!msDelayWaitDone@{msDelayWaitDone}}
\index{msDelayWaitDone@{msDelayWaitDone}!Delays defines@{Delays defines}}
@@ -171,5 +170,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00115}{115}} of file
\end{DoxyCode}
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00132}{132}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00128}{128}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5
index 7cefaa5..2db04ea 100644
--- a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5
+++ b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-e4a53f66d0e2072179f4dedfeba20d50
\ No newline at end of file
+d5db8daac36cb4cc1a3fac830c6bfd88
\ No newline at end of file
diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf
index d8ab8c7..bb52b39 100644
Binary files a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex
index 00374b3..c4cbba2 100644
--- a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex
+++ b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex
@@ -5,12 +5,11 @@
Дефайны для обработки ошибок
-Collaboration diagram for Error Handler defines\+:
-\nopagebreak
+Collaboration diagram for Error Handler defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=311pt]{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}
+\includegraphics[width=300pt]{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}
\end{center}
\end{figure}
\doxysubsubsubsubsection*{Macros}
diff --git a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5
new file mode 100644
index 0000000..53dee98
--- /dev/null
+++ b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5
@@ -0,0 +1 @@
+0e28d80dcd04448aed641d64d20b3125
\ No newline at end of file
diff --git a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf
new file mode 100644
index 0000000..c9c25ef
Binary files /dev/null and b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex
new file mode 100644
index 0000000..e26da1c
--- /dev/null
+++ b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex
@@ -0,0 +1,75 @@
+\doxysubsubsection{Evolve configs }
+\hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g}{}\label{group___e_v_o_l_v_e___c_o_n_f_i_g}\index{Evolve configs@{Evolve configs}}
+
+
+Конфигурация однослойного персептрона и алгоритма обучения
+
+
+Collaboration diagram for Evolve configs\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=246pt]{group___e_v_o_l_v_e___c_o_n_f_i_g}
+\end{center}
+\end{figure}
+\doxysubsubsubsubsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}}
+\begin{DoxyCompactList}\small\item\em Включить оптимизацию параметров \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS}}~20
+\begin{DoxyCompactList}\small\item\em Максимальное количество параметров \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100
+\begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsubsubsection{Detailed Description}
+Конфигурация однослойного персептрона и алгоритма обучения
+
+
+
+\label{doc-define-members}
+\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_doc-define-members}
+\doxysubsubsubsection{Macro Definition Documentation}
+\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}\index{Evolve configs@{Evolve configs}!ENABLE\_EVOLVE\_OPTIMIZATION@{ENABLE\_EVOLVE\_OPTIMIZATION}}
+\index{ENABLE\_EVOLVE\_OPTIMIZATION@{ENABLE\_EVOLVE\_OPTIMIZATION}!Evolve configs@{Evolve configs}}
+\doxysubsubsubsubsection{\texorpdfstring{ENABLE\_EVOLVE\_OPTIMIZATION}{ENABLE\_EVOLVE\_OPTIMIZATION}}
+{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}
+\#define ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}
+
+
+
+Включить оптимизацию параметров
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00064}{64}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
+\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_PARAMS@{EVOLVE\_MAX\_PARAMS}}
+\index{EVOLVE\_MAX\_PARAMS@{EVOLVE\_MAX\_PARAMS}!Evolve configs@{Evolve configs}}
+\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MAX\_PARAMS}{EVOLVE\_MAX\_PARAMS}}
+{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}
+\#define EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS~20}
+
+
+
+Максимальное количество параметров
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00065}{65}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
+\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_CANDIDATES@{EVOLVE\_MAX\_CANDIDATES}}
+\index{EVOLVE\_MAX\_CANDIDATES@{EVOLVE\_MAX\_CANDIDATES}!Evolve configs@{Evolve configs}}
+\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MAX\_CANDIDATES}{EVOLVE\_MAX\_CANDIDATES}}
+{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}
+\#define EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES~100}
+
+
+
+Максимальное количество кандидатов для обучения
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00066}{66}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
diff --git a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5
new file mode 100644
index 0000000..b136329
--- /dev/null
+++ b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5
@@ -0,0 +1 @@
+222e7e00155a235ae6b55b58801480e4
\ No newline at end of file
diff --git a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf
new file mode 100644
index 0000000..cab1e76
Binary files /dev/null and b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf differ
diff --git a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex
new file mode 100644
index 0000000..ec03a32
--- /dev/null
+++ b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex
@@ -0,0 +1,187 @@
+\doxysubsubsection{Evolve optimizer }
+\hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}\index{Evolve optimizer@{Evolve optimizer}}
+
+
+Библиотека для эволюционного подбора параметров
+
+
+Collaboration diagram for Evolve optimizer\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=280pt]{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}
+\end{center}
+\end{figure}
+\doxysubsubsubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsubsubsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\+\_\+\+SCALE\+\_\+\+Q16}}(x, min\+\_\+val, max\+\_\+val)
+\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в Q16.\+16 \mbox{[}0, 65536) \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\+\_\+\+UNSCALE\+\_\+\+Q16}}(q16\+\_\+val, min\+\_\+val, max\+\_\+val)
+\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование Q16.\+16 значения в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsubsubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, uint16\+\_\+t iq\+\_\+mutation, int32\+\_\+t \texorpdfstring{$\ast$}{*}start\+\_\+params)
+\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item
+\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, int32\+\_\+t \texorpdfstring{$\ast$}{*}params, int32\+\_\+t loss)
+\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsubsubsection{Detailed Description}
+Библиотека для эволюционного подбора параметров
+
+Поддерживает\+:
+\begin{DoxyItemize}
+\item Любое количество параметров
+\item Генерацию новых параметров на основе лучших кандидатов
+\item Мутацию для поиска оптимальных параметров
+\item Несколько независимых оптимизаторов в одной программе
+\end{DoxyItemize}
+
+Если библиотека отключена \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}, то вставляются заглушки, никак не влияющие на параметры и остальную программу
+
+\begin{DoxyParagraph}{Пример использования\+:}
+
+\begin{DoxyCode}{0}
+\DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{evolve__optimizer_8h}{evolve\_optimizer.h}}"{}}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_CANDIDATES\ \ \ \ 100}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ IQ\_MUTATION\ \ \ \ \ 655}}
+\DoxyCodeLine{int32\_t\ params[N\_PARAMS];}
+\DoxyCodeLine{\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ optimizer;}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Формирование\ параметров}}
+\DoxyCodeLine{uint16\_t\ \ param\_u16\ =\ 800;}
+\DoxyCodeLine{\textcolor{keywordtype}{float}\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}
+\DoxyCodeLine{uint8\_t\ \ \ param\_u8\ \ =\ 40;}
+\DoxyCodeLine{int16\_t\ \ \ param\_i16\ =\ 1600;}
+\DoxyCodeLine{params[0]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_u16,\ \ 0,\ \ \ \ \ \ 1000);}
+\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_f,\ \ \ \ 0.001f,\ 0.1f);}
+\DoxyCodeLine{params[2]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_u8,\ \ \ 10,\ \ \ \ \ 100);}
+\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_i16,\ \ 500,\ \ \ \ 5000);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Инициалиазция}}
+\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{EvolveOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ IQ\_MUTATION,\ params);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Шаг\ эволюции}}
+\DoxyCodeLine{int32\_t\ loss\ =\ calc\_iq\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров}}
+\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{EvolveOptimizer\_Step}}(\&optimizer,\ params,\ loss);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}}
+\DoxyCodeLine{param\_u16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[0],\ \ 0,\ \ \ \ \ \ 1000);}
+\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[1],\ \ 0.001f,\ 0.1f);}
+\DoxyCodeLine{param\_u8\ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[2],\ \ 10,\ \ \ \ \ 100);}
+\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[3],\ \ 500,\ \ \ \ 5000);}
+
+\end{DoxyCode}
+
+\end{DoxyParagraph}
+
+
+\label{doc-define-members}
+\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-define-members}
+\doxysubsubsubsection{Macro Definition Documentation}
+\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_SCALE\_Q16@{PARAM\_SCALE\_Q16}}
+\index{PARAM\_SCALE\_Q16@{PARAM\_SCALE\_Q16}!Evolve optimizer@{Evolve optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE\_Q16}{PARAM\_SCALE\_Q16}}
+{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}
+\#define PARAM\+\_\+\+SCALE\+\_\+\+Q16(\begin{DoxyParamCaption}\item[{}]{x}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{((int32\_t)((((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))\ *\ 65536.0f))}
+
+\end{DoxyCode}
+
+
+Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в Q16.\+16 \mbox{[}0, 65536)
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00068}{68}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_UNSCALE\_Q16@{PARAM\_UNSCALE\_Q16}}
+\index{PARAM\_UNSCALE\_Q16@{PARAM\_UNSCALE\_Q16}!Evolve optimizer@{Evolve optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE\_Q16}{PARAM\_UNSCALE\_Q16}}
+{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}
+\#define PARAM\+\_\+\+UNSCALE\+\_\+\+Q16(\begin{DoxyParamCaption}\item[{}]{q16\+\_\+val}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{(((float)(q16\_val)\ /\ 65536.0f)\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}
+
+\end{DoxyCode}
+
+
+Обратное линейное масштабирование Q16.\+16 значения в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}.
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00074}{74}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+
+
+\label{doc-func-members}
+\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-func-members}
+\doxysubsubsubsection{Function Documentation}
+\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Init@{EvolveOptimizer\_Init}}
+\index{EvolveOptimizer\_Init@{EvolveOptimizer\_Init}!Evolve optimizer@{Evolve optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Init()}{EvolveOptimizer\_Init()}}
+{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}
+\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void Evolve\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{uint16\+\_\+t}]{n\+\_\+params}{, }\item[{uint16\+\_\+t}]{n\+\_\+cand}{, }\item[{uint16\+\_\+t}]{n\+\_\+best}{, }\item[{uint16\+\_\+t}]{iq\+\_\+mutation}{, }\item[{int32\+\_\+t \texorpdfstring{$\ast$}{*}}]{start\+\_\+params}{}\end{DoxyParamCaption})}
+
+
+
+Инициализация эволюционного оптимизатора.
+
+
+\begin{DoxyParams}{Parameters}
+{\em opt} & Указатель на структуру оптимизатора \\
+\hline
+{\em n\+\_\+params} & Количество параметров в одном кандидате \\
+\hline
+{\em n\+\_\+cand} & Количество кандидатов \\
+\hline
+{\em n\+\_\+best} & Количество лучших, усредняемых \\
+\hline
+{\em iq\+\_\+mutation} & Амплитуда мутации в Q16.\+16 \\
+\hline
+{\em start\+\_\+params} & Начальные параметры (Q16.\+16) \\
+\hline
+\end{DoxyParams}
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00101}{101}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Step@{EvolveOptimizer\_Step}}
+\index{EvolveOptimizer\_Step@{EvolveOptimizer\_Step}!Evolve optimizer@{Evolve optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Step()}{EvolveOptimizer\_Step()}}
+{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}
+\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void Evolve\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{int32\+\_\+t \texorpdfstring{$\ast$}{*}}]{params}{, }\item[{int32\+\_\+t}]{loss}{}\end{DoxyParamCaption})}
+
+
+
+Один шаг эволюционного оптимизатора.
+
+
+\begin{DoxyParams}{Parameters}
+{\em opt} & Указатель на структуру оптимизатора \\
+\hline
+{\em params} & Массив параметров, которые будут обновлены (на выходе — новые параметры) \\
+\hline
+{\em loss} & Loss текущего кандидата (Q16.\+16)\\
+\hline
+\end{DoxyParams}
+Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n\+\_\+cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n\+\_\+best лучших с добавлением мутации.
+
+На выходе params содержит параметры следующего кандидата для измерений.
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00137}{137}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
diff --git a/Doc/latex/group___g_p_i_o___i_n_i_t.pdf b/Doc/latex/group___g_p_i_o___i_n_i_t.pdf
index fde686a..aa34ccd 100644
Binary files a/Doc/latex/group___g_p_i_o___i_n_i_t.pdf and b/Doc/latex/group___g_p_i_o___i_n_i_t.pdf differ
diff --git a/Doc/latex/group___g_p_i_o___i_n_i_t.tex b/Doc/latex/group___g_p_i_o___i_n_i_t.tex
index 429b53e..e399d87 100644
--- a/Doc/latex/group___g_p_i_o___i_n_i_t.tex
+++ b/Doc/latex/group___g_p_i_o___i_n_i_t.tex
@@ -5,8 +5,7 @@
Настройка состояний кнопок и количества тиков в периоде ШИМ
-Collaboration diagram for Init defines\+:
-\nopagebreak
+Collaboration diagram for Init defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf
index d82a746..dcb1e14 100644
Binary files a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf and b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex
index 340b046..c974e48 100644
--- a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex
+++ b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex
@@ -5,8 +5,7 @@
Подключение различных модулей библиотеки
-Collaboration diagram for Libraries configs\+:
-\nopagebreak
+Collaboration diagram for Libraries configs\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
@@ -16,6 +15,8 @@ Collaboration diagram for Libraries configs\+:
\doxysubsubsubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item
+\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER}}
+\begin{DoxyCompactList}\small\item\em Подключить библиотеку для оптимизации параметров \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{INCLUDE\+\_\+\+BIT\+\_\+\+ACCESS\+\_\+\+LIB}}
\begin{DoxyCompactList}\small\item\em Подключить библиотеку с typedef с битовыми полями \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{INCLUDE\+\_\+\+TRACKERS\+\_\+\+LIB}}
@@ -34,6 +35,20 @@ Collaboration diagram for Libraries configs\+:
\label{doc-define-members}
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_doc-define-members}
\doxysubsubsubsection{Macro Definition Documentation}
+\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}\index{Libraries configs@{Libraries configs}!INCLUDE\_EVOLVE\_OPTIMIZER@{INCLUDE\_EVOLVE\_OPTIMIZER}}
+\index{INCLUDE\_EVOLVE\_OPTIMIZER@{INCLUDE\_EVOLVE\_OPTIMIZER}!Libraries configs@{Libraries configs}}
+\doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_EVOLVE\_OPTIMIZER}{INCLUDE\_EVOLVE\_OPTIMIZER}}
+{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}
+\#define INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER}
+
+
+
+Подключить библиотеку для оптимизации параметров
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00080}{80}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}\index{Libraries configs@{Libraries configs}!INCLUDE\_BIT\_ACCESS\_LIB@{INCLUDE\_BIT\_ACCESS\_LIB}}
\index{INCLUDE\_BIT\_ACCESS\_LIB@{INCLUDE\_BIT\_ACCESS\_LIB}!Libraries configs@{Libraries configs}}
\doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_BIT\_ACCESS\_LIB}{INCLUDE\_BIT\_ACCESS\_LIB}}
@@ -46,7 +61,7 @@ Collaboration diagram for Libraries configs\+:
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00065}{65}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00081}{81}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACKERS\_LIB@{INCLUDE\_TRACKERS\_LIB}}
\index{INCLUDE\_TRACKERS\_LIB@{INCLUDE\_TRACKERS\_LIB}!Libraries configs@{Libraries configs}}
@@ -60,7 +75,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00065}{65}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00066}{66}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACE\_LIB@{INCLUDE\_TRACE\_LIB}}
\index{INCLUDE\_TRACE\_LIB@{INCLUDE\_TRACE\_LIB}!Libraries configs@{Libraries configs}}
@@ -74,7 +89,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00066}{66}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00067}{67}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00083}{83}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}\index{Libraries configs@{Libraries configs}!INCLUDE\_GENERAL\_PERIPH\_LIBS@{INCLUDE\_GENERAL\_PERIPH\_LIBS}}
\index{INCLUDE\_GENERAL\_PERIPH\_LIBS@{INCLUDE\_GENERAL\_PERIPH\_LIBS}!Libraries configs@{Libraries configs}}
@@ -88,5 +103,5 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00067}{67}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00068}{68}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00084}{84}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
diff --git a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf
index 984793f..eb8d663 100644
Binary files a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf and b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf differ
diff --git a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex
index a28997a..775dad4 100644
--- a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex
+++ b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex
@@ -5,8 +5,7 @@
Функции и макросы для удобной работы с GPIO.
-Collaboration diagram for GPIO Tools\+:
-\nopagebreak
+Collaboration diagram for GPIO Tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf b/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf
index 7131408..fec6f21 100644
Binary files a/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf and b/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf differ
diff --git a/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex b/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex
index 5faa0e8..f539f3f 100644
--- a/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex
+++ b/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex
@@ -5,8 +5,7 @@
Функции и макросы для удобной работы с TIM.
-Collaboration diagram for TIM Tools\+:
-\nopagebreak
+Collaboration diagram for TIM Tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 b/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5
index 81f0885..4e0e91b 100644
--- a/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5
+++ b/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5
@@ -1 +1 @@
-1691ab8f633ae5af69d18398681fcba8
\ No newline at end of file
+52c11e57bdabafd5d7af3828f403f995
\ No newline at end of file
diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf b/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf
index 506f170..bea594d 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex b/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex
index 1a9a02d..cd0caf7 100644
--- a/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex
@@ -5,12 +5,11 @@
Все используемые My\+Libs библиотеки
-Collaboration diagram for My Libs\+:
-\nopagebreak
+Collaboration diagram for My Libs\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=253pt]{group___m_y_l_i_b_s___a_l_l}
+\includegraphics[width=242pt]{group___m_y_l_i_b_s___a_l_l}
\end{center}
\end{figure}
\doxysubsubsection*{Topics}
@@ -18,7 +17,7 @@ Collaboration diagram for My Libs\+:
\item
\mbox{\hyperlink{group___m_y_l_i_b_s___c_o_n_f_i_g}{Configs}}
\begin{DoxyCompactList}\small\item\em Конфигурации для библиотек My\+Libs. \end{DoxyCompactList}\item
-\mbox{\hyperlink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Defines}}
+\mbox{\hyperlink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools}}
\begin{DoxyCompactList}\small\item\em Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту \end{DoxyCompactList}\item
\mbox{\hyperlink{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l}{Peripheral}}
\begin{DoxyCompactList}\small\item\em Модули для управления периферией \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
index a4575c4..3f02def 100644
--- a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
+++ b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
@@ -1 +1 @@
-e912e48de31ed02538c355498d1a7e66
\ No newline at end of file
+e39777f4e691429c305a230cb7233db5
\ No newline at end of file
diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf
index 5a9bb28..08142b0 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf and b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex
index 2f4adfd..94de885 100644
--- a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex
@@ -5,8 +5,7 @@
Конфигурации для библиотек My\+Libs.
-Collaboration diagram for Configs\+:
-\nopagebreak
+Collaboration diagram for Configs\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
@@ -18,6 +17,8 @@ Collaboration diagram for Configs\+:
\item
\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g}{Trace configs}}
\begin{DoxyCompactList}\small\item\em Конфигурация трекеров и трассировки \end{DoxyCompactList}\item
+\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g}{Evolve configs}}
+\begin{DoxyCompactList}\small\item\em Конфигурация однослойного персептрона и алгоритма обучения \end{DoxyCompactList}\item
\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g}{Libraries configs}}
\begin{DoxyCompactList}\small\item\em Подключение различных модулей библиотеки \end{DoxyCompactList}\end{DoxyCompactItemize}
@@ -26,4 +27,5 @@ Collaboration diagram for Configs\+:
Конфигурации для библиотек My\+Libs.
\input{group___t_r_a_c_e___c_o_n_f_i_g}
+\input{group___e_v_o_l_v_e___c_o_n_f_i_g}
\input{group___l_i_b_s___c_o_n_f_i_g}
diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
index 45245e0..21a4273 100644
--- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
+++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-cd205bbe89e6c9feea836cb8938585ac
\ No newline at end of file
+e21133381fcfb6b51ca1c555273b8ce6
\ No newline at end of file
diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf
index edcc34c..41f160c 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex
index 2e0c84c..2216629 100644
--- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex
@@ -1,12 +1,11 @@
-\doxysubsection{General Defines }
-\hypertarget{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{}\label{group___m_y_l_i_b_s___d_e_f_i_n_e_s}\index{General Defines@{General Defines}}
+\doxysubsection{General Tools }
+\hypertarget{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{}\label{group___m_y_l_i_b_s___d_e_f_i_n_e_s}\index{General Tools@{General Tools}}
Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту
-Collaboration diagram for General Defines\+:
-\nopagebreak
+Collaboration diagram for General Tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
@@ -18,6 +17,8 @@ Collaboration diagram for General Defines\+:
\item
\mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines}}
\begin{DoxyCompactList}\small\item\em Макросы и typedef\textquotesingle{}ы для работы с битами в unsigned типах. \end{DoxyCompactList}\item
+\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{Evolve optimizer}}
+\begin{DoxyCompactList}\small\item\em Библиотека для эволюционного подбора параметров \end{DoxyCompactList}\item
\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}{Error Handler defines}}
\begin{DoxyCompactList}\small\item\em Дефайны для обработки ошибок \end{DoxyCompactList}\item
\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines}}
@@ -34,6 +35,7 @@ Collaboration diagram for General Defines\+:
Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту
\input{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}
+\input{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}
\input{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}
\input{group___d_e_l_a_y_s___d_e_f_i_n_e_s}
\input{group___u_t_i_l_s___d_e_f_i_n_e_s}
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf
index 2096306..edd1557 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex
index c759ed5..ca64b35 100644
--- a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex
@@ -5,8 +5,7 @@
Общие функции/макросы для работы с GPIO.
-Collaboration diagram for General tools\+:
-\nopagebreak
+Collaboration diagram for General tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf
index 3959b95..e8a8b37 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf and b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex
index 5e6de3c..4dbc044 100644
--- a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex
@@ -5,8 +5,7 @@
Функции для работы с GPIO, для управления светодиодом
-Collaboration diagram for LED tools\+:
-\nopagebreak
+Collaboration diagram for LED tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf
index 42cf3bd..7a8e89f 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf and b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex
index a8f3d61..d57e257 100644
--- a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex
@@ -5,8 +5,7 @@
Функции для работы с GPIO, как с кнопкой
-Collaboration diagram for Switch tools\+:
-\nopagebreak
+Collaboration diagram for Switch tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf
index 4ff6c7c..8eff0ac 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex
index ebb74eb..2dd9286 100644
--- a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex
@@ -5,8 +5,7 @@
Модули для управления периферией
-Collaboration diagram for Peripheral\+:
-\nopagebreak
+Collaboration diagram for Peripheral\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf
index 9c94a59..c11b018 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex
index c31b016..240a0fb 100644
--- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex
@@ -5,8 +5,7 @@
Функции для формирования задержек с помощью таймеров
-Collaboration diagram for Delay tools\+:
-\nopagebreak
+Collaboration diagram for Delay tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf
index 5f17cab..0e443b7 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex
index 1a407cd..76a4df1 100644
--- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex
@@ -5,8 +5,7 @@
Функции для считывания энкодера
-Collaboration diagram for Encoder tools\+:
-\nopagebreak
+Collaboration diagram for Encoder tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf
index 88f23ab..60c7342 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex
index 0f4eb30..2726bd5 100644
--- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex
@@ -5,8 +5,7 @@
Функции для базовой инициализации таймеров
-Collaboration diagram for General tools\+:
-\nopagebreak
+Collaboration diagram for General tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf
index 9046fe7..bdf8064 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex
index a5db14e..0498d91 100644
--- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex
@@ -5,8 +5,7 @@
Функции для инициализации базовых функций каналов таймера
-Collaboration diagram for PWM/\+OC Channels tools\+:
-\nopagebreak
+Collaboration diagram for PWM/\+OC Channels tools\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_i_m___i_n_i_t.pdf b/Doc/latex/group___t_i_m___i_n_i_t.pdf
index 622ea1f..82e70da 100644
Binary files a/Doc/latex/group___t_i_m___i_n_i_t.pdf and b/Doc/latex/group___t_i_m___i_n_i_t.pdf differ
diff --git a/Doc/latex/group___t_i_m___i_n_i_t.tex b/Doc/latex/group___t_i_m___i_n_i_t.tex
index 3d628cf..f8a6cfe 100644
--- a/Doc/latex/group___t_i_m___i_n_i_t.tex
+++ b/Doc/latex/group___t_i_m___i_n_i_t.tex
@@ -5,8 +5,7 @@
Настройка таймеров
-Collaboration diagram for Init defines\+:
-\nopagebreak
+Collaboration diagram for Init defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_r_a_c_e.md5 b/Doc/latex/group___t_r_a_c_e.md5
index 8707b6e..940cd9f 100644
--- a/Doc/latex/group___t_r_a_c_e.md5
+++ b/Doc/latex/group___t_r_a_c_e.md5
@@ -1 +1 @@
-af53452e0ed934b43a42a30e5eaddc2c
\ No newline at end of file
+231806d9df0ebec28cd371e85eb1e78c
\ No newline at end of file
diff --git a/Doc/latex/group___t_r_a_c_e.pdf b/Doc/latex/group___t_r_a_c_e.pdf
index 846dbe5..0ef2bc9 100644
Binary files a/Doc/latex/group___t_r_a_c_e.pdf and b/Doc/latex/group___t_r_a_c_e.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e.tex b/Doc/latex/group___t_r_a_c_e.tex
index f560dde..3dbdd57 100644
--- a/Doc/latex/group___t_r_a_c_e.tex
+++ b/Doc/latex/group___t_r_a_c_e.tex
@@ -5,8 +5,7 @@
Дефайны для работы с трассировкой
-Collaboration diagram for Trace defines\+:
-\nopagebreak
+Collaboration diagram for Trace defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf
index 611bc45..14702b1 100644
Binary files a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf and b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex
index 56fbc09..cf8e2ac 100644
--- a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex
+++ b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex
@@ -5,8 +5,7 @@
Конфигурация трекеров и трассировки
-Collaboration diagram for Trace configs\+:
-\nopagebreak
+Collaboration diagram for Trace configs\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf b/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf
index 0252e95..c618342 100644
Binary files a/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf and b/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex
index 692bd93..710c717 100644
--- a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex
+++ b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex
@@ -5,8 +5,7 @@
Дефайны для работы с GPIO трассировкой
-Collaboration diagram for GPIO trace defines\+:
-\nopagebreak
+Collaboration diagram for GPIO trace defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf
index 6cda337..0520507 100644
Binary files a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf and b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex
index 1e30d7e..da953dc 100644
--- a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex
+++ b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex
@@ -5,8 +5,7 @@
Модуль трассировки Hard\+Fault с возможностью сохранения RTT буфера во Flash.
-Collaboration diagram for Hardfault trace defines\+:
-\nopagebreak
+Collaboration diagram for Hardfault trace defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf
index 320d6c2..13b5452 100644
Binary files a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf and b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex
index a9a1ee9..79ed0f9 100644
--- a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex
+++ b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex
@@ -5,8 +5,7 @@
Макросы и функции для сохранения/чтения RTT буфера в Flash.
-Collaboration diagram for Flash RTT Buffer\+:
-\nopagebreak
+Collaboration diagram for Flash RTT Buffer\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf
index 2967bb4..aac06fa 100644
Binary files a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf and b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex
index 1e17738..1b175c8 100644
--- a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex
+++ b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex
@@ -5,8 +5,7 @@
Дефайны для работы с serial трассировкой (SWO, RTT)
-Collaboration diagram for Serial trace defines\+:
-\nopagebreak
+Collaboration diagram for Serial trace defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.md5 b/Doc/latex/group___t_r_a_c_k_e_r_s.md5
index 3069cfa..d924fcc 100644
--- a/Doc/latex/group___t_r_a_c_k_e_r_s.md5
+++ b/Doc/latex/group___t_r_a_c_k_e_r_s.md5
@@ -1 +1 @@
-648d2934940db23a5223abb744a436e6
\ No newline at end of file
+a7565b03babdeb6094e59ffacae9c523
\ No newline at end of file
diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.pdf b/Doc/latex/group___t_r_a_c_k_e_r_s.pdf
index 5b56d32..f09e3f2 100644
Binary files a/Doc/latex/group___t_r_a_c_k_e_r_s.pdf and b/Doc/latex/group___t_r_a_c_k_e_r_s.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.tex b/Doc/latex/group___t_r_a_c_k_e_r_s.tex
index 70c0187..bab2a28 100644
--- a/Doc/latex/group___t_r_a_c_k_e_r_s.tex
+++ b/Doc/latex/group___t_r_a_c_k_e_r_s.tex
@@ -5,12 +5,11 @@
Дефайны для работы с трекерами
-Collaboration diagram for Trackers defines\+:
-\nopagebreak
+Collaboration diagram for Trackers defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=291pt]{group___t_r_a_c_k_e_r_s}
+\includegraphics[width=280pt]{group___t_r_a_c_k_e_r_s}
\end{center}
\end{figure}
\doxysubsubsubsubsection*{Macros}
diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5
index 9687ecf..ead6af3 100644
--- a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5
+++ b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-a22e11e67b1cc3135ba7e3b5e903043c
\ No newline at end of file
+e4f09128a7c7fea7dcaa8c425861feae
\ No newline at end of file
diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf
index 8cdf122..edcc822 100644
Binary files a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex
index 83a034b..8d43b86 100644
--- a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex
+++ b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex
@@ -5,12 +5,11 @@
Общие вспомогательные макросы
-Collaboration diagram for Utils defines\+:
-\nopagebreak
+Collaboration diagram for Utils defines\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=273pt]{group___u_t_i_l_s___d_e_f_i_n_e_s}
+\includegraphics[width=262pt]{group___u_t_i_l_s___d_e_f_i_n_e_s}
\end{center}
\end{figure}
\doxysubsubsubsubsection*{Macros}
@@ -56,7 +55,7 @@ Collaboration diagram for Utils defines\+:
\end{DoxyParams}
Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля.
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00151}{151}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}\index{Utils defines@{Utils defines}!Divide\_Up@{Divide\_Up}}
\index{Divide\_Up@{Divide\_Up}!Utils defines@{Utils defines}}
@@ -85,7 +84,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} of file
\end{DoxyReturn}
Если результат деления без остатка\+: он возвращается как есть Если с остатком -\/ округляется вверх
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00165}{165}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00162}{162}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}\index{Utils defines@{Utils defines}!ByteSwap16@{ByteSwap16}}
\index{ByteSwap16@{ByteSwap16}!Utils defines@{Utils defines}}
@@ -112,7 +111,7 @@ Swap between Little Endian and Big Endian.
\end{DoxyReturn}
Переключения между двумя типами хранения слова\+: HI-\/\+LO байты и LO-\/\+HI байты.
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00170}{170}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}\index{Utils defines@{Utils defines}!ABS@{ABS}}
\index{ABS@{ABS}!Utils defines@{Utils defines}}
@@ -139,5 +138,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} of file
\end{DoxyReturn}
Берет число по модулю. Хз как работает библиотечный abs в stdlib.\+h, мб это быстрее, но вряд ли конечно.
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00181}{181}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00178}{178}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
diff --git a/Doc/latex/index.tex b/Doc/latex/index.tex
index f277ab6..cf39486 100644
--- a/Doc/latex/index.tex
+++ b/Doc/latex/index.tex
@@ -2,35 +2,33 @@
\hypertarget{index}{}\label{index}\index{MyLibs@{MyLibs}}
\hypertarget{index_overview}{}\doxysection{\texorpdfstring{Обзор}{Обзор}}\label{index_overview}
My\+Libs -\/ это набор библиотек для удобной работы с периферией микроконтроллеров STM32.\hypertarget{index_features}{}\doxysubsection{\texorpdfstring{Основные возможности}{Основные возможности}}\label{index_features}
-\hypertarget{index_utils_module}{}\doxysubsubsection{\texorpdfstring{Общие утилиты \protect\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Defines}}{Общие утилиты {General Defines}}}\label{index_utils_module}
+\hypertarget{index_utils_module}{}\doxysubsubsection{\texorpdfstring{Общие утилиты (\protect\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools})}{Общие утилиты ({General Tools})}}\label{index_utils_module}
\begin{DoxyItemize}
-\item Битовый доступ к регистрам через union
-\item Трекеры для статистики и отладки
-\item Макросы для задержек и утилит
-\item Поддержка Free\+RTOS
+\item Макросы для задержек и утилит (\doxylink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines} и \doxylink{group___u_t_i_l_s___d_e_f_i_n_e_s}{Utils defines})
+\item Трекеры для статистики и отладки (\doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} и \doxylink{group___t_r_a_c_e}{Trace defines})
+\item Эволюционный алгоритм для оптимизации параметров (\doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{Evolve optimizer})
+\item Битовый доступ к регистрам через union (\doxylink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines})
\end{DoxyItemize}\hypertarget{index_trace_module}{}\doxysubsubsection{\texorpdfstring{Трассировка \protect\doxylink{group___t_r_a_c_e}{Trace defines}}{Трассировка {Trace defines}}}\label{index_trace_module}
\begin{DoxyItemize}
-\item Serial трассировка через SWO и RTT
-\item GPIO трассировка для отладки
-\item Сохранение логов в Flash память
-\item Обработка Hard\+Fault с сохранением контекста
+\item Serial трассировка через SWO и RTT (\doxylink{group___t_r_a_c_e___s_e_r_i_a_l}{Serial trace defines})
+\item GPIO трассировка для отладки (\doxylink{group___t_r_a_c_e___g_p_i_o}{GPIO trace defines})
+\item Сохранение логов в Flash память (\doxylink{group___t_r_a_c_e___r_t_t___f_l_a_s_h}{Flash RTT Buffer})
+\item Обработка Hard\+Fault с сохранением контекста (\doxylink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t}{Hardfault trace defines})
\end{DoxyItemize}\hypertarget{index_gpio_module}{}\doxysubsubsection{\texorpdfstring{Модуль GPIO \protect\doxylink{group___m_y___l_i_b_s___g_p_i_o}{GPIO Tools}}{Модуль GPIO {GPIO Tools}}}\label{index_gpio_module}
\begin{DoxyItemize}
-\item Управление светодиодами (включение/выключение, моргание, плавное затухание)
-\item Работа с кнопками (чтение состояния, фильтрация дребезга)
-\item Инициализация портов и тактирования
-\item Поддержка альтернативных функций
+\item Инициализация портов и тактирования (\doxylink{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l}{General tools})
+\item Управление светодиодами (включение/выключение, моргание, плавное затухание) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s}{LED tools})
+\item Работа с кнопками (чтение состояния, фильтрация дребезга) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h}{Switch tools})
\end{DoxyItemize}\hypertarget{index_tim_module}{}\doxysubsubsection{\texorpdfstring{Модуль таймеров \protect\doxylink{group___m_y___l_i_b_s___t_i_m}{TIM Tools}}{Модуль таймеров {TIM Tools}}}\label{index_tim_module}
\begin{DoxyItemize}
-\item Базовая инициализация таймеров
-\item Режимы прерываний
-\item Формирование задержек (блокирующие и неблокирующие)
-\item Работа с энкодерами (чтение положения, обработка кнопок)
-\item Настройка ШИМ и Output Compare
+\item Базовая инициализация таймеров (\doxylink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l}{General tools})
+\item Формирование задержек (блокирующие и неблокирующие) (\doxylink{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y}{Delay tools})
+\item Работа с энкодерами (чтение положения, обработка кнопок) (\doxylink{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r}{Encoder tools})
+\item Настройка ШИМ и Output Compare (\doxylink{group___m_y_l_i_b_s___t_i_m___o_c}{PWM/\+OC Channels tools})
\end{DoxyItemize}\hypertarget{index_structure}{}\doxysubsection{\texorpdfstring{Структура проекта}{Структура проекта}}\label{index_structure}
\begin{DoxyCode}{0}
diff --git a/Doc/latex/mainpage_8h_source.tex b/Doc/latex/mainpage_8h_source.tex
new file mode 100644
index 0000000..3b60fb4
--- /dev/null
+++ b/Doc/latex/mainpage_8h_source.tex
@@ -0,0 +1,110 @@
+\doxysection{mainpage.\+h}
+\hypertarget{mainpage_8h_source}{}\label{mainpage_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h}}
+
+\begin{DoxyCode}{0}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00001}00001\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00002}00002\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00003}00003\ \textcolor{comment}{@mainpage}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00004}00004\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00005}00005\ \textcolor{comment}{@section\ overview\ Обзор}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00006}00006\ \textcolor{comment}{MyLibs\ -\/\ это\ набор\ библиотек\ для\ удобной\ работы\ с\ периферией\ микроконтроллеров\ STM32.}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00007}00007\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00008}00008\ \textcolor{comment}{@subsection\ features\ Основные\ возможности}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00009}00009\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00010}00010\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ (@ref\ MYLIBS\_DEFINES)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Макросы\ для\ задержек\ и\ утилит\ (@ref\ DELAYS\_DEFINES\ и\ @ref\ UTILS\_DEFINES)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Трекеры\ для\ статистики\ и\ отладки\ \ (@ref\ TRACKERS\ и\ @ref\ TRACE)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Эволюционный\ алгоритм\ для\ оптимизации\ параметров\ \ (@ref\ EVOLVE\_OPTIMIZER)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Битовый\ доступ\ к\ регистрам\ через\ union\ \ (@ref\ BIT\_ACCESS\_DEFINES)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00015}00015\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00016}00016\ \textcolor{comment}{@subsubsection\ trace\_module\ Трассировка\ @ref\ TRACE}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00017}00017\ \textcolor{comment}{-\/\ Serial\ трассировка\ через\ SWO\ и\ RTT\ (@ref\ TRACE\_SERIAL)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00018}00018\ \textcolor{comment}{-\/\ GPIO\ трассировка\ для\ отладки\ (@ref\ TRACE\_GPIO)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00019}00019\ \textcolor{comment}{-\/\ Сохранение\ логов\ в\ Flash\ память\ (@ref\ TRACE\_RTT\_FLASH)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00020}00020\ \textcolor{comment}{-\/\ Обработка\ HardFault\ с\ сохранением\ контекста\ (@ref\ TRACE\_HARDFAULT)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00021}00021\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00022}00022\ \textcolor{comment}{@subsubsection\ gpio\_module\ Модуль\ GPIO\ @ref\ MY\_LIBS\_GPIO}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00023}00023\ \textcolor{comment}{-\/\ Инициализация\ портов\ и\ тактирования\ (@ref\ MYLIBS\_GPIO\_GENERAL)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00024}00024\ \textcolor{comment}{-\/\ Управление\ светодиодами\ (включение/выключение,\ моргание,\ плавное\ затухание)\ (@ref\ MYLIBS\_GPIO\_LEDS)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00025}00025\ \textcolor{comment}{-\/\ Работа\ с\ кнопками\ (чтение\ состояния,\ фильтрация\ дребезга)\ (@ref\ MYLIBS\_GPIO\_SWITCH)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00026}00026\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00027}00027\ \textcolor{comment}{@subsubsection\ tim\_module\ Модуль\ таймеров\ @ref\ MY\_LIBS\_TIM}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00028}00028\ \textcolor{comment}{-\/\ Базовая\ инициализация\ таймеров\ (@ref\ MYLIBS\_TIM\_GENERAL)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00029}00029\ \textcolor{comment}{-\/\ Формирование\ задержек\ (блокирующие\ и\ неблокирующие)\ (@ref\ MYLIBS\_TIM\_DELAY)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00030}00030\ \textcolor{comment}{-\/\ Работа\ с\ энкодерами\ (чтение\ положения,\ обработка\ кнопок)\ (@ref\ MYLIBS\_TIM\_ENCODER)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00031}00031\ \textcolor{comment}{-\/\ Настройка\ ШИМ\ и\ Output\ Compare\ (@ref\ MYLIBS\_TIM\_OC)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00032}00032\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00033}00033\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00034}00034\ \textcolor{comment}{@subsection\ structure\ Структура\ проекта}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00035}00035\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00036}00036\ \textcolor{comment}{@code}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00037}00037\ \textcolor{comment}{├──\ inc/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Заголовочные\ файлы}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00038}00038\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_include.h\ \ \ \ \ \#\ Главный\ include\ файл}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00039}00039\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00040}00040\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00041}00041\ \textcolor{comment}{│\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00042}00042\ \textcolor{comment}{│\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00043}00043\ \textcolor{comment}{│\ \ \ ├──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00044}00044\ \textcolor{comment}{│\ \ \ ├──\ general\_gpio.h\ \ \ \ \ \ \ \#\ Работа\ с\ GPIO}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00045}00045\ \textcolor{comment}{│\ \ \ └──\ general\_tim.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ таймерами}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00046}00046\ \textcolor{comment}{└──\ src/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Исходные\ файлы}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00047}00047\ \textcolor{comment}{\ \ \ \ ├──\ general\_gpio.c\ \ \ \ \ \ \ \#\ Реализация\ GPIO}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00048}00048\ \textcolor{comment}{\ \ \ \ └──\ general\_tim.c\ \ \ \ \ \ \ \ \#\ Реализация\ TIM}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00049}00049\ \textcolor{comment}{@endcode}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00050}00050\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00051}00051\ \textcolor{comment}{@subsection\ usage\_basic\ Использование}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00052}00052\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{Инструкция\ по\ подключению:}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00054}00054\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00055}00055\ \textcolor{comment}{1.\ Настройте\ конфигурацию\ @ref\ MYLIBS\_CONFIG\ в\ @ref\ mylibs\_config.h\ }}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00056}00056\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00057}00057\ \textcolor{comment}{2.\ Подключите\ главный\ заголовочный\ файл:}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00058}00058\ \textcolor{comment}{@code}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00059}00059\ \textcolor{comment}{\#include\ "{}mylibs\_include.h"{}}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00060}00060\ \textcolor{comment}{@endcode}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00061}00061\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00062}00062\ \textcolor{comment}{3.\ Используйте\ нужные\ модули\ в\ своем\ коде}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00063}00063\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00064}00064\ \textcolor{comment}{@subsubsection\ gpio\_example\ Пример\ работы\ с\ GPIO}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00065}00065\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00066}00066\ \textcolor{comment}{@code}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00067}00067\ \textcolor{comment}{//\ Инициализация\ светодиода}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00068}00068\ \textcolor{comment}{MX\_GPIO\_Init();}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00069}00069\ \textcolor{comment}{GPIO\_LEDTypeDef\ led;}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00070}00070\ \textcolor{comment}{GPIO\_LED\_Init(\&led,\ GPIOA,\ GPIO\_PIN\_5,\ 1);}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00071}00071\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00072}00072\ \textcolor{comment}{//\ Включение\ светодиода}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00073}00073\ \textcolor{comment}{GPIO\_LED\_On(\&led);}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00074}00074\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00075}00075\ \textcolor{comment}{//\ Запуск\ моргания}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00076}00076\ \textcolor{comment}{GPIO\_LED\_Blink\_Start(\&led,\ 500);\ //\ Период\ 500\ мс}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00077}00077\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00078}00078\ \textcolor{comment}{//\ В\ основном\ цикле}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00079}00079\ \textcolor{comment}{while\ (1)\ \{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00080}00080\ \textcolor{comment}{GPIO\_LED\_Dynamic\_Handle(\&led);}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00081}00081\ \textcolor{comment}{\}}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00082}00082\ \textcolor{comment}{@endcode}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00083}00083\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00084}00084\ \textcolor{comment}{@subsubsection\ tim\_example\ Пример\ работы\ с\ таймером}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00085}00085\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00086}00086\ \textcolor{comment}{@code}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00087}00087\ \textcolor{comment}{//\ Настройка\ таймера}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00088}00088\ \textcolor{comment}{TIM\_SettingsTypeDef\ tim\_settings\ =\ \{0\};}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00089}00089\ \textcolor{comment}{tim\_settings.htim.Instance\ =\ TIM2;}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00090}00090\ \textcolor{comment}{tim\_settings.sTimAHBFreqMHz\ =\ SystemCoreClock;}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00091}00091\ \textcolor{comment}{tim\_settings.sTickBaseUS\ =\ TIM\_TickBase\_1MS;}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00092}00092\ \textcolor{comment}{tim\_settings.sTimFreqHz\ =\ 1000;\ //\ 1\ кГц}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00093}00093\ \textcolor{comment}{tim\_settings.sTimMode\ =\ TIM\_IT\_CONF;}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00094}00094\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00095}00095\ \textcolor{comment}{TIM\_Base\_Init(\&tim\_settings);}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00096}00096\ \textcolor{comment}{HAL\_TIM\_Base\_Start(\&tim\_settings.htim);}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00097}00097\ \textcolor{comment}{@endcode}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00098}00098\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00099}00099\ \textcolor{comment}{@subsection\ dependencies\ Зависимости}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00100}00100\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00101}00101\ \textcolor{comment}{-\/\ HAL\ библиотека\ STM32}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00102}00102\ \textcolor{comment}{-\/\ SEGGER\ RTT\ (опционально,\ для\ RTT\ трассировки)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00103}00103\ \textcolor{comment}{-\/\ FreeRTOS\ (опционально,\ для\ FreeRTOS\ задержек)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00104}00104\ \textcolor{comment}{\ */}}
+
+\end{DoxyCode}
diff --git a/Doc/latex/mylibs__config_8h.tex b/Doc/latex/mylibs__config_8h.tex
index f001a96..0764916 100644
--- a/Doc/latex/mylibs__config_8h.tex
+++ b/Doc/latex/mylibs__config_8h.tex
@@ -6,16 +6,14 @@
{\ttfamily \#include "{}stm32f4xx\+\_\+hal.\+h"{}}\newline
-Include dependency graph for mylibs\+\_\+config.\+h\+:
-\nopagebreak
+Include dependency graph for mylibs\+\_\+config.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{mylibs__config_8h__incl}
\end{center}
\end{figure}
-This graph shows which files directly or indirectly include this file\+:
-\nopagebreak
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
@@ -57,6 +55,14 @@ This graph shows which files directly or indirectly include this file\+:
\begin{DoxyCompactList}\small\item\em Конец RAM памяти (чтобы во время анализа стека не выйти за пределы) \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b}{GPIO\+\_\+\+TRACE\+\_\+\+ENABLE}}
\begin{DoxyCompactList}\small\item\em Включить GPIO трассировку \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}}
+\begin{DoxyCompactList}\small\item\em Включить оптимизацию параметров \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS}}~20
+\begin{DoxyCompactList}\small\item\em Максимальное количество параметров \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100
+\begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER}}
+\begin{DoxyCompactList}\small\item\em Подключить библиотеку для оптимизации параметров \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{INCLUDE\+\_\+\+BIT\+\_\+\+ACCESS\+\_\+\+LIB}}
\begin{DoxyCompactList}\small\item\em Подключить библиотеку с typedef с битовыми полями \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{INCLUDE\+\_\+\+TRACKERS\+\_\+\+LIB}}
diff --git a/Doc/latex/mylibs__config_8h__dep__incl.md5 b/Doc/latex/mylibs__config_8h__dep__incl.md5
index f2647ba..92c2562 100644
--- a/Doc/latex/mylibs__config_8h__dep__incl.md5
+++ b/Doc/latex/mylibs__config_8h__dep__incl.md5
@@ -1 +1 @@
-eca6e9ed3f5c38fa565ac78e3e494b4a
\ No newline at end of file
+4caffed778a6832d18365a032a821f0e
\ No newline at end of file
diff --git a/Doc/latex/mylibs__config_8h__dep__incl.pdf b/Doc/latex/mylibs__config_8h__dep__incl.pdf
index a60eaa9..a1d76bb 100644
Binary files a/Doc/latex/mylibs__config_8h__dep__incl.pdf and b/Doc/latex/mylibs__config_8h__dep__incl.pdf differ
diff --git a/Doc/latex/mylibs__config_8h__incl.pdf b/Doc/latex/mylibs__config_8h__incl.pdf
index d32923a..99357c2 100644
Binary files a/Doc/latex/mylibs__config_8h__incl.pdf and b/Doc/latex/mylibs__config_8h__incl.pdf differ
diff --git a/Doc/latex/mylibs__config_8h_source.tex b/Doc/latex/mylibs__config_8h_source.tex
index 726bb32..e4c369b 100644
--- a/Doc/latex/mylibs__config_8h_source.tex
+++ b/Doc/latex/mylibs__config_8h_source.tex
@@ -57,28 +57,44 @@
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00053}00053\ \textcolor{comment}{\ \ *\ @\}}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00054}00054\ \textcolor{comment}{\ \ */}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00055}00055\ }
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00056}00056\ }
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00057}00057\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00058}00058\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00059}00059\ \textcolor{comment}{\ \ *\ @addtogroup\ LIBS\_CONFIG\ \ \ Libraries\ configs}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_CONFIG}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Подключение\ различных\ модулей\ библиотеки}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00062}00062\ \textcolor{comment}{\ \ *\ @\{}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00063}00063\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00064}00064\ }
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00065}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{00065}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_BIT\_ACCESS\_LIB\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ typedef\ с\ битовыми\ полями}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00066}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{00066}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACKERS\_LIB\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трекерами}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00067}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}{00067}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACE\_LIB\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трейсами}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00068}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}{00068}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GENERAL\_PERIPH\_LIBS\ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ периферией}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00069}00069\ \textcolor{comment}{//\#define\ FREERTOS\_DELAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ///<\ Использовать\ FreeRTOS\ задержку,\ вместо\ HAL}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00070}00070\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00071}00071\ \textcolor{comment}{/**\ LIBS\_CONFIG}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00072}00072\ \textcolor{comment}{\ \ *\ @\}}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00073}00073\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00074}00074\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00075}00075\ \textcolor{comment}{/**\ MYLIBS\_CONFIG}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @\}}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00077}00077\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00078}00078\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_CONFIG\_H\_}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00056}00056\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00057}00057\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00058}00058\ \textcolor{comment}{\ \ *\ @addtogroup\ EVOLVE\_CONFIG\ \ \ Evolve\ configs}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00059}00059\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Конфигурация\ однослойного\ персептрона\ и\ алгоритма\ обучения}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @\{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00062}00062\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00063}00063\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00064}\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{00064}}\ \textcolor{preprocessor}{\#define\ ENABLE\_EVOLVE\_OPTIMIZATION\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Включить\ оптимизацию\ параметров}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00065}\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{00065}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MAX\_PARAMS\ \ \ \ \ \ \ 20\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ параметров}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00066}\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{00066}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MAX\_CANDIDATES\ \ \ 100\ \ \ \ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ кандидатов\ для\ обучения}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00067}00067\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00068}00068\ \textcolor{comment}{/**\ EVOLVE\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00070}00070\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00071}00071\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00072}00072\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00073}00073\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @addtogroup\ LIBS\_CONFIG\ \ \ Libraries\ configs}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00075}00075\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Подключение\ различных\ модулей\ библиотеки}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @\{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00079}00079\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00080}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{00080}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_EVOLVE\_OPTIMIZER\ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ для\ оптимизации\ параметров}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00081}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{00081}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_BIT\_ACCESS\_LIB\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ typedef\ с\ битовыми\ полями}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00082}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{00082}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACKERS\_LIB\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трекерами}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00083}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}{00083}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACE\_LIB\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трейсами}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00084}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}{00084}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GENERAL\_PERIPH\_LIBS\ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ периферией}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00085}00085\ \textcolor{comment}{//\#define\ FREERTOS\_DELAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ///<\ Использовать\ FreeRTOS\ задержку,\ вместо\ HAL}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00086}00086\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00087}00087\ \textcolor{comment}{/**\ LIBS\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00088}00088\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00089}00089\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00090}00090\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00091}00091\ \textcolor{comment}{/**\ MYLIBS\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00093}00093\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00094}00094\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_CONFIG\_H\_}}
\end{DoxyCode}
diff --git a/Doc/latex/mylibs__defs_8h.tex b/Doc/latex/mylibs__defs_8h.tex
index 8cfd855..a0cc00b 100644
--- a/Doc/latex/mylibs__defs_8h.tex
+++ b/Doc/latex/mylibs__defs_8h.tex
@@ -6,16 +6,14 @@
{\ttfamily \#include "{}mylibs\+\_\+config.\+h"{}}\newline
-Include dependency graph for mylibs\+\_\+defs.\+h\+:
-\nopagebreak
+Include dependency graph for mylibs\+\_\+defs.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{mylibs__defs_8h__incl}
\end{center}
\end{figure}
-This graph shows which files directly or indirectly include this file\+:
-\nopagebreak
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.md5 b/Doc/latex/mylibs__defs_8h__dep__incl.md5
index 32b7e22..4546d80 100644
--- a/Doc/latex/mylibs__defs_8h__dep__incl.md5
+++ b/Doc/latex/mylibs__defs_8h__dep__incl.md5
@@ -1 +1 @@
-c117dd8987effdd4ce705b77528f5bb8
\ No newline at end of file
+609390e8ed268a2e3acd045e0d24f78d
\ No newline at end of file
diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.pdf b/Doc/latex/mylibs__defs_8h__dep__incl.pdf
index e126dc0..cd6d71f 100644
Binary files a/Doc/latex/mylibs__defs_8h__dep__incl.pdf and b/Doc/latex/mylibs__defs_8h__dep__incl.pdf differ
diff --git a/Doc/latex/mylibs__defs_8h__incl.pdf b/Doc/latex/mylibs__defs_8h__incl.pdf
index 3033b99..884406e 100644
Binary files a/Doc/latex/mylibs__defs_8h__incl.pdf and b/Doc/latex/mylibs__defs_8h__incl.pdf differ
diff --git a/Doc/latex/mylibs__defs_8h_source.tex b/Doc/latex/mylibs__defs_8h_source.tex
index bbd4b3a..01eb3ff 100644
--- a/Doc/latex/mylibs__defs_8h_source.tex
+++ b/Doc/latex/mylibs__defs_8h_source.tex
@@ -7,7 +7,7 @@
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ mylibs\_defs.h}}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголочный\ файл\ для\ дефайнов\ библиотеки\ MyLibsGeneral.}}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00005}00005\ \textcolor{comment}{**************************************************************************}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00006}00006\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_DEFINES\ \ General\ Defines}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00006}00006\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_DEFINES\ \ General\ Tools}}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ MYLIBS\_ALL}}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ Общие\ макросы\ и\ typedef'ы,\ используемые\ по\ всему\ проекту}}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00009}00009\ \textcolor{comment}{*}}
@@ -59,135 +59,132 @@
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00055}00055\ \ \ }
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00056}00056\ }
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00057}00057\ \textcolor{comment}{/***************************************************************************}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00058}00058\ \textcolor{comment}{********************************ACCESS\_DEFINES*****************************/}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00059}00059\ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00060}00060\ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00061}00061\ \textcolor{comment}{/***************************************************************************}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00062}00062\ \textcolor{comment}{******************************DELAYS\_DEFINES*******************************/}\textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00063}00063\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ @addtogroup\ DELAYS\_DEFINES\ \ \ \ Delays\ defines}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00065}00065\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Макросы\ и\ определения\ для\ работы\ с\ задержками\ в\ миллисекундах.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00067}00067\ \textcolor{comment}{\ \ *\ @details}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ Этот\ блок\ содержит\ макросы\ для\ реализации\ задержек\ с\ использованием\ HAL\ или\ FreeRTOS:}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelay\ \ \ \ \ \ \ \ \ \ \ \ \ —\ простая\ задержка\ заданной\ длительности;}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00070}00070\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayStart\ \ \ \ \ \ \ \ —\ сохранение\ текущего\ времени\ начала\ задержки;}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWhileActive\ \ —\ проверка,\ активна\ ли\ задержка;}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00072}00072\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWaitDone\ \ \ \ \ —\ проверка,\ завершена\ ли\ задержка.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00073}00073\ \textcolor{comment}{\ \ *\ Эти\ макросы\ удобны\ для\ реализации\ неблокирующих\ задержек.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @\{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00075}00075\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00076}00076\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00077}00077\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00078}00078\ \textcolor{comment}{\ \ *\ @def\ msDelay(\_ms\_)}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ @brief\ Задержка\ на\ указанное\ количество\ миллисекунд.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00080}00080\ \textcolor{comment}{\ \ *\ @param\ \_ms\_\ Время\ задержки\ в\ миллисекундах.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00081}00081\ \textcolor{comment}{\ \ *\ @note\ Использует\ HAL\_Delay\ или\ osDelay\ в\ зависимости\ от\ @ref\ FREERTOS\_DELAY.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00082}00082\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00083}00083\ \textcolor{preprocessor}{\#ifdef\ FREERTOS\_DELAY}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00084}00084\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ osDelay(\_ms\_)}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00085}00085\ \textcolor{preprocessor}{\#else}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00086}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}{00086}}\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ HAL\_Delay(\_ms\_)}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00087}00087\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00088}00088\ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00089}00089\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00090}00090\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00091}00091\ \textcolor{comment}{\ \ *\ @brief\ Начать\ отсчет\ задержки.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ @param\ \_pvar\_\ Указатель\ на\ переменную\ типа\ uint32\_t\ для\ хранения\ времени\ старта.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00093}00093\ \textcolor{comment}{\ \ *\ @details\ После\ вызова\ этого\ макроса\ переменная\ \_pvar\_\ содержит\ текущее\ количество\ миллисекунд}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ с\ момента\ запуска\ системы\ (HAL\_GetTick).\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00095}00095\ \textcolor{comment}{\ \ *\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00096}00096\ \textcolor{comment}{\ \ *\ Используется\ для\ реализации\ неблокирующих\ задержек.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00097}00097\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00098}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}{00098}}\ \textcolor{preprocessor}{\#define\ msDelayStart(\_pvar\_)\ \ \ \ \ \ \ \ \ \ \ \ *(\_pvar\_)\ =\ HAL\_GetTick()}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00099}00099\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00100}00100\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00101}00101\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ активна\ ли\ задержка.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00102}00102\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00103}00103\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (@ref\ msDelayStart).}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00104}00104\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ еще\ активна.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00105}00105\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ завершена.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00106}00106\ \textcolor{comment}{\ *\ @details}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00107}00107\ \textcolor{comment}{\ *\ Возвращает\ true,\ пока\ время\ задержки\ не\ истекло.\ Используется\ в\ проверках,}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00108}00108\ \textcolor{comment}{\ *\ когда\ нужно\ **действовать,\ пока\ задержка\ выполняется**.\ Пример:}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00109}00109\ \textcolor{comment}{\ *\ @code}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00110}00110\ \textcolor{comment}{\ *\ while(msDelayWhileActive(1000,\ \&tick))\ \{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00111}00111\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ другие\ задачи,\ задержка\ не\ блокирует\ поток}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00112}00112\ \textcolor{comment}{\ *\ \}}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00113}00113\ \textcolor{comment}{\ *\ @endcode}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00114}00114\ \textcolor{comment}{\ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00115}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}{00115}}\ \textcolor{preprocessor}{\#define\ msDelayWhileActive(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ <\ \_ms\_)}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00116}00116\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00117}00117\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00118}00118\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ завершилась\ ли\ задержка.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00119}00119\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00120}00120\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (msDelayStart).}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00121}00121\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ завершена.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00122}00122\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ еще\ активна.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00123}00123\ \textcolor{comment}{\ *\ @details}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00124}00124\ \textcolor{comment}{\ *\ Возвращает\ true,\ когда\ задержка\ уже\ завершена.\ Используется\ в\ проверках,}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00125}00125\ \textcolor{comment}{\ *\ когда\ нужно\ **выполнить\ действие\ только\ после\ окончания\ задержки**.\ Пример:}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00126}00126\ \textcolor{comment}{\ *\ @code}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00127}00127\ \textcolor{comment}{\ *\ if(msDelayWaitDone(1000,\ \&tick))\ \{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00128}00128\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ действие\ после\ завершения\ задержки}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00129}00129\ \textcolor{comment}{\ *\ \}}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00130}00130\ \textcolor{comment}{\ *\ @endcode}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00131}00131\ \textcolor{comment}{\ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00132}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}{00132}}\ \textcolor{preprocessor}{\#define\ msDelayWaitDone(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ >=\ \_ms\_)}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00133}00133\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00134}00134\ \textcolor{comment}{/**\ DELAYS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00135}00135\ \textcolor{comment}{\ \ *\ @\}}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00136}00136\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00137}00137\ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00138}00138\ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00139}00139\ \textcolor{comment}{/***************************************************************************}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{*******************************MATH\_DEFINES********************************/}\textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @\{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}00147\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}00151\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{\ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00154}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}00155\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}00162\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00165}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}00166\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00173}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}00174\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00181}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}00182\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \textcolor{comment}{/**\ UTILS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ @\}}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00185}00185\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00186}00186\ \ \ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00187}00187\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_DEFINES\_H\_}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00058}00058\ \textcolor{comment}{******************************DELAYS\_DEFINES*******************************/}\textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00059}00059\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @addtogroup\ DELAYS\_DEFINES\ \ \ \ Delays\ defines}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00062}00062\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Макросы\ и\ определения\ для\ работы\ с\ задержками\ в\ миллисекундах.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00063}00063\ \textcolor{comment}{\ \ *\ @details}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ Этот\ блок\ содержит\ макросы\ для\ реализации\ задержек\ с\ использованием\ HAL\ или\ FreeRTOS:}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00065}00065\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelay\ \ \ \ \ \ \ \ \ \ \ \ \ —\ простая\ задержка\ заданной\ длительности;}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayStart\ \ \ \ \ \ \ \ —\ сохранение\ текущего\ времени\ начала\ задержки;}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00067}00067\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWhileActive\ \ —\ проверка,\ активна\ ли\ задержка;}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWaitDone\ \ \ \ \ —\ проверка,\ завершена\ ли\ задержка.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ Эти\ макросы\ удобны\ для\ реализации\ неблокирующих\ задержек.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00070}00070\ \textcolor{comment}{\ \ *\ @\{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00071}00071\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00072}00072\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00073}00073\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @def\ msDelay(\_ms\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00075}00075\ \textcolor{comment}{\ \ *\ @brief\ Задержка\ на\ указанное\ количество\ миллисекунд.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @param\ \_ms\_\ Время\ задержки\ в\ миллисекундах.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @note\ Использует\ HAL\_Delay\ или\ osDelay\ в\ зависимости\ от\ @ref\ FREERTOS\_DELAY.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00079}00079\ \textcolor{preprocessor}{\#ifdef\ FREERTOS\_DELAY}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00080}00080\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ osDelay(\_ms\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00081}00081\ \textcolor{preprocessor}{\#else}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00082}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}{00082}}\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ HAL\_Delay(\_ms\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00083}00083\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00084}00084\ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00085}00085\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00086}00086\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00087}00087\ \textcolor{comment}{\ \ *\ @brief\ Начать\ отсчет\ задержки.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00088}00088\ \textcolor{comment}{\ \ *\ @param\ \_pvar\_\ Указатель\ на\ переменную\ типа\ uint32\_t\ для\ хранения\ времени\ старта.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00089}00089\ \textcolor{comment}{\ \ *\ @details\ После\ вызова\ этого\ макроса\ переменная\ \_pvar\_\ содержит\ текущее\ количество\ миллисекунд}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ с\ момента\ запуска\ системы\ (HAL\_GetTick).\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00091}00091\ \textcolor{comment}{\ \ *\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ Используется\ для\ реализации\ неблокирующих\ задержек.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00093}00093\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00094}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}{00094}}\ \textcolor{preprocessor}{\#define\ msDelayStart(\_pvar\_)\ \ \ \ \ \ \ \ \ \ \ \ *(\_pvar\_)\ =\ HAL\_GetTick()}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00095}00095\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00096}00096\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00097}00097\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ активна\ ли\ задержка.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00098}00098\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00099}00099\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (@ref\ msDelayStart).}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00100}00100\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ еще\ активна.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00101}00101\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ завершена.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00102}00102\ \textcolor{comment}{\ *\ @details}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00103}00103\ \textcolor{comment}{\ *\ Возвращает\ true,\ пока\ время\ задержки\ не\ истекло.\ Используется\ в\ проверках,}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00104}00104\ \textcolor{comment}{\ *\ когда\ нужно\ **действовать,\ пока\ задержка\ выполняется**.\ Пример:}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00105}00105\ \textcolor{comment}{\ *\ @code}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00106}00106\ \textcolor{comment}{\ *\ while(msDelayWhileActive(1000,\ \&tick))\ \{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00107}00107\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ другие\ задачи,\ задержка\ не\ блокирует\ поток}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00108}00108\ \textcolor{comment}{\ *\ \}}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00109}00109\ \textcolor{comment}{\ *\ @endcode}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00110}00110\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00111}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}{00111}}\ \textcolor{preprocessor}{\#define\ msDelayWhileActive(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ <\ \_ms\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00112}00112\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00113}00113\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00114}00114\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ завершилась\ ли\ задержка.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00115}00115\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00116}00116\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (msDelayStart).}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00117}00117\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ завершена.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00118}00118\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ еще\ активна.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00119}00119\ \textcolor{comment}{\ *\ @details}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00120}00120\ \textcolor{comment}{\ *\ Возвращает\ true,\ когда\ задержка\ уже\ завершена.\ Используется\ в\ проверках,}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00121}00121\ \textcolor{comment}{\ *\ когда\ нужно\ **выполнить\ действие\ только\ после\ окончания\ задержки**.\ Пример:}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00122}00122\ \textcolor{comment}{\ *\ @code}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00123}00123\ \textcolor{comment}{\ *\ if(msDelayWaitDone(1000,\ \&tick))\ \{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00124}00124\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ действие\ после\ завершения\ задержки}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00125}00125\ \textcolor{comment}{\ *\ \}}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00126}00126\ \textcolor{comment}{\ *\ @endcode}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00127}00127\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00128}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}{00128}}\ \textcolor{preprocessor}{\#define\ msDelayWaitDone(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ >=\ \_ms\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00129}00129\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00130}00130\ \textcolor{comment}{/**\ DELAYS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00131}00131\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00132}00132\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00133}00133\ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00134}00134\ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00135}00135\ \textcolor{comment}{/***************************************************************************}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00136}00136\ \textcolor{comment}{*******************************UTIL\_DEFINES********************************/}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00137}00137\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00138}00138\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00139}00139\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @\{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}00147\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00151}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}00154\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}00155\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00162}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}00165\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}00166\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00170}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}00173\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}00174\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00178}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{/**\ UTILS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}00181\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}00182\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \ \ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_DEFINES\_H\_}}
\end{DoxyCode}
diff --git a/Doc/latex/mylibs__include_8h.tex b/Doc/latex/mylibs__include_8h.tex
index 7dc274b..7e1d759 100644
--- a/Doc/latex/mylibs__include_8h.tex
+++ b/Doc/latex/mylibs__include_8h.tex
@@ -6,14 +6,15 @@
{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
+{\ttfamily \#include "{}math.\+h"{}}\newline
{\ttfamily \#include "{}bit\+\_\+access.\+h"{}}\newline
{\ttfamily \#include "{}trackers.\+h"{}}\newline
{\ttfamily \#include "{}trace.\+h"{}}\newline
+{\ttfamily \#include "{}evolve\+\_\+optimizer.\+h"{}}\newline
{\ttfamily \#include "{}general\+\_\+flash.\+h"{}}\newline
{\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline
{\ttfamily \#include "{}general\+\_\+tim.\+h"{}}\newline
-Include dependency graph for mylibs\+\_\+include.\+h\+:
-\nopagebreak
+Include dependency graph for mylibs\+\_\+include.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/mylibs__include_8h__incl.md5 b/Doc/latex/mylibs__include_8h__incl.md5
index bae04a1..4d9f480 100644
--- a/Doc/latex/mylibs__include_8h__incl.md5
+++ b/Doc/latex/mylibs__include_8h__incl.md5
@@ -1 +1 @@
-12974059edd310824ecd8821917889e9
\ No newline at end of file
+e8a6536a4a1a8e7b4caa7211e99459a4
\ No newline at end of file
diff --git a/Doc/latex/mylibs__include_8h__incl.pdf b/Doc/latex/mylibs__include_8h__incl.pdf
index a601a44..4da492e 100644
Binary files a/Doc/latex/mylibs__include_8h__incl.pdf and b/Doc/latex/mylibs__include_8h__incl.pdf differ
diff --git a/Doc/latex/mylibs__include_8h_source.tex b/Doc/latex/mylibs__include_8h_source.tex
index 13262ce..031799d 100644
--- a/Doc/latex/mylibs__include_8h_source.tex
+++ b/Doc/latex/mylibs__include_8h_source.tex
@@ -34,157 +34,98 @@
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00030}00030\ }
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00031}00031\ \textcolor{preprocessor}{\#ifdef\ ARM\_MATH\_CM4}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00032}00032\ \textcolor{preprocessor}{\ \ \#include\ "{}arm\_math.h"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00033}00033\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00034}00034\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00035}00035\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00036}00036\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BIT\_ACCESS\_LIB}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00037}00037\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bit__access_8h}{bit\_access.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00038}00038\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00039}00039\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00040}00040\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACKERS\_LIB}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00041}00041\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trackers_8h}{trackers.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00042}00042\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00043}00043\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00044}00044\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACE\_LIB}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00045}00045\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trace_8h}{trace.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00046}00046\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00047}00047\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00048}00048\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00049}00049\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00050}00050\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00051}00051\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00052}00052\ \textcolor{preprocessor}{\#include\ "{}general\_flash.h"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00053}00053\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00054}00054\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00055}00055\ \textcolor{preprocessor}{\#include\ "{}general\_spi.h"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00056}00056\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00057}00057\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00058}00058\ \textcolor{preprocessor}{\#include\ "{}general\_uart.h"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00059}00059\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00060}00060\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00061}00061\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00062}00062\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00063}00063\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00064}00064\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00065}00065\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00033}00033\ \textcolor{preprocessor}{\#else}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00034}00034\ \textcolor{preprocessor}{\ \ \#include\ "{}math.h"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00035}00035\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00036}00036\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00037}00037\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00038}00038\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BIT\_ACCESS\_LIB}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00039}00039\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bit__access_8h}{bit\_access.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00040}00040\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00041}00041\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00042}00042\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACKERS\_LIB}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00043}00043\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trackers_8h}{trackers.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00044}00044\ \textcolor{preprocessor}{\#else}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00045}00045\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00046}00046\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00047}00047\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00048}00048\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00049}00049\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00050}00050\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00051}00051\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00052}00052\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00053}00053\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00054}00054\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00055}00055\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00056}00056\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00057}00057\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00058}00058\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00059}00059\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00060}00060\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00061}00061\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00062}00062\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00063}00063\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00064}00064\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00065}00065\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00066}00066\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00067}00067\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00068}00068\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00069}00069\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00070}00070\ \textcolor{comment}{//\ user\ includes}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00071}00071\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00072}00072\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00073}00073\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00074}00074\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00075}00075\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00076}00076\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00077}00077\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00078}00078\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00079}00079\ \textcolor{comment}{@mainpage}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00080}00080\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00081}00081\ \textcolor{comment}{@section\ overview\ Обзор}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \textcolor{comment}{MyLibs\ -\/\ это\ набор\ библиотек\ для\ удобной\ работы\ с\ периферией\ микроконтроллеров\ STM32.}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00084}00084\ \textcolor{comment}{@subsection\ features\ Основные\ возможности}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00085}00085\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00086}00086\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ @ref\ MYLIBS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00087}00087\ \textcolor{comment}{-\/\ Битовый\ доступ\ к\ регистрам\ через\ union}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00088}00088\ \textcolor{comment}{-\/\ Трекеры\ для\ статистики\ и\ отладки}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00089}00089\ \textcolor{comment}{-\/\ Макросы\ для\ задержек\ и\ утилит}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00090}00090\ \textcolor{comment}{-\/\ Поддержка\ FreeRTOS}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00091}00091\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \textcolor{comment}{@subsubsection\ trace\_module\ Трассировка\ @ref\ TRACE}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{comment}{-\/\ Serial\ трассировка\ через\ SWO\ и\ RTT}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00095}00095\ \textcolor{comment}{-\/\ GPIO\ трассировка\ для\ отладки}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00096}00096\ \textcolor{comment}{-\/\ Сохранение\ логов\ в\ Flash\ память}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00097}00097\ \textcolor{comment}{-\/\ Обработка\ HardFault\ с\ сохранением\ контекста}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00098}00098\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ \textcolor{comment}{@subsubsection\ gpio\_module\ Модуль\ GPIO\ @ref\ MY\_LIBS\_GPIO}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00100}00100\ \textcolor{comment}{-\/\ Управление\ светодиодами\ (включение/выключение,\ моргание,\ плавное\ затухание)}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{comment}{-\/\ Работа\ с\ кнопками\ (чтение\ состояния,\ фильтрация\ дребезга)}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{comment}{-\/\ Инициализация\ портов\ и\ тактирования}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{comment}{-\/\ Поддержка\ альтернативных\ функций}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{comment}{@subsubsection\ tim\_module\ Модуль\ таймеров\ @ref\ MY\_LIBS\_TIM}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{comment}{-\/\ Базовая\ инициализация\ таймеров}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{comment}{-\/\ Режимы\ прерываний}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{comment}{-\/\ Формирование\ задержек\ (блокирующие\ и\ неблокирующие)}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{comment}{-\/\ Работа\ с\ энкодерами\ (чтение\ положения,\ обработка\ кнопок)}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{comment}{-\/\ Настройка\ ШИМ\ и\ Output\ Compare}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ \textcolor{comment}{@subsection\ structure\ Структура\ проекта}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00116}00116\ \textcolor{comment}{@code}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{comment}{├──\ inc/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Заголовочные\ файлы}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_include.h\ \ \ \ \ \#\ Главный\ include\ файл}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{comment}{│\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{comment}{│\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ \textcolor{comment}{│\ \ \ ├──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ \textcolor{comment}{│\ \ \ ├──\ general\_gpio.h\ \ \ \ \ \ \ \#\ Работа\ с\ GPIO}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{comment}{│\ \ \ └──\ general\_tim.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ таймерами}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00126}00126\ \textcolor{comment}{└──\ src/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Исходные\ файлы}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00127}00127\ \textcolor{comment}{\ \ \ \ ├──\ general\_gpio.c\ \ \ \ \ \ \ \#\ Реализация\ GPIO}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00128}00128\ \textcolor{comment}{\ \ \ \ └──\ general\_tim.c\ \ \ \ \ \ \ \ \#\ Реализация\ TIM}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00129}00129\ \textcolor{comment}{@endcode}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00130}00130\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00131}00131\ \textcolor{comment}{@subsection\ usage\_basic\ Использование}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00132}00132\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00133}00133\ \textcolor{comment}{Инструкция\ по\ подключению:}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00134}00134\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00135}00135\ \textcolor{comment}{1.\ Настройте\ конфигурацию\ @ref\ MYLIBS\_CONFIG\ в\ @ref\ mylibs\_config.h\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00136}00136\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00137}00137\ \textcolor{comment}{2.\ Подключите\ главный\ заголовочный\ файл:}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00138}00138\ \textcolor{comment}{@code}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00139}00139\ \textcolor{comment}{\#include\ "{}mylibs\_include.h"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00140}00140\ \textcolor{comment}{@endcode}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00141}00141\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00142}00142\ \textcolor{comment}{3.\ Используйте\ нужные\ модули\ в\ своем\ коде}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00143}00143\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00144}00144\ \textcolor{comment}{@subsubsection\ gpio\_example\ Пример\ работы\ с\ GPIO}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00145}00145\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00146}00146\ \textcolor{comment}{@code}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00147}00147\ \textcolor{comment}{//\ Инициализация\ светодиода}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00148}00148\ \textcolor{comment}{MX\_GPIO\_Init();}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00149}00149\ \textcolor{comment}{GPIO\_LEDTypeDef\ led;}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00150}00150\ \textcolor{comment}{GPIO\_LED\_Init(\&led,\ GPIOA,\ GPIO\_PIN\_5,\ 1);}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00151}00151\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00152}00152\ \textcolor{comment}{//\ Включение\ светодиода}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00153}00153\ \textcolor{comment}{GPIO\_LED\_On(\&led);}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00154}00154\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00155}00155\ \textcolor{comment}{//\ Запуск\ моргания}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00156}00156\ \textcolor{comment}{GPIO\_LED\_Blink\_Start(\&led,\ 500);\ //\ Период\ 500\ мс}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00157}00157\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00158}00158\ \textcolor{comment}{//\ В\ основном\ цикле}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00159}00159\ \textcolor{comment}{while\ (1)\ \{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00160}00160\ \textcolor{comment}{GPIO\_LED\_Dynamic\_Handle(\&led);}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00161}00161\ \textcolor{comment}{\}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00162}00162\ \textcolor{comment}{@endcode}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00163}00163\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00164}00164\ \textcolor{comment}{@subsubsection\ tim\_example\ Пример\ работы\ с\ таймером}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00165}00165\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00166}00166\ \textcolor{comment}{@code}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00167}00167\ \textcolor{comment}{//\ Настройка\ таймера}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00168}00168\ \textcolor{comment}{TIM\_SettingsTypeDef\ tim\_settings\ =\ \{0\};}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00169}00169\ \textcolor{comment}{tim\_settings.htim.Instance\ =\ TIM2;}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00170}00170\ \textcolor{comment}{tim\_settings.sTimAHBFreqMHz\ =\ SystemCoreClock;}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00171}00171\ \textcolor{comment}{tim\_settings.sTickBaseUS\ =\ TIM\_TickBase\_1MS;}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00172}00172\ \textcolor{comment}{tim\_settings.sTimFreqHz\ =\ 1000;\ //\ 1\ кГц}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00173}00173\ \textcolor{comment}{tim\_settings.sTimMode\ =\ TIM\_IT\_CONF;}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00174}00174\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00175}00175\ \textcolor{comment}{TIM\_Base\_Init(\&tim\_settings);}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00176}00176\ \textcolor{comment}{HAL\_TIM\_Base\_Start(\&tim\_settings.htim);}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00177}00177\ \textcolor{comment}{@endcode}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00178}00178\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00179}00179\ \textcolor{comment}{@subsection\ dependencies\ Зависимости}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00180}00180\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00181}00181\ \textcolor{comment}{-\/\ HAL\ библиотека\ STM32}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00182}00182\ \textcolor{comment}{-\/\ SEGGER\ RTT\ (опционально,\ для\ RTT\ трассировки)}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00183}00183\ \textcolor{comment}{-\/\ FreeRTOS\ (опционально,\ для\ FreeRTOS\ задержек)}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00184}00184\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00067}00067\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACE\_LIB}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00068}00068\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trace_8h}{trace.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00069}00069\ \textcolor{preprocessor}{\#else}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00070}00070\ \textcolor{preprocessor}{\#define\ my\_printf(...)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00071}00071\ \textcolor{preprocessor}{\#define\ log\_printf(TAG,\ fmt,\ ...)\ \ }}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00072}00072\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00073}00073\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00074}00074\ \textcolor{preprocessor}{\#define\ RTT\_FlashPrepare(...)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00075}00075\ \textcolor{preprocessor}{\#define\ RTT\_EraseFlash(...)\ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00076}00076\ \textcolor{preprocessor}{\#define\ RTT\_SaveToFlash(...)\ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00077}00077\ \textcolor{preprocessor}{\#define\ RTT\_ReadFromFlash(...)\ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00078}00078\ \textcolor{preprocessor}{\#define\ HF\_CheckRecovered(...)\ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00079}00079\ \textcolor{preprocessor}{\#define\ HF\_HandleFault(...)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00080}00080\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00081}00081\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_EVOLVE\_OPTIMIZER}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{evolve__optimizer_8h}{evolve\_optimizer.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00084}00084\ \textcolor{preprocessor}{\#else}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00085}00085\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00086}00086\ \ \ uint16\_t\ n\_params;\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00087}00087\ \ \ uint16\_t\ n\_cand;\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00088}00088\ \ \ uint16\_t\ n\_best;\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00089}00089\ \ \ uint16\_t\ iq\_mutation;\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00090}00090\ \ \ int32\_t\ loss[0];\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00091}00091\ \ \ int32\_t\ candidates[0][0];\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00095}00095\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00096}00096\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00097}00097\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00098}00098\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00100}00100\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{preprocessor}{\#include\ "{}general\_flash.h"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{preprocessor}{\#include\ "{}general\_spi.h"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{preprocessor}{\#include\ "{}general\_uart.h"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00116}00116\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{comment}{//\ user\ includes}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}}
\end{DoxyCode}
diff --git a/Doc/latex/refman.tex b/Doc/latex/refman.tex
index 6fd13d0..31821a5 100644
--- a/Doc/latex/refman.tex
+++ b/Doc/latex/refman.tex
@@ -243,6 +243,7 @@
\chapter{Topic Documentation}
\input{group___m_y_l_i_b_s___a_l_l}
\chapter{Class Documentation}
+\input{struct_evolve_optimizer__t}
\input{struct_g_p_i_o___l_e_d_type_def}
\input{struct_g_p_i_o___switch_type_def}
\input{struct_h_f___stack_frame__t}
@@ -261,6 +262,8 @@
\input{____general__uart_8h_source}
\input{bit__access_8h}
\input{bit__access_8h_source}
+\input{evolve__optimizer_8h}
+\input{evolve__optimizer_8h_source}
\input{general__gpio_8h}
\input{general__gpio_8h_source}
\input{general__tim_8h}
@@ -275,6 +278,7 @@
\input{trace_8h_source}
\input{trackers_8h}
\input{trackers_8h_source}
+\input{mainpage_8h_source}
\input{____general__flash_8c_source}
\input{____general__spi_8c_source}
\input{____general__uart_8c_source}
diff --git a/Doc/latex/struct_evolve_optimizer__t.tex b/Doc/latex/struct_evolve_optimizer__t.tex
new file mode 100644
index 0000000..cd7a322
--- /dev/null
+++ b/Doc/latex/struct_evolve_optimizer__t.tex
@@ -0,0 +1,143 @@
+\doxysection{Evolve\+Optimizer\+\_\+t Struct Reference}
+\hypertarget{struct_evolve_optimizer__t}{}\label{struct_evolve_optimizer__t}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+
+
+Структура эволюционного оптимизатора
+
+
+
+
+{\ttfamily \#include $<$evolve\+\_\+optimizer.\+h$>$}
+
+\doxysubsubsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\+\_\+params}}
+\begin{DoxyCompactList}\small\item\em Количество параметров \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\+\_\+cand}}
+\begin{DoxyCompactList}\small\item\em Количество кандидатов \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\+\_\+best}}
+\begin{DoxyCompactList}\small\item\em Количество лучших, усредняемых \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\+\_\+mutation}}
+\begin{DoxyCompactList}\small\item\em Амплитуда мутации в Q16.\+16. \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\+\_\+index}}
+\begin{DoxyCompactList}\small\item\em Индекс кандидата для обработки \end{DoxyCompactList}\item
+int32\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}} \mbox{[}100\mbox{]}
+\begin{DoxyCompactList}\small\item\em Loss для каждого кандидата \end{DoxyCompactList}\item
+int32\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}} \mbox{[}100\mbox{]}\mbox{[}20\mbox{]}
+\begin{DoxyCompactList}\small\item\em Параметры кандидатов \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Структура эволюционного оптимизатора
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00081}{81}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+
+
+\label{doc-variable-members}
+\Hypertarget{struct_evolve_optimizer__t_doc-variable-members}
+\doxysubsection{Member Data Documentation}
+\Hypertarget{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_params@{n\_params}}
+\index{n\_params@{n\_params}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{n\_params}{n\_params}}
+{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}
+uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+params}
+
+
+
+Количество параметров
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00082}{82}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_cand@{n\_cand}}
+\index{n\_cand@{n\_cand}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{n\_cand}{n\_cand}}
+{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}
+uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+cand}
+
+
+
+Количество кандидатов
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00083}{83}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_best@{n\_best}}
+\index{n\_best@{n\_best}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{n\_best}{n\_best}}
+{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}
+uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+best}
+
+
+
+Количество лучших, усредняемых
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00084}{84}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!iq\_mutation@{iq\_mutation}}
+\index{iq\_mutation@{iq\_mutation}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{iq\_mutation}{iq\_mutation}}
+{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}
+uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::iq\+\_\+mutation}
+
+
+
+Амплитуда мутации в Q16.\+16.
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00085}{85}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!cand\_index@{cand\_index}}
+\index{cand\_index@{cand\_index}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{cand\_index}{cand\_index}}
+{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}
+uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::cand\+\_\+index}
+
+
+
+Индекс кандидата для обработки
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00086}{86}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!loss@{loss}}
+\index{loss@{loss}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{loss}{loss}}
+{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}
+int32\+\_\+t Evolve\+Optimizer\+\_\+t\+::loss\mbox{[}100\mbox{]}}
+
+
+
+Loss для каждого кандидата
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00087}{87}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!candidates@{candidates}}
+\index{candidates@{candidates}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{candidates}{candidates}}
+{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}
+int32\+\_\+t Evolve\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}}
+
+
+
+Параметры кандидатов
+
+
+
+Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00088}{88}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}}\end{DoxyCompactItemize}
diff --git a/Doc/latex/struct_t_i_m___encoder_type_def.tex b/Doc/latex/struct_t_i_m___encoder_type_def.tex
index fba5496..8249b12 100644
--- a/Doc/latex/struct_t_i_m___encoder_type_def.tex
+++ b/Doc/latex/struct_t_i_m___encoder_type_def.tex
@@ -11,8 +11,7 @@
-Collaboration diagram for TIM\+\_\+\+Encoder\+Type\+Def\+:
-\nopagebreak
+Collaboration diagram for TIM\+\_\+\+Encoder\+Type\+Def\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf b/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf
index 9e3d4a4..516acf7 100644
Binary files a/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf and b/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf differ
diff --git a/Doc/latex/topics.tex b/Doc/latex/topics.tex
index 61d5bd7..03634c8 100644
--- a/Doc/latex/topics.tex
+++ b/Doc/latex/topics.tex
@@ -5,11 +5,13 @@ Here is a list of all topics with brief descriptions\+:\begin{DoxyCompactList}
\item \contentsline{section}{Configs}{\pageref{group___m_y_l_i_b_s___c_o_n_f_i_g}}{}
\begin{DoxyCompactList}
\item \contentsline{section}{Trace configs}{\pageref{group___t_r_a_c_e___c_o_n_f_i_g}}{}
+\item \contentsline{section}{Evolve configs}{\pageref{group___e_v_o_l_v_e___c_o_n_f_i_g}}{}
\item \contentsline{section}{Libraries configs}{\pageref{group___l_i_b_s___c_o_n_f_i_g}}{}
\end{DoxyCompactList}
-\item \contentsline{section}{General Defines}{\pageref{group___m_y_l_i_b_s___d_e_f_i_n_e_s}}{}
+\item \contentsline{section}{General Tools}{\pageref{group___m_y_l_i_b_s___d_e_f_i_n_e_s}}{}
\begin{DoxyCompactList}
\item \contentsline{section}{Bit access defines}{\pageref{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}}{}
+\item \contentsline{section}{Evolve optimizer}{\pageref{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}}{}
\item \contentsline{section}{Error Handler defines}{\pageref{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}}{}
\item \contentsline{section}{Delays defines}{\pageref{group___d_e_l_a_y_s___d_e_f_i_n_e_s}}{}
\item \contentsline{section}{Utils defines}{\pageref{group___u_t_i_l_s___d_e_f_i_n_e_s}}{}
diff --git a/Doc/latex/trace_8h.tex b/Doc/latex/trace_8h.tex
index cd956cb..34b2516 100644
--- a/Doc/latex/trace_8h.tex
+++ b/Doc/latex/trace_8h.tex
@@ -8,16 +8,14 @@
{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include "{}SEGGER\+\_\+\+RTT.\+h"{}}\newline
-Include dependency graph for trace.\+h\+:
-\nopagebreak
+Include dependency graph for trace.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=337pt]{trace_8h__incl}
\end{center}
\end{figure}
-This graph shows which files directly or indirectly include this file\+:
-\nopagebreak
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/trace_8h__dep__incl.pdf b/Doc/latex/trace_8h__dep__incl.pdf
index 0e6a66b..ae17096 100644
Binary files a/Doc/latex/trace_8h__dep__incl.pdf and b/Doc/latex/trace_8h__dep__incl.pdf differ
diff --git a/Doc/latex/trace_8h__incl.pdf b/Doc/latex/trace_8h__incl.pdf
index 5e2469f..53119aa 100644
Binary files a/Doc/latex/trace_8h__incl.pdf and b/Doc/latex/trace_8h__incl.pdf differ
diff --git a/Doc/latex/trackers_8h.tex b/Doc/latex/trackers_8h.tex
index 9b09a0e..b00b13c 100644
--- a/Doc/latex/trackers_8h.tex
+++ b/Doc/latex/trackers_8h.tex
@@ -6,16 +6,14 @@
{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
-Include dependency graph for trackers.\+h\+:
-\nopagebreak
+Include dependency graph for trackers.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{trackers_8h__incl}
\end{center}
\end{figure}
-This graph shows which files directly or indirectly include this file\+:
-\nopagebreak
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
diff --git a/Doc/latex/trackers_8h__dep__incl.pdf b/Doc/latex/trackers_8h__dep__incl.pdf
index 82a2eab..26999c4 100644
Binary files a/Doc/latex/trackers_8h__dep__incl.pdf and b/Doc/latex/trackers_8h__dep__incl.pdf differ
diff --git a/Doc/latex/trackers_8h__incl.pdf b/Doc/latex/trackers_8h__incl.pdf
index 2415d89..2282aec 100644
Binary files a/Doc/latex/trackers_8h__incl.pdf and b/Doc/latex/trackers_8h__incl.pdf differ
diff --git a/Doc/latex/trackers_8h_source.tex b/Doc/latex/trackers_8h_source.tex
index bfc2bba..0cb113a 100644
--- a/Doc/latex/trackers_8h_source.tex
+++ b/Doc/latex/trackers_8h_source.tex
@@ -138,25 +138,31 @@
\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00134}00134\ \ \ }
\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00135}00135\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}}
\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00136}00136\ }
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00137}00137\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00138}00138\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00139}00139\ }
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00140}00140\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00141}00141\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00142}00142\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00143}00143\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00144}00144\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)\ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00145}00145\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00146}00146\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ всей\ структуры\ */}}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00147}00147\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00148}00148\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00149}00149\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00152}00152\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00153}00153\ }
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00154}00154\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//TRACKERS\_ENABLE}}
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00155}00155\ \ \ }
-\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00156}00156\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACKERS\_H\_}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00137}00137\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00138}00138\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00139}00139\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00140}00140\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00141}00141\ }
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00142}00142\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00143}00143\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00144}00144\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00145}00145\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00146}00146\ \ \ }
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00147}00147\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00148}00148\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00149}00149\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00152}00152\ }
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00153}00153\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00154}00154\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00155}00155\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00156}00156\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00157}00157\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00158}00158\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00159}00159\ }
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00160}00160\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//TRACKERS\_ENABLE}}
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00161}00161\ \ \ }
+\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00162}00162\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACKERS\_H\_}}
\end{DoxyCode}
diff --git a/MyLibsGeneral/Inc/evolve_optimizer.h b/MyLibsGeneral/Inc/evolve_optimizer.h
new file mode 100644
index 0000000..d011766
--- /dev/null
+++ b/MyLibsGeneral/Inc/evolve_optimizer.h
@@ -0,0 +1,273 @@
+/**
+******************************************************************************
+* @file evolve_optimizer.h
+* @brief Заголовочный файл для адаптивного подбора параметров
+******************************************************************************
+* @addtogroup EVOLVE_OPTIMIZER Evolve optimizer
+* @ingroup MYLIBS_DEFINES
+* @brief Библиотека для эволюционного подбора параметров
+* @details
+Поддерживает:
+- Любое количество параметров
+- Генерацию новых параметров на основе лучших кандидатов
+- Мутацию для поиска оптимальных параметров
+- Несколько независимых оптимизаторов в одной программе
+
+Если библиотека отключена @ref ENABLE_EVOLVE_OPTIMIZATION, то вставляются
+заглушки, никак не влияющие на параметры и остальную программу
+
+@par Пример использования:
+@code
+#include "evolve_optimizer.h"
+#define N_PARAMS 4
+#define N_CANDIDATES 100
+#define N_BEST 10
+#define IQ_MUTATION (PARAM_SCALE_Q16(0.1, 0, 1))
+int32_t params[N_PARAMS];
+EvolveOptimizer_t optimizer;
+
+// Формирование параметров
+uint16_t param_u16 = 800;
+float param_f = 0.01f;
+uint8_t param_u8 = 40;
+int16_t param_i16 = 1600;
+params[0] = PARAM_SCALE_Q16(param_u16, 0, 1000);
+params[1] = PARAM_SCALE_Q16(param_f, 0.001f, 0.1f);
+params[2] = PARAM_SCALE_Q16(param_u8, 10, 100);
+params[3] = PARAM_SCALE_Q16(param_i16, 500, 5000);
+
+// Инициалиазция
+EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, IQ_MUTATION, params);
+
+// Шаг эволюции
+int32_t loss = calc_iq_loss(); // расчет эффективности параметров
+EvolveOptimizer_Step(&optimizer, params, loss);
+
+// Взятие следующих для эволюции параметров
+param_u16 = PARAM_UNSCALE_Q16(params[0], 0, 1000);
+param_f = PARAM_UNSCALE_Q16(params[1], 0.001f, 0.1f);
+param_u8 = PARAM_UNSCALE_Q16(params[2], 10, 100);
+param_i16 = PARAM_UNSCALE_Q16(params[3], 500, 5000);
+@endcode
+* @{
+*****************************************************************************/
+#ifndef __EVOLVE_OPTIMIZER_H_
+#define __EVOLVE_OPTIMIZER_H_
+
+#include "mylibs_defs.h"
+#include
+#include
+
+#ifdef ENABLE_EVOLVE_OPTIMIZATION
+/**
+ * @brief Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
+ */
+#define PARAM_SCALE_Q16(x, min_val, max_val) \
+((int32_t)((((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val))) * 65536.0f))
+
+/**
+ * @brief Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val]
+ */
+#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) \
+(((float)(q16_val) / 65536.0f) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
+
+
+/**
+ * @brief Структура эволюционного оптимизатора
+ */
+typedef struct {
+ uint16_t n_params; ///< Количество параметров
+ uint16_t n_cand; ///< Количество кандидатов
+ uint16_t n_best; ///< Количество лучших, усредняемых
+ uint16_t iq_mutation; ///< Амплитуда мутации в Q16.16
+ uint16_t cand_index; ///< Индекс кандидата для обработки
+ int32_t loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата
+ int32_t candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов
+ uint16_t sorted_idx[EVOLVE_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
+} EvolveOptimizer_t;
+
+
+
+/**
+ * @cond EVOLVE_INTERNAL
+ */
+#define Q16_MUL(a,b) ((int32_t)(((int64_t)(a) * (int64_t)(b)) >> 16))
+
+// Вспомогательный указатель для сортировки
+static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор
+
+static int cmp_idx(const void *a, const void *b) {
+ if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b])
+ return -1;
+ if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b])
+ return 1;
+ return 0;
+}
+/** @endcond */
+
+
+
+
+
+/**
+ * @brief Инициализация эволюционного оптимизатора.
+ * @param opt Указатель на структуру оптимизатора
+ * @param n_params Количество параметров в одном кандидате
+ * @param n_cand Количество кандидатов
+ * @param n_best Количество лучших, усредняемых
+ * @param iq_mutation Амплитуда мутации в Q16.16
+ * @param start_params Начальные параметры (Q16.16)
+ */
+__STATIC_INLINE HAL_StatusTypeDef EvolveOptimizer_Init(EvolveOptimizer_t* opt,
+ uint16_t n_params,
+ uint16_t n_cand,
+ uint16_t n_best,
+ uint16_t iq_mutation,
+ int32_t* start_params)
+{
+ if(check_null_ptr_2(opt, start_params))
+ return HAL_ERROR;
+
+ if(n_params > EVOLVE_MAX_PARAMS)
+ return HAL_ERROR;
+ opt->n_params = n_params;
+
+ if(n_cand > EVOLVE_MAX_CANDIDATES)
+ return HAL_ERROR;
+ opt->n_cand = n_cand;
+
+ if(n_best > EVOLVE_MAX_CANDIDATES/2)
+ return HAL_ERROR;
+ opt->n_best = n_best;
+
+ if(iq_mutation > 32768)
+ return HAL_ERROR;
+ opt->iq_mutation = iq_mutation;
+
+ for (uint16_t i = 0; i < n_cand; i++) {
+ for (uint16_t j = 0; j < n_params; j++) {
+ opt->candidates[i][j] = start_params[j];
+ }
+ opt->loss[i] = 0;
+ }
+ uint32_t seed = HAL_GetTick() + (ADC1->DR & 0xFF);
+ srand(seed);
+
+ return HAL_OK;
+}
+
+
+/**
+ * @brief Один шаг эволюционного оптимизатора.
+ * @param opt Указатель на структуру оптимизатора
+ * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры)
+ * @param loss Loss текущего кандидата (Q16.16)
+ * @details
+ * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата.
+ * Если накоплено n_cand кандидатов, генерируется новое поколение.
+ * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.
+ *
+ * На выходе params содержит параметры следующего кандидата для измерений.
+ * @note Функция использует глобальную внутреннюю переменную для сортировки.
+ * Надо убедится что только один экземпляр функции запущен в момент времени
+ */
+__STATIC_INLINE HAL_StatusTypeDef EvolveOptimizer_Step(EvolveOptimizer_t* opt,
+ int32_t* params,
+ int32_t loss)
+{
+ if(check_null_ptr_2(opt, params))
+ return HAL_ERROR;
+
+ uint16_t n_params = opt->n_params;
+ if(n_params > EVOLVE_MAX_PARAMS)
+ return HAL_ERROR;
+
+ uint16_t n_cand = opt->n_cand;
+ if(n_cand > EVOLVE_MAX_CANDIDATES)
+ return HAL_ERROR;
+
+ uint16_t n_best = opt->n_best;
+ if(n_best > EVOLVE_MAX_CANDIDATES/2)
+ return HAL_ERROR;
+
+ uint16_t mut = opt->iq_mutation;
+ if(mut > 32768)
+ return HAL_ERROR;
+
+ // 1. Сохраняем loss текущего кандидата
+ opt->loss[opt->cand_index] = loss;
+ opt->cand_index++;
+
+ if (opt->cand_index >= n_cand) {
+ // 2. Сортируем текущее поколение по loss
+ for(uint16_t i = 0; i < opt->n_cand; i++)
+ opt->sorted_idx[i] = i;
+
+ g_sort_opt = opt;
+ qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx);
+ g_sort_opt = NULL;
+// for (uint16_t i = 0; i < n_cand - 1; i++) {
+// for (uint16_t j = i + 1; j < n_cand; j++) {
+// if (opt->loss[j] < opt->loss[i]) {
+// int32_t tmp_loss = opt->loss[i];
+// opt->loss[i] = opt->loss[j];
+// opt->loss[j] = tmp_loss;
+
+// for (uint16_t k = 0; k < n_params; k++) {
+// int32_t tmp = opt->candidates[i][k];
+// opt->candidates[i][k] = opt->candidates[j][k];
+// opt->candidates[j][k] = tmp;
+// }
+// }
+// }
+// }
+
+ // 3. Генерируем новое поколение: каждый кандидат берется случайно из лучших с мутацией
+ uint16_t n_elite = 2; // количество элитных кандидатов, которые сохраняем без изменений
+ for (uint16_t c = 0; c < n_cand; c++) {
+ if (c < n_elite) {
+ // Копируем лучших кандидатов напрямую без мутации
+ for (uint16_t i = 0; i < n_params; i++) {
+ opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i]; // просто сохраняем параметры
+ }
+ opt->loss[c] = 0;
+ } else {
+ // Остальные кандидаты формируются с кроссовером и мутацией
+ for (uint16_t i = 0; i < n_params; i++) {
+ int32_t noise = (rand() % (2 * mut)) - mut;
+ uint16_t parent = opt->sorted_idx[rand() % opt->n_best]; // каждый параметр из случайного лучшего
+ opt->candidates[c][i] = opt->candidates[parent][i] + noise;
+ }
+ opt->loss[c] = 0;
+ }
+ }
+ opt->cand_index = 0;
+ }
+
+ // 4. Возвращаем параметры следующего кандидата
+ for (uint16_t i = 0; i < opt->n_params; i++)
+ params[i] = opt->candidates[opt->cand_index][i];
+
+ return HAL_OK;
+}
+#else // ENABLE_EVOLVE_OPTIMIZATION
+//заглушки
+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 // ENABLE_EVOLVE_OPTIMIZATION
+
+#endif // __EVOLVE_OPTIMIZER_H_
+
+/** EVOLVE_OPTIMIZER
+ * @}
+ */
diff --git a/MyLibsGeneral/Inc/mylibs_config.h b/MyLibsGeneral/Inc/mylibs_config.h
index 4365a9b..cb15e9f 100644
--- a/MyLibsGeneral/Inc/mylibs_config.h
+++ b/MyLibsGeneral/Inc/mylibs_config.h
@@ -54,6 +54,21 @@
*/
+/**
+ * @addtogroup EVOLVE_CONFIG Evolve configs
+ * @ingroup MYLIBS_CONFIG
+ * @brief Конфигурация однослойного персептрона и алгоритма обучения
+ * @{
+ */
+
+#define ENABLE_EVOLVE_OPTIMIZATION ///< Включить оптимизацию параметров
+#define EVOLVE_MAX_PARAMS 20 ///< Максимальное количество параметров
+#define EVOLVE_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения
+
+/** EVOLVE_CONFIG
+ * @}
+ */
+
/**
* @addtogroup LIBS_CONFIG Libraries configs
@@ -62,6 +77,7 @@
* @{
*/
+#define INCLUDE_EVOLVE_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров
#define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями
#define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами
#define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами
diff --git a/MyLibsGeneral/Inc/mylibs_defs.h b/MyLibsGeneral/Inc/mylibs_defs.h
index 9d2a22f..2a2749c 100644
--- a/MyLibsGeneral/Inc/mylibs_defs.h
+++ b/MyLibsGeneral/Inc/mylibs_defs.h
@@ -3,7 +3,7 @@
* @file mylibs_defs.h
* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
**************************************************************************
-* @defgroup MYLIBS_DEFINES General Defines
+* @defgroup MYLIBS_DEFINES General Tools
* @ingroup MYLIBS_ALL
* @brief Общие макросы и typedef'ы, используемые по всему проекту
*
@@ -54,10 +54,6 @@ extern void Error_Handler(void);
*/
-/***************************************************************************
-********************************ACCESS_DEFINES*****************************/
-
-
/***************************************************************************
******************************DELAYS_DEFINES*******************************/
/**
@@ -137,7 +133,8 @@ extern void Error_Handler(void);
/***************************************************************************
-*******************************MATH_DEFINES********************************/
+*******************************UTIL_DEFINES********************************/
+static int dummy;
/**
* @addtogroup UTILS_DEFINES Utils defines
* @ingroup MYLIBS_DEFINES
diff --git a/MyLibsGeneral/Inc/mylibs_include.h b/MyLibsGeneral/Inc/mylibs_include.h
index 6c92fe8..5a0fd2d 100644
--- a/MyLibsGeneral/Inc/mylibs_include.h
+++ b/MyLibsGeneral/Inc/mylibs_include.h
@@ -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 задержек)
- */
\ No newline at end of file
+#endif // __MYLIBS_INCLUDE_H_
\ No newline at end of file
diff --git a/MyLibsGeneral/Inc/trackers.h b/MyLibsGeneral/Inc/trackers.h
index 0c8718f..cc6e0d7 100644
--- a/MyLibsGeneral/Inc/trackers.h
+++ b/MyLibsGeneral/Inc/trackers.h
@@ -134,16 +134,22 @@
#define TrackerTypeDef(num_user_vars) void *
- #define num_of_usercnts(_user_)
- #define assert_tracecnt(_cntstruct_, _uservarnumb_)
+ #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 TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
- /** @brief Очистка всей структуры */
#define TrackerClear_All(_cntstruct_)
#define TrackerClear_Ok(_cntstruct_)
#define TrackerClear_Err(_cntstruct_)
diff --git a/MyLibsGeneral/mainpage.h b/MyLibsGeneral/mainpage.h
new file mode 100644
index 0000000..de2c943
--- /dev/null
+++ b/MyLibsGeneral/mainpage.h
@@ -0,0 +1,104 @@
+
+/**
+@mainpage
+
+@section overview Обзор
+MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32.
+
+@subsection features Основные возможности
+
+@subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES)
+- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES)
+- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE)
+- Эволюционный алгоритм для оптимизации параметров (@ref EVOLVE_OPTIMIZER)
+- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES)
+
+@subsubsection trace_module Трассировка @ref TRACE
+- Serial трассировка через SWO и RTT (@ref TRACE_SERIAL)
+- GPIO трассировка для отладки (@ref TRACE_GPIO)
+- Сохранение логов в Flash память (@ref TRACE_RTT_FLASH)
+- Обработка HardFault с сохранением контекста (@ref TRACE_HARDFAULT)
+
+@subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO
+- Инициализация портов и тактирования (@ref MYLIBS_GPIO_GENERAL)
+- Управление светодиодами (включение/выключение, моргание, плавное затухание) (@ref MYLIBS_GPIO_LEDS)
+- Работа с кнопками (чтение состояния, фильтрация дребезга) (@ref MYLIBS_GPIO_SWITCH)
+
+@subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM
+- Базовая инициализация таймеров (@ref MYLIBS_TIM_GENERAL)
+- Формирование задержек (блокирующие и неблокирующие) (@ref MYLIBS_TIM_DELAY)
+- Работа с энкодерами (чтение положения, обработка кнопок) (@ref MYLIBS_TIM_ENCODER)
+- Настройка ШИМ и Output Compare (@ref MYLIBS_TIM_OC)
+
+
+@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 задержек)
+ */
\ No newline at end of file