diff --git a/Doc/Doxyfile b/Doc/Doxyfile index 6d0c197..71d218b 100644 --- a/Doc/Doxyfile +++ b/Doc/Doxyfile @@ -558,7 +558,7 @@ EXTRACT_PACKAGE = NO # included in the documentation. # The default value is: NO. -EXTRACT_STATIC = NO +EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, diff --git a/Doc/html/annotated.html b/Doc/html/annotated.html index 1481365..180ffa8 100644 --- a/Doc/html/annotated.html +++ b/Doc/html/annotated.html @@ -102,19 +102,22 @@ $(function(){initNavTree('annotated.html','',''); });
Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - - + + + + + + + + + + + + + + + +
 CEvolveOptimizer_tСтруктура эволюционного оптимизатора
 CGPIO_LEDTypeDefСтруктура светодиода
 CGPIO_SwitchTypeDefСтруктура кнопки
 CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSPI_SettingsTypeDefСтруктура настроек SPI
 CTIM_EncoderTypeDefСтруктура инициализации енкодера
 CTIM_SettingsTypeDefСтруктура инициализации таймера
 CUART_SettingsTypeDefСтруктура настроек UART
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
 CBenchTime_tОсновная структура менеджера измерений
 CBenchTimeChannel_tСтруктура канала измерения
 CBenchTimeStats_tСтруктура статистики измерений
 CGenOptimizer_tСтруктура эволюционного оптимизатора
 CGPIO_LEDTypeDefСтруктура светодиода
 CGPIO_SwitchTypeDefСтруктура кнопки
 CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSPI_SettingsTypeDefСтруктура настроек SPI
 CTIM_EncoderTypeDefСтруктура инициализации енкодера
 CTIM_SettingsTypeDefСтруктура инициализации таймера
 CUART_SettingsTypeDefСтруктура настроек UART
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
diff --git a/Doc/html/annotated_dup.js b/Doc/html/annotated_dup.js index 7e0e8ac..f3fc3cd 100644 --- a/Doc/html/annotated_dup.js +++ b/Doc/html/annotated_dup.js @@ -1,6 +1,9 @@ var annotated_dup = [ - [ "EvolveOptimizer_t", "struct_evolve_optimizer__t.html", "struct_evolve_optimizer__t" ], + [ "BenchTime_t", "struct_bench_time__t.html", "struct_bench_time__t" ], + [ "BenchTimeChannel_t", "struct_bench_time_channel__t.html", "struct_bench_time_channel__t" ], + [ "BenchTimeStats_t", "struct_bench_time_stats__t.html", "struct_bench_time_stats__t" ], + [ "GenOptimizer_t", "struct_gen_optimizer__t.html", "struct_gen_optimizer__t" ], [ "GPIO_LEDTypeDef", "struct_g_p_i_o___l_e_d_type_def.html", "struct_g_p_i_o___l_e_d_type_def" ], [ "GPIO_SwitchTypeDef", "struct_g_p_i_o___switch_type_def.html", "struct_g_p_i_o___switch_type_def" ], [ "HF_StackFrame_t", "struct_h_f___stack_frame__t.html", "struct_h_f___stack_frame__t" ], diff --git a/Doc/html/bench__time_8h.html b/Doc/html/bench__time_8h.html new file mode 100644 index 0000000..eef2024 --- /dev/null +++ b/Doc/html/bench__time_8h.html @@ -0,0 +1,185 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h File Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bench_time.h File Reference
+
+
+ +

Заголовочный файл для измерения времени между событиями +More...

+
#include "mylibs_defs.h"
+#include <stdint.h>
+
Include dependency graph for bench_time.h:
+
+
+ +
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  BenchTimeStats_t
 Структура статистики измерений More...
struct  BenchTimeChannel_t
 Структура канала измерения More...
struct  BenchTime_t
 Основная структура менеджера измерений More...
+ + + + + + + + + + + + + + + + + + + +

+Functions

static void BenchTime_Init (void)
 Инициализация системы измерения времени
static uint32_t BenchTime_Start (uint8_t channel, uint32_t ticks, uint32_t tick_period)
 Начало измерения на указанном канале
static uint32_t BenchTime_End (uint8_t channel, uint32_t ticks)
 Окончание измерения на указанном канале
static uint32_t BenchTime_GetMin (uint8_t channel)
 Получение минимального времени измерения
static uint32_t BenchTime_GetMax (uint8_t channel)
 Получение максимального времени измерения
static uint32_t BenchTime_GetAverage (uint8_t channel)
 Получение среднего времени измерения
static uint32_t BenchTime_GetCount (uint8_t channel)
 Получение количества измерений
static uint32_t BenchTime_GetLast (uint8_t channel)
 Получение последнего измеренного времени
static void BenchTime_ResetStats (uint8_t channel)
 Сброс статистики для канала
+ + + +

+Variables

static BenchTime_t hbt = {0}
 Внутренний экземпляр
+

Detailed Description

+

Заголовочный файл для измерения времени между событиями

+ +

Definition in file bench_time.h.

+
+
+ +
+ + + + diff --git a/Doc/html/bench__time_8h.js b/Doc/html/bench__time_8h.js new file mode 100644 index 0000000..8165848 --- /dev/null +++ b/Doc/html/bench__time_8h.js @@ -0,0 +1,13 @@ +var bench__time_8h = +[ + [ "BenchTime_Init", "group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054", null ], + [ "BenchTime_Start", "group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349", null ], + [ "BenchTime_End", "group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439", null ], + [ "BenchTime_GetMin", "group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705", null ], + [ "BenchTime_GetMax", "group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e", null ], + [ "BenchTime_GetAverage", "group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8", null ], + [ "BenchTime_GetCount", "group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a", null ], + [ "BenchTime_GetLast", "group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed", null ], + [ "BenchTime_ResetStats", "group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35", null ], + [ "hbt", "group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d", null ] +]; \ No newline at end of file diff --git a/Doc/html/bench__time_8h__incl.map b/Doc/html/bench__time_8h__incl.map new file mode 100644 index 0000000..b4964a4 --- /dev/null +++ b/Doc/html/bench__time_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Doc/html/bench__time_8h__incl.md5 b/Doc/html/bench__time_8h__incl.md5 new file mode 100644 index 0000000..f2b14cb --- /dev/null +++ b/Doc/html/bench__time_8h__incl.md5 @@ -0,0 +1 @@ +e2f287c82f2aba927295813f84ac4e31 \ No newline at end of file diff --git a/Doc/html/bench__time_8h__incl.png b/Doc/html/bench__time_8h__incl.png new file mode 100644 index 0000000..cc0b2fa Binary files /dev/null and b/Doc/html/bench__time_8h__incl.png differ diff --git a/Doc/html/bench__time_8h_source.html b/Doc/html/bench__time_8h_source.html new file mode 100644 index 0000000..ead63f6 --- /dev/null +++ b/Doc/html/bench__time_8h_source.html @@ -0,0 +1,421 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bench_time.h
+
+
+Go to the documentation of this file.
1/**
+
2******************************************************************************
+
3* @file bench_time.h
+
4* @brief Заголовочный файл для измерения времени между событиями
+
5******************************************************************************
+
6* @addtogroup BENCH_TIME Time measurement
+
7* @ingroup MYLIBS_DEFINES
+
8* @brief Библиотека для измерения времени/тиков между событиями
+
9* @details
+
10Поддерживает:
+
11- Многоканальные измерения (несколько независимых таймеров)
+
12- Платформонезависимый интерфейс
+
13- Измерение в тиках или временных единицах
+
14- Статистику измерений (мин/макс/среднее)
+
15- Настраиваемый размер тиков для каждого канала
+
16
+
17Параметры для конфигурации:
+
18- @ref BENCH_TIME_ENABLE - Включить бенч времени
+
19- @ref BENCH_TIME_MAX_CHANNELS - Максимальное количество каналов измерения (по умолчанию 8)
+
20
+
21@par Пример использования:
+
22@code
+
23#include "bench_time.h"
+
24
+
25// Инициализация
+
26BenchTime_Init();
+
27
+
28// Измерение с SysTick
+
29BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF);
+
30some_function();
+
31uint32_t time = BenchTime_End(0, HAL_GetTick);
+
32
+
33// Измерение с TIM2 (16-бит)
+
34BenchTime_Start(1, TIM2->CNT, 0xFFFF);
+
35fast_function();
+
36uint32_t time2 = BenchTime_End(1, TIM2->CNT);
+
37
+
38// Измерение с DWT цикловым счетчиком
+
39BenchTime_Start(2, DWT->CYCCNT, 0xFFFFFFFF);
+
40critical_function();
+
41uint32_t cycles = BenchTime_End(2, DWT->CYCCNT);
+
42
+
43// Многоканальное измерение
+
44BenchTime_Start(0, HAL_GetTick, 1000); // общее время
+
45BenchTime_Start(1, TIM3->CNT, 500); // часть 1
+
46
+
47// ... код 1
+
48
+
49uint32_t part1 = BenchTime_End(1, TIM3->CNT);
+
50BenchTime_Start(2, TIM4->CNT, 200); // часть 2
+
51
+
52// ... код 2
+
53
+
54uint32_t part2 = BenchTime_End(2, TIM4->CNT);
+
55uint32_t total = BenchTime_End(0, HAL_GetTick); // общее время
+
56
+
57// Статистика
+
58uint32_t min_time = BenchTime_GetMin(0);
+
59uint32_t max_time = BenchTime_GetMax(0);
+
60uint32_t avg_time = BenchTime_GetAverage(0);
+
61uint32_t count = BenchTime_GetCount(0);
+
62@endcode
+
63* @{
+
64*****************************************************************************/
+
65#ifndef __BENCH_TIME_H_
+
66#define __BENCH_TIME_H_
+
67
+
68#include "mylibs_defs.h"
+
69#include <stdint.h>
+
70
+
71#ifdef BENCH_TIME_ENABLE
+
72
+
73// Конфигурация библиотеки
+
74#ifndef BENCH_TIME_MAX_CHANNELS
+
75#define BENCH_TIME_MAX_CHANNELS 8 ///< Максимальное количество каналов измерения
+
76#endif
+
77
+
78/**
+
79 * @brief Структура статистики измерений
+
80 */
+
+
81typedef struct {
+
82 uint32_t min_ticks; ///< Минимальное время в тиках
+
83 uint32_t max_ticks; ///< Максимальное время в тиках
+
84 uint32_t total_ticks; ///< Суммарное время в тиках
+
85 uint32_t count; ///< Количество измерений
+
86 uint32_t last_ticks; ///< Последнее измеренное время
+ +
+
88
+
89/**
+
90 * @brief Структура канала измерения
+
91 */
+
+
92typedef struct {
+
93 uint32_t start_tick; ///< Время старта в тиках
+
94 uint32_t tick_period; ///< Период тиков для переполнения
+
95 uint32_t is_running; ///< Флаг активного измерения
+
96 BenchTimeStats_t stats; ///< Статистика измерений
+ +
+
98
+
99/**
+
100 * @brief Основная структура менеджера измерений
+
101 */
+
+
102typedef struct {
+
103 BenchTimeChannel_t channels[BENCH_TIME_MAX_CHANNELS]; ///< Каналы измерения
+ +
+
105
+
106static BenchTime_t hbt = {0}; ///< Внутренний экземпляр
+
107
+
108/**
+
109 * @brief Инициализация системы измерения времени
+
110 */
+
+
111static inline void BenchTime_Init(void) {
+
112 for (int i = 0; i < BENCH_TIME_MAX_CHANNELS; i++) {
+
113 hbt.channels[i].start_tick = 0;
+
114 hbt.channels[i].tick_period = 0xFFFFFFFF;
+
115 hbt.channels[i].is_running = 0;
+
116 hbt.channels[i].stats.min_ticks = 0xFFFFFFFF;
+
117 hbt.channels[i].stats.max_ticks = 0;
+
118 hbt.channels[i].stats.total_ticks = 0;
+
119 hbt.channels[i].stats.count = 0;
+
120 hbt.channels[i].stats.last_ticks = 0;
+
121 }
+
122}
+
+
123
+
124/**
+
125 * @brief Начало измерения на указанном канале
+
126 * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)
+
127 * @param ticks Источник тиков (например: HAL_GetTick(), TIM2->CNT, DWT->CYCCNT)
+
128 * @param tick_period Период тиков для переполнения
+
129 * @return 1 - успех, 0 - ошибка
+
130 */
+
+
131static inline uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period) {
+
132 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+
133 if (hbt.channels[channel].is_running) return 0;
+
134
+
135 hbt.channels[channel].start_tick = ticks;
+
136 hbt.channels[channel].tick_period = tick_period;
+
137 hbt.channels[channel].is_running = 1;
+
138 return 1;
+
139}
+
+
140
+
141/**
+
142 * @brief Окончание измерения на указанном канале
+
143 * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)
+
144 * @param ticks Источник тиков (должен быть тот же что в Start)
+
145 * @return Измеренное время в тиках, 0 - в случае ошибки
+
146 */
+
+
147static inline uint32_t BenchTime_End(uint8_t channel, uint32_t ticks) {
+
148 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+
149 if (!hbt.channels[channel].is_running) return 0;
+
150
+
151 uint32_t end_tick = ticks;
+
152 uint32_t start_tick = hbt.channels[channel].start_tick;
+
153 uint32_t tick_period = hbt.channels[channel].tick_period;
+
154 uint32_t elapsed_ticks;
+
155
+
156 if (end_tick >= start_tick) {
+
157 elapsed_ticks = end_tick - start_tick;
+
158 } else {
+
159 elapsed_ticks = (tick_period - start_tick) + end_tick + 1;
+
160 }
+
161
+
162 if (elapsed_ticks > tick_period) {
+
163 elapsed_ticks = tick_period;
+
164 }
+
165
+
166 hbt.channels[channel].is_running = 0;
+
167
+
168 // Обновление статистики
+
169 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+
170 stats->last_ticks = elapsed_ticks;
+
171
+
172 if (elapsed_ticks < stats->min_ticks) {
+
173 stats->min_ticks = elapsed_ticks;
+
174 }
+
175
+
176 if (elapsed_ticks > stats->max_ticks) {
+
177 stats->max_ticks = elapsed_ticks;
+
178 }
+
179
+
180 stats->total_ticks += elapsed_ticks;
+
181 stats->count++;
+
182
+
183 return elapsed_ticks;
+
184}
+
+
185
+
186/**
+
187 * @brief Получение минимального времени измерения
+
188 */
+
+
189static inline uint32_t BenchTime_GetMin(uint8_t channel) {
+
190 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+
191 return hbt.channels[channel].stats.min_ticks;
+
192}
+
+
193
+
194/**
+
195 * @brief Получение максимального времени измерения
+
196 */
+
+
197static inline uint32_t BenchTime_GetMax(uint8_t channel) {
+
198 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+
199 return hbt.channels[channel].stats.max_ticks;
+
200}
+
+
201
+
202/**
+
203 * @brief Получение среднего времени измерения
+
204 */
+
+
205static inline uint32_t BenchTime_GetAverage(uint8_t channel) {
+
206 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+
207 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+
208 if (stats->count == 0) return 0;
+
209 return stats->total_ticks / stats->count;
+
210}
+
+
211
+
212/**
+
213 * @brief Получение количества измерений
+
214 */
+
+
215static inline uint32_t BenchTime_GetCount(uint8_t channel) {
+
216 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+
217 return hbt.channels[channel].stats.count;
+
218}
+
+
219
+
220/**
+
221 * @brief Получение последнего измеренного времени
+
222 */
+
+
223static inline uint32_t BenchTime_GetLast(uint8_t channel) {
+
224 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+
225 return hbt.channels[channel].stats.last_ticks;
+
226}
+
+
227
+
228/**
+
229 * @brief Сброс статистики для канала
+
230 */
+
+
231static inline void BenchTime_ResetStats(uint8_t channel) {
+
232 if (channel >= BENCH_TIME_MAX_CHANNELS) return;
+
233 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+
234 stats->min_ticks = 0xFFFFFFFF;
+
235 stats->max_ticks = 0;
+
236 stats->total_ticks = 0;
+
237 stats->count = 0;
+
238 stats->last_ticks = 0;
+
239}
+
+
240#else //BENCH_TIME_ENABLE
+
241
+
242#define BenchTime_Init()
+
243#define BenchTime_Start(channel, ticks, tick_period) 0
+
244#define BenchTime_End(channel, ticks) 0
+
245#define BenchTime_GetMin(channel) 0
+
246#define BenchTime_GetMax(channel) 0
+
247#define BenchTime_GetAverage(channel) 0
+
248#define BenchTime_GetCount(channel) 0
+
249#define BenchTime_GetLast(channel) 0
+
250#define BenchTime_ResetStats(channel)
+
251
+
252#endif //BENCH_TIME_ENABLE
+
253
+
254#endif // __BENCH_TIME_H_
+
255
+
256/** BENCH_TIME
+
257 * @}
+
258 */
+
static uint32_t BenchTime_GetMax(uint8_t channel)
Получение максимального времени измерения
Definition bench_time.h:197
+
static uint32_t BenchTime_GetAverage(uint8_t channel)
Получение среднего времени измерения
Definition bench_time.h:205
+
static uint32_t BenchTime_GetMin(uint8_t channel)
Получение минимального времени измерения
Definition bench_time.h:189
+
static void BenchTime_ResetStats(uint8_t channel)
Сброс статистики для канала
Definition bench_time.h:231
+
static uint32_t BenchTime_End(uint8_t channel, uint32_t ticks)
Окончание измерения на указанном канале
Definition bench_time.h:147
+
static BenchTime_t hbt
Внутренний экземпляр
Definition bench_time.h:106
+
static void BenchTime_Init(void)
Инициализация системы измерения времени
Definition bench_time.h:111
+
static uint32_t BenchTime_GetCount(uint8_t channel)
Получение количества измерений
Definition bench_time.h:215
+
static uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period)
Начало измерения на указанном канале
Definition bench_time.h:131
+
static uint32_t BenchTime_GetLast(uint8_t channel)
Получение последнего измеренного времени
Definition bench_time.h:223
+
#define BENCH_TIME_MAX_CHANNELS
Максимальное количество каналов измерения
+
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
+
Основная структура менеджера измерений
Definition bench_time.h:102
+
BenchTimeChannel_t channels[16]
Каналы измерения
Definition bench_time.h:103
+
Структура канала измерения
Definition bench_time.h:92
+
uint32_t tick_period
Период тиков для переполнения
Definition bench_time.h:94
+
uint32_t is_running
Флаг активного измерения
Definition bench_time.h:95
+
BenchTimeStats_t stats
Статистика измерений
Definition bench_time.h:96
+
uint32_t start_tick
Время старта в тиках
Definition bench_time.h:93
+
Структура статистики измерений
Definition bench_time.h:81
+
uint32_t total_ticks
Суммарное время в тиках
Definition bench_time.h:84
+
uint32_t last_ticks
Последнее измеренное время
Definition bench_time.h:86
+
uint32_t min_ticks
Минимальное время в тиках
Definition bench_time.h:82
+
uint32_t max_ticks
Максимальное время в тиках
Definition bench_time.h:83
+
uint32_t count
Количество измерений
Definition bench_time.h:85
+
+
+
+ + + + diff --git a/Doc/html/classes.html b/Doc/html/classes.html index 29c6937..0b59e27 100644 --- a/Doc/html/classes.html +++ b/Doc/html/classes.html @@ -100,14 +100,14 @@ $(function(){initNavTree('classes.html','',''); });
Class Index
-
E | G | H | R | S | T | U
+
B | G | H | R | S | T | U
-
E
-
EvolveOptimizer_t
+
B
+
BenchTime_t
BenchTimeChannel_t
BenchTimeStats_t
G
-
GPIO_LEDTypeDef
GPIO_SwitchTypeDef
+
GenOptimizer_t
GPIO_LEDTypeDef
GPIO_SwitchTypeDef
H
HF_StackFrame_t
diff --git a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html index b7a3c97..c4bebfb 100644 --- a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html +++ b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html @@ -116,10 +116,12 @@ $(function(){initNavTree('dir_8eb68c124db7670c3cb56141b10519ea.html','',''); }); + + - - + + diff --git a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js index 2b5dc8a..a702be5 100644 --- a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js +++ b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js @@ -1,7 +1,8 @@ var dir_8eb68c124db7670c3cb56141b10519ea = [ + [ "bench_time.h", "bench__time_8h.html", "bench__time_8h" ], [ "bit_access.h", "bit__access_8h.html", "bit__access_8h" ], - [ "evolve_optimizer.h", "evolve__optimizer_8h.html", "evolve__optimizer_8h" ], + [ "gen_optimizer.h", "gen__optimizer_8h.html", "gen__optimizer_8h" ], [ "mylibs_config.h", "mylibs__config_8h.html", "mylibs__config_8h" ], [ "mylibs_defs.h", "mylibs__defs_8h.html", "mylibs__defs_8h" ], [ "mylibs_include.h", "mylibs__include_8h.html", null ], diff --git a/Doc/html/doxygen_crawl.html b/Doc/html/doxygen_crawl.html index 671925d..09ed1dc 100644 --- a/Doc/html/doxygen_crawl.html +++ b/Doc/html/doxygen_crawl.html @@ -11,6 +11,8 @@ + + @@ -23,11 +25,11 @@ - - + + @@ -48,11 +50,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -70,18 +100,20 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -92,9 +124,9 @@ + - @@ -261,19 +293,22 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -288,6 +323,19 @@ + + + + + + + + + + + + + diff --git a/Doc/html/evolve__optimizer_8h.js b/Doc/html/evolve__optimizer_8h.js deleted file mode 100644 index 31f5538..0000000 --- a/Doc/html/evolve__optimizer_8h.js +++ /dev/null @@ -1,10 +0,0 @@ -var evolve__optimizer_8h = -[ - [ "PARAM_SCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ], - [ "PARAM_UNSCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ], - [ "EVOLVE_MUTATION_MIN_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6", null ], - [ "EVOLVE_MUTATION_MAX_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc", null ], - [ "ELOVLE_N_ELITE_CANDIDATE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb", null ], - [ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21", null ], - [ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef", null ] -]; \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__dep__incl.md5 b/Doc/html/evolve__optimizer_8h__dep__incl.md5 deleted file mode 100644 index 77ad751..0000000 --- a/Doc/html/evolve__optimizer_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -424cb7f34817e542ea5f5660027a6b81 \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__dep__incl.png b/Doc/html/evolve__optimizer_8h__dep__incl.png deleted file mode 100644 index ba778ca..0000000 Binary files a/Doc/html/evolve__optimizer_8h__dep__incl.png and /dev/null differ diff --git a/Doc/html/evolve__optimizer_8h__incl.md5 b/Doc/html/evolve__optimizer_8h__incl.md5 deleted file mode 100644 index 37ffe87..0000000 --- a/Doc/html/evolve__optimizer_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -715956b53baa360ead244690f04d1978 \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__incl.png b/Doc/html/evolve__optimizer_8h__incl.png deleted file mode 100644 index 4a506cd..0000000 Binary files a/Doc/html/evolve__optimizer_8h__incl.png and /dev/null differ diff --git a/Doc/html/files.html b/Doc/html/files.html index 97cb96a..cc93eeb 100644 --- a/Doc/html/files.html +++ b/Doc/html/files.html @@ -104,27 +104,28 @@ $(function(){initNavTree('files.html','',''); });
[detail level 123]

Files

 
bench_time.h
 Заголовочный файл для измерения времени между событиями
 
bit_access.h
 Заголочный файл для дефайнов битового доступа.
 
evolve_optimizer.h
 Заголовочный файл для адаптивного подбора параметров
 
gen_optimizer.h
 Заголовочный файл для адаптивного подбора параметров
 
mylibs_config.h
 Конфигурации для библиотек MyLibs.
 
mylibs_defs.h
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +
 
MyLibs
 
Inc
 
bit_access.h
Заголочный файл для дефайнов битового доступа
 
evolve_optimizer.h
Заголовочный файл для адаптивного подбора параметров
 
mylibs_config.h
Конфигурации для библиотек MyLibs
 
mylibs_defs.h
Заголочный файл для дефайнов библиотеки MyLibsGeneral
 
mylibs_include.h
Заголочный файл для всех библиотек
 
trace.h
Заголочный файл для работы с трассировкой
 
trackers.h
Заголочный файл для работы с трекерами Trackers defines
 
STM32_General
 
Inc
 
__general_flash.h
 
general_gpio.h
Заголовочный файл для модуля инициализации портов и работы с ними
 
general_spi.h
Заголовочный файл для модуля инициализации SPI
 
general_tim.h
Заголовочный файл для модуля инициализации таймеров и работы с ними
 
general_uart.h
Заголовочный файл для модуля инициализации UART
 
Src
 
__general_flash.c
 
general_gpio.c
Модуль для инициализации портов и работы с ними
 
general_spi.c
Модуль для инициализации SPI
 
general_tim.c
Модуль для инициализации таймеров и работы с ними
 
general_uart.c
Модуль для инициализации UART
 
mainpage.h
 
bench_time.h
Заголовочный файл для измерения времени между событиями
 
bit_access.h
Заголочный файл для дефайнов битового доступа
 
gen_optimizer.h
Заголовочный файл для адаптивного подбора параметров
 
mylibs_config.h
Конфигурации для библиотек MyLibs
 
mylibs_defs.h
Заголочный файл для дефайнов библиотеки MyLibsGeneral
 
mylibs_include.h
Заголочный файл для всех библиотек
 
trace.h
Заголочный файл для работы с трассировкой
 
trackers.h
Заголочный файл для работы с трекерами Trackers defines
 
STM32_General
 
Inc
 
__general_flash.h
 
general_gpio.h
Заголовочный файл для модуля инициализации портов и работы с ними
 
general_spi.h
Заголовочный файл для модуля инициализации SPI
 
general_tim.h
Заголовочный файл для модуля инициализации таймеров и работы с ними
 
general_uart.h
Заголовочный файл для модуля инициализации UART
 
Src
 
__general_flash.c
 
general_gpio.c
Модуль для инициализации портов и работы с ними
 
general_spi.c
Модуль для инициализации SPI
 
general_tim.c
Модуль для инициализации таймеров и работы с ними
 
general_uart.c
Модуль для инициализации UART
 
mainpage.h
diff --git a/Doc/html/functions.html b/Doc/html/functions.html index 998b50d..9de9c63 100644 --- a/Doc/html/functions.html +++ b/Doc/html/functions.html @@ -100,11 +100,13 @@ $(function(){initNavTree('functions.html','',''); });
Here is a list of all documented class members with links to the class documentation for each member:

- c -

@@ -122,8 +124,8 @@ $(function(){initNavTree('functions.html','',''); });

- g -

+

- i -

+ +

- l -

- m -

- n -

@@ -189,10 +199,12 @@ $(function(){initNavTree('functions.html','',''); });
  • sConfig : TIM_EncoderTypeDef
  • size : RTT_FlashHeader_t
  • sMasterConfig : TIM_SettingsTypeDef
  • -
  • sorted_idx : EvolveOptimizer_t
  • +
  • sorted_idx : GenOptimizer_t
  • sSlaveConfig : TIM_SettingsTypeDef
  • -
  • stability : EvolveOptimizer_t
  • +
  • stability : GenOptimizer_t
  • +
  • start_tick : BenchTimeChannel_t
  • state : GPIO_LEDTypeDef
  • +
  • stats : BenchTimeChannel_t
  • sTickBasePrescaler : TIM_SettingsTypeDef
  • sTickBaseUS : TIM_SettingsTypeDef
  • sTimAHBFreqMHz : TIM_SettingsTypeDef
  • @@ -209,6 +221,8 @@ $(function(){initNavTree('functions.html','',''); });

    - t -

    diff --git a/Doc/html/functions_vars.html b/Doc/html/functions_vars.html index 5b72a00..636c5df 100644 --- a/Doc/html/functions_vars.html +++ b/Doc/html/functions_vars.html @@ -100,11 +100,13 @@ $(function(){initNavTree('functions_vars.html','',''); });
    Here is a list of all documented variables with links to the class documentation for each member:

    - c -

    @@ -122,8 +124,8 @@ $(function(){initNavTree('functions_vars.html','',''); });

    - g -

    +

    - i -

    + +

    - l -

    - m -

    - n -

    @@ -189,10 +199,12 @@ $(function(){initNavTree('functions_vars.html','',''); });
  • sConfig : TIM_EncoderTypeDef
  • size : RTT_FlashHeader_t
  • sMasterConfig : TIM_SettingsTypeDef
  • -
  • sorted_idx : EvolveOptimizer_t
  • +
  • sorted_idx : GenOptimizer_t
  • sSlaveConfig : TIM_SettingsTypeDef
  • -
  • stability : EvolveOptimizer_t
  • +
  • stability : GenOptimizer_t
  • +
  • start_tick : BenchTimeChannel_t
  • state : GPIO_LEDTypeDef
  • +
  • stats : BenchTimeChannel_t
  • sTickBasePrescaler : TIM_SettingsTypeDef
  • sTickBaseUS : TIM_SettingsTypeDef
  • sTimAHBFreqMHz : TIM_SettingsTypeDef
  • @@ -209,6 +221,8 @@ $(function(){initNavTree('functions_vars.html','',''); });

    - t -

    diff --git a/Doc/html/evolve__optimizer_8h.html b/Doc/html/gen__optimizer_8h.html similarity index 71% rename from Doc/html/evolve__optimizer_8h.html rename to Doc/html/gen__optimizer_8h.html index 620ae77..98bdcca 100644 --- a/Doc/html/evolve__optimizer_8h.html +++ b/Doc/html/gen__optimizer_8h.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/evolve_optimizer.h File Reference +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h File Reference @@ -71,7 +71,7 @@ $(function() {
    @@ -97,7 +97,7 @@ $(function(){initNavTree('evolve__optimizer_8h.html','',''); });
    -
    evolve_optimizer.h File Reference
    +
    gen_optimizer.h File Reference
    @@ -106,12 +106,12 @@ $(function(){initNavTree('evolve__optimizer_8h.html','',''); });
    #include "mylibs_defs.h"
    #include <stdint.h>
    #include <stdlib.h>
    -
    Include dependency graph for evolve_optimizer.h:
    +
    Include dependency graph for gen_optimizer.h:
    -

    Go to the source code of this file.

    +

    Go to the source code of this file.

    - - + +

    Classes

    struct  EvolveOptimizer_t
     Структура эволюционного оптимизатора More...
    struct  GenOptimizer_t
     Структура эволюционного оптимизатора More...
    - + - + - - - - - + + + + +

    Macros

    #define PARAM_SCALE(x, min_val, max_val)
    #define PARAM_SCALE(x, min_val, max_val)
     Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    #define PARAM_UNSCALE(val, min_val, max_val)
    #define PARAM_UNSCALE(val, min_val, max_val)
     Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
    #define EVOLVE_MUTATION_MIN_PCT   10
     Минимальная мутация (в процентах от Loss)
    #define EVOLVE_MUTATION_MAX_PCT   100
     Максимальная мутация (в процентах от Loss)
    #define ELOVLE_N_ELITE_CANDIDATE   2
    #define GEN_MUTATION_MIN_PCT   10
     Минимальная мутация (в процентах от Loss)
    #define GEN_MUTATION_MAX_PCT   100
     Максимальная мутация (в процентах от Loss)
    #define ELOVLE_N_ELITE_CANDIDATE   2
     Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
    - - - - + + + +

    Functions

    __STATIC_INLINE int EvolveOptimizer_Init (EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
     Инициализация эволюционного оптимизатора.
    __STATIC_INLINE int EvolveOptimizer_Step (EvolveOptimizer_t *opt, float *params, float loss)
     Один шаг эволюционного оптимизатора.
    static int GenOptimizer_Init (GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
     Инициализация эволюционного оптимизатора.
    static int GenOptimizer_Step (GenOptimizer_t *opt, float *params, float loss)
     Один шаг эволюционного оптимизатора.

    Detailed Description

    Заголовочный файл для адаптивного подбора параметров

    -

    Definition in file evolve_optimizer.h.

    +

    Definition in file gen_optimizer.h.

    @@ -97,15 +97,15 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    -
    evolve_optimizer.h
    +
    gen_optimizer.h
    -Go to the documentation of this file.
    1/**
    +Go to the documentation of this file.
    1/**
    2******************************************************************************
    -
    3* @file evolve_optimizer.h
    +
    3* @file gen_optimizer.h
    4* @brief Заголовочный файл для адаптивного подбора параметров
    5******************************************************************************
    -
    6* @addtogroup EVOLVE_OPTIMIZER Evolve optimizer
    +
    6* @addtogroup GEN_OPTIMIZER Genetic optimizer
    7* @ingroup MYLIBS_DEFINES
    8* @brief Библиотека для эволюционного подбора параметров
    9* @details
    @@ -117,24 +117,24 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    15
    16
    17Параметры для конфигурации:
    -
    18- @ref ENABLE_EVOLVE_OPTIMIZATION - Включить оптимизацию параметров
    -
    19 Если библиотека отключена @ref ENABLE_EVOLVE_OPTIMIZATION, то вставляются
    +
    18- @ref GEN_OPTIMIZATION_ENABLE - Включить оптимизацию параметров
    +
    19 Если библиотека отключена @ref GEN_OPTIMIZATION_ENABLE, то вставляются
    20 заглушки, никак не влияющие на параметры и остальную программу
    -
    21- @ref EVOLVE_MAX_PARAMS - Максимальное количество параметров
    -
    22- @ref EVOLVE_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
    -
    23- (опционально) @ref EVOLVE_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
    -
    24- (опционально) @ref EVOLVE_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
    +
    21- @ref GEN_MAX_PARAMS - Максимальное количество параметров
    +
    22- @ref GEN_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
    +
    23- (опционально) @ref GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
    +
    24- (опционально) @ref GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
    25- (опционально) @ref ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений
    26
    27@par Пример использования:
    28@code
    -
    29#include "evolve_optimizer.h"
    +
    29#include "gen_optimizer.h"
    30#define N_PARAMS 4
    31#define N_CANDIDATES 100
    32#define N_BEST 10
    33#define MUTATION 0.1f
    34float params[N_PARAMS];
    -
    35EvolveOptimizer_t optimizer;
    +
    35GenOptimizer_t optimizer;
    36
    37// Формирование параметров
    38uint16_t param_u16 = 800;
    @@ -147,11 +147,11 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    45params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
    46
    47// Инициалиазция
    -
    48EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
    +
    48GenOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
    49
    50// Шаг эволюции
    51float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)
    -
    52EvolveOptimizer_Step(&optimizer, params, loss);
    +
    52GenOptimizer_Step(&optimizer, params, loss);
    53
    54// Взятие следующих для эволюции параметров
    55param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
    @@ -161,19 +161,19 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    59@endcode
    60* @{
    61*****************************************************************************/
    -
    62#ifndef __EVOLVE_OPTIMIZER_H_
    -
    63#define __EVOLVE_OPTIMIZER_H_
    +
    62#ifndef __GEN_OPTIMIZER_H_
    +
    63#define __GEN_OPTIMIZER_H_
    64
    65#include "mylibs_defs.h"
    66#include <stdint.h>
    67#include <stdlib.h>
    68
    -
    69#ifdef ENABLE_EVOLVE_OPTIMIZATION
    +
    69#ifdef GEN_OPTIMIZATION_ENABLE
    70/**
    71 * @brief Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    72 */
    -
    73#define PARAM_SCALE(x, min_val, max_val) \
    +
    73#define PARAM_SCALE(x, min_val, max_val) \
    74(((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))
    75
    @@ -181,7 +181,7 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    77 * @brief Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]
    78 */
    -
    79#define PARAM_UNSCALE(val, min_val, max_val) \
    +
    79#define PARAM_UNSCALE(val, min_val, max_val) \
    80(((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
    81
    @@ -191,14 +191,14 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    85
    86
    87
    -
    88#ifndef EVOLVE_MUTATION_MIN_PCT
    -
    89#define EVOLVE_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss)
    +
    88#ifndef GEN_MUTATION_MIN_PCT
    +
    89#define GEN_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss)
    90#endif
    -
    91#ifndef EVOLVE_MUTATION_MAX_PCT
    -
    92#define EVOLVE_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss)
    +
    91#ifndef GEN_MUTATION_MAX_PCT
    +
    92#define GEN_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss)
    93#endif
    94#ifndef ELOVLE_N_ELITE_CANDIDATE
    -
    95#define ELOVLE_N_ELITE_CANDIDATE 2 ///< Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
    +
    95#define ELOVLE_N_ELITE_CANDIDATE 2 ///< Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
    96#endif
    97
    98
    @@ -206,40 +206,40 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    100 * @brief Структура эволюционного оптимизатора
    101 */
    -
    102typedef struct {
    -
    103 float stability; ///< Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)
    +
    102typedef struct {
    +
    103 float stability; ///< Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)
    104
    -
    105 uint16_t n_params; ///< Количество параметров
    -
    106 uint16_t n_cand; ///< Количество кандидатов в популяции
    -
    107 uint16_t n_best; ///< Количество лучших, усредняемых
    -
    108 float mutation_amp; ///< Амплитуда мутации (0..1)
    +
    105 uint16_t n_params; ///< Количество параметров
    +
    106 uint16_t n_cand; ///< Количество кандидатов в популяции
    +
    107 uint16_t n_best; ///< Количество лучших, усредняемых
    +
    108 float mutation_amp; ///< Амплитуда мутации (0..1)
    109
    -
    110 uint16_t cand_index; ///< Индекс кандидата для обработки
    -
    111 uint16_t gen_index; ///< Индекс популяции
    +
    110 uint16_t cand_index; ///< Индекс текущего кандидата
    +
    111 uint16_t gen_index; ///< Индекс популяции
    112
    113 //INTERNAL
    -
    114 float gen_mut; ///< Амплитуда мутации у текущей популяции
    +
    114 float gen_mut; ///< Амплитуда мутации у текущей популяции
    115
    -
    116 float loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата
    -
    117 float candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов
    -
    118 uint16_t sorted_idx[EVOLVE_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
    - +
    116 float loss[GEN_MAX_CANDIDATES]; ///< Loss для каждого кандидата
    +
    117 float candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]; ///< Параметры кандидатов
    +
    118 uint16_t sorted_idx[GEN_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
    +
    120
    121
    122
    123/**
    -
    124 * @cond EVOLVE_INTERNAL
    +
    124 * @cond GEN_INTERNAL
    125 */
    126
    127// Вспомогательный указатель для сортировки
    -
    128static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор
    +
    128static GenOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор
    129
    130// функция условия сортировки
    131static int cmp_idx(const void *a, const void *b) {
    -
    132 if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b])
    +
    132 if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b])
    133 return -1;
    -
    134 if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b])
    +
    134 if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b])
    135 return 1;
    136 return 0;
    137}
    @@ -261,7 +261,7 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    153 * -1 — если ошибка
    154 */
    - +
    156 uint16_t n_params,
    157 uint16_t n_cand,
    158 uint16_t n_best,
    @@ -271,24 +271,24 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    162 if((opt == NULL) || (start_params == NULL))
    163 return -1;
    164
    -
    165 if(n_params > EVOLVE_MAX_PARAMS)
    +
    165 if(n_params > GEN_MAX_PARAMS)
    166 return -1;
    -
    167 opt->n_params = n_params;
    +
    167 opt->n_params = n_params;
    168
    -
    169 if(n_cand > EVOLVE_MAX_CANDIDATES)
    +
    169 if(n_cand > GEN_MAX_CANDIDATES)
    170 return -1;
    -
    171 opt->n_cand = n_cand;
    +
    171 opt->n_cand = n_cand;
    172
    -
    173 if(n_best > EVOLVE_MAX_CANDIDATES/2)
    +
    173 if(n_best > GEN_MAX_CANDIDATES/2)
    174 return -1;
    -
    175 opt->n_best = n_best;
    +
    175 opt->n_best = n_best;
    176
    177
    178 if((mutation_amp > 1) || (mutation_amp < 0))
    179 return -1;
    180 if(mutation_amp <= 0.001f)
    181 mutation_amp = 0.001f;
    -
    182 opt->mutation_amp = mutation_amp;
    +
    182 opt->mutation_amp = mutation_amp;
    183
    184 uint32_t seed = local_time();
    185#ifdef ADC1
    @@ -302,15 +302,15 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    193 float base = start_params[j];
    194 float inv_randmax = 1.0f / (float)RAND_MAX;
    195 float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * mutation_amp;
    -
    196 opt->candidates[i][j] = base + noise;
    -
    197 if (opt->candidates[i][j] < 0.0f) opt->candidates[i][j] = 0.0f;
    -
    198 if (opt->candidates[i][j] > 1.0f) opt->candidates[i][j] = 1.0f;
    +
    196 opt->candidates[i][j] = base + noise;
    +
    197 if (opt->candidates[i][j] < 0.0f) opt->candidates[i][j] = 0.0f;
    +
    198 if (opt->candidates[i][j] > 1.0f) opt->candidates[i][j] = 1.0f;
    199 }
    -
    200 opt->loss[i] = 0.0f;
    +
    200 opt->loss[i] = 0.0f;
    201 }
    202
    -
    203 opt->cand_index = 0;
    -
    204 opt->gen_index = 0;
    +
    203 opt->cand_index = 0;
    +
    204 opt->gen_index = 0;
    205 return 0;
    206}
    @@ -333,50 +333,50 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    223 * Надо убедится что только один экземпляр функции запущен в момент времени
    224 */
    - +
    226 float* params,
    227 float loss)
    228{
    229 if((opt == NULL) || (params == NULL))
    230 return -1;
    231
    -
    232 uint16_t n_params = opt->n_params;
    -
    233 if(n_params > EVOLVE_MAX_PARAMS)
    +
    232 uint16_t n_params = opt->n_params;
    +
    233 if(n_params > GEN_MAX_PARAMS)
    234 return -1;
    235
    -
    236 uint16_t n_cand = opt->n_cand;
    -
    237 if(n_cand > EVOLVE_MAX_CANDIDATES)
    +
    236 uint16_t n_cand = opt->n_cand;
    +
    237 if(n_cand > GEN_MAX_CANDIDATES)
    238 return -1;
    239
    -
    240 uint16_t n_best = opt->n_best;
    -
    241 if(n_best > EVOLVE_MAX_CANDIDATES/2)
    +
    240 uint16_t n_best = opt->n_best;
    +
    241 if(n_best > GEN_MAX_CANDIDATES/2)
    242 return -1;
    243
    -
    244 float mut = opt->mutation_amp;
    +
    244 float mut = opt->mutation_amp;
    245 if((mut > 1) ||(mut < 0))
    246 return -1;
    247
    248 // 1. Сохраняем loss текущего кандидата
    -
    249 opt->loss[opt->cand_index] = loss;
    -
    250 opt->cand_index++;
    +
    249 opt->loss[opt->cand_index] = loss;
    +
    250 opt->cand_index++;
    251
    -
    252 if (opt->cand_index >= n_cand) {
    +
    252 if (opt->cand_index >= n_cand) {
    253 // 2. Сортируем текущее поколение по loss
    -
    254 for(uint16_t i = 0; i < opt->n_cand; i++)
    -
    255 opt->sorted_idx[i] = i;
    +
    254 for(uint16_t i = 0; i < opt->n_cand; i++)
    +
    255 opt->sorted_idx[i] = i;
    256
    257 g_sort_opt = opt;
    -
    258 qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx);
    +
    258 qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx);
    259 g_sort_opt = NULL;
    260
    261 // --- Адаптивная мутация в зависимости от Loss ---
    -
    262 float best_loss = opt->loss[opt->sorted_idx[0]];
    -
    263 float worst_loss = opt->loss[opt->sorted_idx[opt->n_cand - 1]];
    +
    262 float best_loss = opt->loss[opt->sorted_idx[0]];
    +
    263 float worst_loss = opt->loss[opt->sorted_idx[opt->n_cand - 1]];
    264 float diff = worst_loss - best_loss;
    265
    266 float sum_loss = 0.0f;
    267 for (uint16_t i = 0; i < n_cand; i++)
    -
    268 sum_loss += opt->loss[i];
    +
    268 sum_loss += opt->loss[i];
    269 float avg_loss = sum_loss / (float)n_cand;
    270
    271
    @@ -387,47 +387,47 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    276 // Записываем стабильность популяции в структуру
    277 if(diff < 0.0f) diff = 0.0f;
    278 if(diff > 1.0f) diff = 1.0f;
    -
    279 opt->stability = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));
    -
    280 if(opt->stability < 0.0f) opt->stability = 0.0f;
    -
    281 if(opt->stability > 1.0f) opt->stability = 1.0f;
    +
    279 opt->stability = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));
    +
    280 if(opt->stability < 0.0f) opt->stability = 0.0f;
    +
    281 if(opt->stability > 1.0f) opt->stability = 1.0f;
    282
    -
    283 float mut_pct = EVOLVE_MUTATION_MIN_PCT +
    - +
    283 float mut_pct = GEN_MUTATION_MIN_PCT +
    +
    285 float adaptive_mut = mut * (mut_pct / 100.0f);
    286 if (adaptive_mut < 0.0001f) adaptive_mut = 0.0001f;
    -
    287 opt->gen_mut = adaptive_mut;
    +
    287 opt->gen_mut = adaptive_mut;
    288
    289 // 3. Генерируем новое поколение
    -
    290 uint16_t n_elite = ELOVLE_N_ELITE_CANDIDATE;
    +
    290 uint16_t n_elite = ELOVLE_N_ELITE_CANDIDATE;
    291 for (uint16_t c = 0; c < n_cand; c++) {
    292 if (c < n_elite) {
    293 for (uint16_t i = 0; i < n_params; i++)
    -
    294 opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i];
    -
    295 opt->loss[c] = 0.0f;
    +
    294 opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i];
    +
    295 opt->loss[c] = 0.0f;
    296 } else {
    297 for (uint16_t i = 0; i < n_params; i++) {
    298 float inv_randmax = 1.0f / (float)RAND_MAX;
    299 float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * adaptive_mut;
    -
    300 uint16_t parent = opt->sorted_idx[rand() % opt->n_best];
    -
    301 opt->candidates[c][i] = opt->candidates[parent][i] + noise;
    -
    302 if (opt->candidates[c][i] < 0.0f) opt->candidates[c][i] = 0.0f;
    -
    303 if (opt->candidates[c][i] > 1.0f) opt->candidates[c][i] = 1.0f;
    +
    300 uint16_t parent = opt->sorted_idx[rand() % opt->n_best];
    +
    301 opt->candidates[c][i] = opt->candidates[parent][i] + noise;
    +
    302 if (opt->candidates[c][i] < 0.0f) opt->candidates[c][i] = 0.0f;
    +
    303 if (opt->candidates[c][i] > 1.0f) opt->candidates[c][i] = 1.0f;
    304 }
    -
    305 opt->loss[c] = 0.0f;
    +
    305 opt->loss[c] = 0.0f;
    306 }
    307 }
    -
    308 opt->cand_index = 0;
    -
    309 opt->gen_index++;
    +
    308 opt->cand_index = 0;
    +
    309 opt->gen_index++;
    310 }
    311
    312 // 4. Возвращаем параметры следующего кандидата
    -
    313 for (uint16_t i = 0; i < opt->n_params; i++)
    -
    314 params[i] = opt->candidates[opt->cand_index][i];
    +
    313 for (uint16_t i = 0; i < opt->n_params; i++)
    +
    314 params[i] = opt->candidates[opt->cand_index][i];
    315
    316 return 0;
    317}
    -
    318#else // ENABLE_EVOLVE_OPTIMIZATION
    +
    318#else // GEN_OPTIMIZATION_ENABLE
    319//заглушки
    320typedef struct {
    321 uint16_t n_params;
    @@ -436,46 +436,46 @@ $(function(){initNavTree('evolve__optimizer_8h_source.html','',''); });
    324 float mutation_amp;
    325 float loss[0];
    326 float candidates[0][0];
    - -
    328#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)
    -
    329#define EvolveOptimizer_Step(opt, params, LossFunc)
    + +
    328#define GenOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)
    +
    329#define GenOptimizer_Step(opt, params, LossFunc)
    330#define PARAM_SCALE(x, min_val, max_val) (x)
    331#define PARAM_UNSCALE(val, min_val, max_val) (val)
    -
    332#endif // ENABLE_EVOLVE_OPTIMIZATION
    +
    332#endif // GEN_OPTIMIZATION_ENABLE
    333
    -
    334#endif // __EVOLVE_OPTIMIZER_H_
    +
    334#endif // __GEN_OPTIMIZER_H_
    335
    -
    336/** EVOLVE_OPTIMIZER
    +
    336/** GEN_OPTIMIZER
    337 * @}
    338 */
    -
    #define EVOLVE_MAX_CANDIDATES
    Максимальное количество кандидатов для обучения
    -
    #define EVOLVE_MAX_PARAMS
    Максимальное количество параметров
    -
    #define EVOLVE_MUTATION_MIN_PCT
    Минимальная мутация (в процентах от Loss)
    -
    #define ELOVLE_N_ELITE_CANDIDATE
    Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
    -
    __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
    Инициализация эволюционного оптимизатора.
    -
    #define EVOLVE_MUTATION_MAX_PCT
    Максимальная мутация (в процентах от Loss)
    -
    __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    -
    #define local_time()
    Локальное время
    +
    #define GEN_MAX_CANDIDATES
    Максимальное количество кандидатов для обучения
    +
    #define GEN_MAX_PARAMS
    Максимальное количество параметров
    +
    static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
    Инициализация эволюционного оптимизатора.
    +
    #define ELOVLE_N_ELITE_CANDIDATE
    Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
    +
    #define GEN_MUTATION_MIN_PCT
    Минимальная мутация (в процентах от Loss)
    +
    #define GEN_MUTATION_MAX_PCT
    Максимальная мутация (в процентах от Loss)
    +
    static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    +
    #define local_time()
    Локальное время
    Заголочный файл для дефайнов библиотеки MyLibsGeneral.
    -
    Структура эволюционного оптимизатора
    -
    uint16_t cand_index
    Индекс кандидата для обработки
    -
    uint16_t n_params
    Количество параметров
    -
    float gen_mut
    Амплитуда мутации у текущей популяции
    -
    uint16_t sorted_idx[100]
    Индексы отсортированных кандидатов
    -
    float stability
    Коэффициент насколько стабильная популяция (0..1)(n_cand)
    -
    float loss[100]
    Loss для каждого кандидата
    -
    uint16_t n_best
    Количество лучших, усредняемых
    -
    uint16_t n_cand
    Количество кандидатов в популяции
    -
    uint16_t gen_index
    Индекс популяции
    -
    float candidates[100][20]
    Параметры кандидатов
    -
    float mutation_amp
    Амплитуда мутации (0..1)
    +
    Структура эволюционного оптимизатора
    +
    uint16_t cand_index
    Индекс текущего кандидата
    +
    float candidates[100][20]
    Параметры кандидатов
    +
    uint16_t n_best
    Количество лучших, усредняемых
    +
    float loss[100]
    Loss для каждого кандидата
    +
    uint16_t gen_index
    Индекс популяции
    +
    uint16_t n_cand
    Количество кандидатов в популяции
    +
    float stability
    Коэффициент насколько стабильная популяция (0..1)(n_cand)
    +
    float gen_mut
    Амплитуда мутации у текущей популяции
    +
    uint16_t sorted_idx[100]
    Индексы отсортированных кандидатов
    +
    float mutation_amp
    Амплитуда мутации (0..1)
    +
    uint16_t n_params
    Количество параметров
    diff --git a/Doc/html/general__gpio_8c_source.html b/Doc/html/general__gpio_8c_source.html index 31cc13f..01fd7e6 100644 --- a/Doc/html/general__gpio_8c_source.html +++ b/Doc/html/general__gpio_8c_source.html @@ -450,7 +450,7 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    check_null_ptr_1
    #define check_null_ptr_1(p1)
    Проверить один указатель на NULL.
    Definition mylibs_defs.h:38
    check_null_ptr_3
    #define check_null_ptr_3(p1, p2, p3)
    Проверить три указателя на NULL.
    Definition mylibs_defs.h:44
    LED_PWM_TICKS
    #define LED_PWM_TICKS
    Количество тиков в периоде ШИМ
    Definition general_gpio.h:35
    -
    local_time
    #define local_time()
    Локальное время
    Definition mylibs_config.h:80
    +
    local_time
    #define local_time()
    Локальное время
    Definition mylibs_config.h:97
    GPIO_Clock_Enable
    HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
    Включить тактирование порта GPIO.
    Definition general_gpio.c:22
    GPIO_LED_On
    HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
    Включить светодиод
    Definition general_gpio.c:91
    GPIO_LED_Fading_Start
    HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
    Активировать моргание светодиодом
    Definition general_gpio.c:164
    diff --git a/Doc/html/globals.html b/Doc/html/globals.html index e327839..b1af4a9 100644 --- a/Doc/html/globals.html +++ b/Doc/html/globals.html @@ -103,227 +103,6 @@ $(function(){initNavTree('globals.html','',''); });
  • ABS : mylibs_defs.h
  • assert_usertracker : trackers.h
  • - - -

    - b -

    - - -

    - c -

    - - -

    - d -

    - - -

    - e -

    - - -

    - f -

    - - -

    - g -

    - - -

    - h -

    - - -

    - i -

    - - -

    - l -

    - - -

    - m -

    - - -

    - n -

    - - -

    - p -

    - - -

    - r -

    - - -

    - s -

    - - -

    - t -

    - - -

    - u -

    diff --git a/Doc/html/globals_b.html b/Doc/html/globals_b.html new file mode 100644 index 0000000..4ffc1a9 --- /dev/null +++ b/Doc/html/globals_b.html @@ -0,0 +1,126 @@ + + + + + + + +MyLibs: File Members + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented file members with links to the documentation:
    + +

    - b -

    +
    +
    +
    + + + + diff --git a/Doc/html/globals_c.html b/Doc/html/globals_c.html new file mode 100644 index 0000000..a000337 --- /dev/null +++ b/Doc/html/globals_c.html @@ -0,0 +1,120 @@ + + + + + + + +MyLibs: File Members + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented file members with links to the documentation:
    + +

    - c -

    +
    +
    +
    + + + + diff --git a/Doc/html/globals_d.html b/Doc/html/globals_d.html new file mode 100644 index 0000000..6b33a0c --- /dev/null +++ b/Doc/html/globals_d.html @@ -0,0 +1,115 @@ + + + + + + + +MyLibs: File Members + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented file members with links to the documentation:
    + +

    - d -

    +
    +
    +
    + + + + diff --git a/Doc/html/globals_defs.html b/Doc/html/globals_defs.html index e5c1fac..446730c 100644 --- a/Doc/html/globals_defs.html +++ b/Doc/html/globals_defs.html @@ -106,6 +106,8 @@ $(function(){initNavTree('globals_defs.html','',''); });

    - b -

    @@ -126,12 +128,7 @@ $(function(){initNavTree('globals_defs.html','',''); });

    - e -

    @@ -141,6 +138,11 @@ $(function(){initNavTree('globals_defs.html','',''); });

    - g -

    @@ -160,7 +162,7 @@ $(function(){initNavTree('globals_defs.html','',''); });

    - i -

    Параметры для конфигурации:

    -
    Пример использования:
    +
    Пример использования:
    #include "gen_optimizer.h"
    #define N_PARAMS 4
    #define N_CANDIDATES 100
    #define N_BEST 10
    #define MUTATION 0.1f
    float params[N_PARAMS];
    - +
    GenOptimizer_t optimizer;
    // Формирование параметров
    uint16_t param_u16 = 800;
    @@ -174,23 +174,23 @@ Functions
    params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
    // Инициалиазция
    -
    EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
    +
    GenOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
    // Шаг эволюции
    float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)
    -
    EvolveOptimizer_Step(&optimizer, params, loss);
    +
    GenOptimizer_Step(&optimizer, params, loss);
    // Взятие следующих для эволюции параметров
    param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
    param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);
    param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);
    param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
    -
    Заголовочный файл для адаптивного подбора параметров
    -
    __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
    Инициализация эволюционного оптимизатора.
    -
    #define PARAM_SCALE(x, min_val, max_val)
    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    -
    #define PARAM_UNSCALE(val, min_val, max_val)
    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
    -
    __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    -
    Структура эволюционного оптимизатора
    +
    Заголовочный файл для адаптивного подбора параметров
    +
    static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
    Инициализация эволюционного оптимизатора.
    +
    #define PARAM_SCALE(x, min_val, max_val)
    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    +
    #define PARAM_UNSCALE(val, min_val, max_val)
    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
    +
    static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    +
    Структура эволюционного оптимизатора

    Macro Definition Documentation

    @@ -220,7 +220,7 @@ Functions

    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)

    -

    Definition at line 73 of file evolve_optimizer.h.

    +

    Definition at line 73 of file gen_optimizer.h.

    @@ -251,43 +251,43 @@ Functions

    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].

    -

    Definition at line 79 of file evolve_optimizer.h.

    +

    Definition at line 79 of file gen_optimizer.h.

    - -

    ◆ EVOLVE_MUTATION_MIN_PCT

    + +

    ◆ GEN_MUTATION_MIN_PCT

    - +
    #define EVOLVE_MUTATION_MIN_PCT   10#define GEN_MUTATION_MIN_PCT   10

    Минимальная мутация (в процентах от Loss)

    -

    Definition at line 89 of file evolve_optimizer.h.

    +

    Definition at line 89 of file gen_optimizer.h.

    - -

    ◆ EVOLVE_MUTATION_MAX_PCT

    + +

    ◆ GEN_MUTATION_MAX_PCT

    - +
    #define EVOLVE_MUTATION_MAX_PCT   100#define GEN_MUTATION_MAX_PCT   100

    Максимальная мутация (в процентах от Loss)

    -

    Definition at line 92 of file evolve_optimizer.h.

    +

    Definition at line 92 of file gen_optimizer.h.

    @@ -305,21 +305,24 @@ Functions

    Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)

    -

    Definition at line 95 of file evolve_optimizer.h.

    +

    Definition at line 95 of file gen_optimizer.h.

    Function Documentation

    - -

    ◆ EvolveOptimizer_Init()

    + +

    ◆ GenOptimizer_Init()

    + + + + + +
    - + - + @@ -347,6 +350,11 @@ Functions
    __STATIC_INLINE int EvolveOptimizer_Init int GenOptimizer_Init (EvolveOptimizer_t * opt, GenOptimizer_t * opt,
    float * start_params )
    +
    +static

    Инициализация эволюционного оптимизатора.

    @@ -363,20 +371,23 @@ Functions
    Returns
    0 — если окей, -1 — если ошибка
    -

    Definition at line 155 of file evolve_optimizer.h.

    +

    Definition at line 155 of file gen_optimizer.h.

    - -

    ◆ EvolveOptimizer_Step()

    + +

    ◆ GenOptimizer_Step()

    + + + + + +
    - + - + @@ -389,6 +400,11 @@ Functions
    __STATIC_INLINE int EvolveOptimizer_Step int GenOptimizer_Step (EvolveOptimizer_t * opt, GenOptimizer_t * opt,
    float loss )
    +
    +static

    Один шаг эволюционного оптимизатора.

    @@ -404,7 +420,7 @@ Functions

    Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n_cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.

    На выходе params содержит параметры следующего кандидата для измерений.

    Note
    Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени
    -

    Definition at line 225 of file evolve_optimizer.h.

    +

    Definition at line 225 of file gen_optimizer.h.

    diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js new file mode 100644 index 0000000..f13bdd9 --- /dev/null +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js @@ -0,0 +1,23 @@ +var group___g_e_n___o_p_t_i_m_i_z_e_r = +[ + [ "GenOptimizer_t", "struct_gen_optimizer__t.html", [ + [ "stability", "struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192", null ], + [ "n_params", "struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5", null ], + [ "n_cand", "struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9", null ], + [ "n_best", "struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9", null ], + [ "mutation_amp", "struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c", null ], + [ "cand_index", "struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc", null ], + [ "gen_index", "struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c", null ], + [ "gen_mut", "struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1", null ], + [ "loss", "struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73", null ], + [ "candidates", "struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df", null ], + [ "sorted_idx", "struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12", null ] + ] ], + [ "PARAM_SCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ], + [ "PARAM_UNSCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ], + [ "GEN_MUTATION_MIN_PCT", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068", null ], + [ "GEN_MUTATION_MAX_PCT", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd", null ], + [ "ELOVLE_N_ELITE_CANDIDATE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb", null ], + [ "GenOptimizer_Init", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a", null ], + [ "GenOptimizer_Step", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628", null ] +]; \ No newline at end of file diff --git a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.map b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.map similarity index 79% rename from Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.map rename to Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.map index 60c0efb..5430a1c 100644 --- a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.map +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 new file mode 100644 index 0000000..63165ab --- /dev/null +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 @@ -0,0 +1 @@ +ec124a446898cfdeeba090736e9d2802 \ No newline at end of file diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png new file mode 100644 index 0000000..835cdf4 Binary files /dev/null and b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png differ diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html index 10024d9..8d0f5e3 100644 --- a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html +++ b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html @@ -118,8 +118,8 @@ $(function(){initNavTree('group___l_i_b_s___c_o_n_f_i_g.html','',''); }); Macros #define local_time()  Локальное время
    -#define INCLUDE_EVOLVE_OPTIMIZER - Подключить библиотеку для оптимизации параметров
    +#define INCLUDE_GEN_OPTIMIZER + Подключить библиотеку для оптимизации параметров
    #define INCLUDE_BIT_ACCESS_LIB  Подключить библиотеку с typedef с битовыми полями
    #define INCLUDE_TRACKERS_LIB @@ -152,25 +152,25 @@ Macros

    Локальное время

    -

    Definition at line 80 of file mylibs_config.h.

    +

    Definition at line 97 of file mylibs_config.h.

    - -

    ◆ INCLUDE_EVOLVE_OPTIMIZER

    + +

    ◆ INCLUDE_GEN_OPTIMIZER

    - +
    #define INCLUDE_EVOLVE_OPTIMIZER#define INCLUDE_GEN_OPTIMIZER

    Подключить библиотеку для оптимизации параметров

    -

    Definition at line 82 of file mylibs_config.h.

    +

    Definition at line 99 of file mylibs_config.h.

    @@ -188,7 +188,7 @@ Macros

    Подключить библиотеку с typedef с битовыми полями

    -

    Definition at line 83 of file mylibs_config.h.

    +

    Definition at line 100 of file mylibs_config.h.

    @@ -206,7 +206,7 @@ Macros

    Подключить библиотеку с трекерами

    -

    Definition at line 84 of file mylibs_config.h.

    +

    Definition at line 101 of file mylibs_config.h.

    @@ -224,7 +224,7 @@ Macros

    Подключить библиотеку с трейсами

    -

    Definition at line 85 of file mylibs_config.h.

    +

    Definition at line 102 of file mylibs_config.h.

    @@ -242,7 +242,7 @@ Macros

    Подключить библиотеку с периферией

    -

    Definition at line 86 of file mylibs_config.h.

    +

    Definition at line 103 of file mylibs_config.h.

    @@ -260,7 +260,7 @@ Macros

    Использовать FreeRTOS задержку, вместо HAL.

    -

    Definition at line 87 of file mylibs_config.h.

    +

    Definition at line 104 of file mylibs_config.h.

    diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js index e82ae27..8ccdb19 100644 --- a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js +++ b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js @@ -1,7 +1,7 @@ var group___l_i_b_s___c_o_n_f_i_g = [ [ "local_time", "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653", null ], - [ "INCLUDE_EVOLVE_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66", null ], + [ "INCLUDE_GEN_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692", 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/group___m_y_l_i_b_s___c_o_n_f_i_g.html b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html index 04d29e3..c6b87bc 100644 --- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html +++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html @@ -109,7 +109,7 @@ $(function(){initNavTree('group___m_y_l_i_b_s___c_o_n_f_i_g.html','',''); }); + +

    Variable Documentation

    + +

    ◆ stack_frame

    + +
    +
    + + + + + +
    + + + + +
    HF_StackFrame_t* stack_frame
    +
    +static
    +
    + +

    Definition at line 523 of file trace.h.

    + +
    +
    + +

    ◆ stack_dump

    + +
    +
    + + + + + +
    + + + + +
    uint32_t stack_dump[32]
    +
    +static
    +
    + +

    Definition at line 524 of file trace.h.

    + +
    +
    + +

    ◆ ret_adr

    + +
    +
    + + + + + +
    + + + + +
    void* ret_adr[10] = {0}
    +
    +static
    +
    + +

    Definition at line 525 of file trace.h.

    +
    diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html index ca0045f..2aab441 100644 --- a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html +++ b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html @@ -195,7 +195,7 @@ Macros
    Value:
    my_printf("\n[%lu] [%s] " fmt, \
    (unsigned long)local_time(), TAG, ##__VA_ARGS__)
    -
    #define local_time()
    Локальное время
    +
    #define local_time()
    Локальное время
    #define my_printf(...)
    Универсальный макрос для вывода трассировки
    Definition trace.h:80

    Макрос логирования с поддержкой уровней LOG_LEVEL.

    diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html index 72b22b5..bd87445 100644 --- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html @@ -153,7 +153,7 @@ Macros

    Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля.

    -

    Definition at line 155 of file mylibs_defs.h.

    +

    Definition at line 154 of file mylibs_defs.h.

    @@ -188,7 +188,7 @@ Macros
    Returns
    Результат деления, округленный вверх.

    Если результат деления без остатка: он возвращается как есть Если с остатком - округляется вверх

    -

    Definition at line 166 of file mylibs_defs.h.

    +

    Definition at line 165 of file mylibs_defs.h.

    @@ -218,7 +218,7 @@ Macros
    Returns
    Результат с поменяными местами старшим и младшим байтом.

    Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.

    -

    Definition at line 174 of file mylibs_defs.h.

    +

    Definition at line 173 of file mylibs_defs.h.

    @@ -248,7 +248,7 @@ Macros
    Returns
    Абсолютное значение числа x.

    Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.

    -

    Definition at line 182 of file mylibs_defs.h.

    +

    Definition at line 181 of file mylibs_defs.h.

    diff --git a/Doc/html/index.html b/Doc/html/index.html index 4155f67..bdab5f7 100644 --- a/Doc/html/index.html +++ b/Doc/html/index.html @@ -113,7 +113,7 @@ $(function(){initNavTree('index.html','',''); });

    @@ -158,7 +158,7 @@ $(function(){initNavTree('index.html','',''); });
    │ │ ├── mylibs_config.h # Конфигурация библиотек
    │ │ ├── mylibs_defs.h # Общие определения и макросы
    │ │ ├── bit_access.h # Битовый доступ к регистрам
    -
    │ │ ├── evolve_optimizer.h # Оптимизатор (генетический алгоритм)
    +
    │ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
    │ │ ├── trackers.h # Трекеры для отладки
    │ │ └── trace.h # Трассировка и логирование
    │ └── src/
    diff --git a/Doc/html/mainpage_8h_source.html b/Doc/html/mainpage_8h_source.html index 489de5b..4945489 100644 --- a/Doc/html/mainpage_8h_source.html +++ b/Doc/html/mainpage_8h_source.html @@ -116,7 +116,7 @@ $(function(){initNavTree('mainpage_8h_source.html','',''); });
    14@subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES)
    15- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES)
    16- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE)
    -
    17- Эволюционный алгоритм для оптимизации параметров (@ref EVOLVE_OPTIMIZER)
    +
    17- Эволюционный алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER)
    18- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES)
    19
    20@subsubsection trace_module Трассировка @ref TRACE
    @@ -152,7 +152,7 @@ $(function(){initNavTree('mainpage_8h_source.html','',''); });
    50│ │ ├── mylibs_config.h # Конфигурация библиотек
    51│ │ ├── mylibs_defs.h # Общие определения и макросы
    52│ │ ├── bit_access.h # Битовый доступ к регистрам
    -
    53│ │ ├── evolve_optimizer.h # Оптимизатор (генетический алгоритм)
    +
    53│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
    54│ │ ├── trackers.h # Трекеры для отладки
    55│ │ └── trace.h # Трассировка и логирование
    56│ └── src/
    diff --git a/Doc/html/menudata.js b/Doc/html/menudata.js index 7938a54..c4eb5d4 100644 --- a/Doc/html/menudata.js +++ b/Doc/html/menudata.js @@ -35,6 +35,7 @@ var menudata={children:[ {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:"m",url:"functions.html#index_m"}, {text:"n",url:"functions.html#index_n"}, @@ -48,6 +49,7 @@ var menudata={children:[ {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:"m",url:"functions_vars.html#index_m"}, {text:"n",url:"functions_vars.html#index_n"}, @@ -60,30 +62,31 @@ var menudata={children:[ {text:"File Members",url:"globals.html",children:[ {text:"All",url:"globals.html",children:[ {text:"a",url:"globals.html#index_a"}, -{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:"f",url:"globals.html#index_f"}, -{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:"b",url:"globals_b.html#index_b"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"e",url:"globals_e.html#index_e"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"h",url:"globals_h.html#index_h"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"l",url:"globals_l.html#index_l"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"n",url:"globals_n.html#index_n"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"r",url:"globals_r.html#index_r"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"u",url:"globals_u.html#index_u"}]}, {text:"Functions",url:"globals_func.html",children:[ -{text:"e",url:"globals_func.html#index_e"}, +{text:"b",url:"globals_func.html#index_b"}, {text:"g",url:"globals_func.html#index_g"}, {text:"h",url:"globals_func.html#index_h"}, {text:"r",url:"globals_func.html#index_r"}, {text:"s",url:"globals_func.html#index_s"}, {text:"t",url:"globals_func.html#index_t"}, {text:"u",url:"globals_func.html#index_u"}]}, +{text:"Variables",url:"globals_vars.html"}, {text:"Enumerations",url:"globals_enum.html"}, {text:"Enumerator",url:"globals_eval.html"}, {text:"Macros",url:"globals_defs.html",children:[ diff --git a/Doc/html/mylibs__config_8h.html b/Doc/html/mylibs__config_8h.html index cceab33..19f82bf 100644 --- a/Doc/html/mylibs__config_8h.html +++ b/Doc/html/mylibs__config_8h.html @@ -121,48 +121,50 @@ $(function(){initNavTree('mylibs__config_8h.html','',''); }); @@ -202,16 +204,20 @@ Macros

     Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
    #define GPIO_TRACE_ENABLE  Включить GPIO трассировку
    -#define ENABLE_EVOLVE_OPTIMIZATION - Включить оптимизацию параметров
    -#define EVOLVE_MAX_PARAMS   20 - Максимальное количество параметров
    -#define EVOLVE_MAX_CANDIDATES   100 - Максимальное количество кандидатов для обучения
    +#define GEN_OPTIMIZATION_ENABLE + Включить оптимизацию параметров
    +#define GEN_MAX_PARAMS   20 + Максимальное количество параметров
    +#define GEN_MAX_CANDIDATES   100 + Максимальное количество кандидатов для обучения
    +#define BENCH_TIME_ENABLE + Включить бенч времени
    +#define BENCH_TIME_MAX_CHANNELS   16 + Максимальное количество каналов измерения
    #define local_time()  Локальное время
    -#define INCLUDE_EVOLVE_OPTIMIZER - Подключить библиотеку для оптимизации параметров
    +#define INCLUDE_GEN_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 522ab62..9065b7a 100644 --- a/Doc/html/mylibs__config_8h.js +++ b/Doc/html/mylibs__config_8h.js @@ -16,11 +16,13 @@ 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 ], + [ "GEN_OPTIMIZATION_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c", null ], + [ "GEN_MAX_PARAMS", "group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab", null ], + [ "GEN_MAX_CANDIDATES", "group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869", null ], + [ "BENCH_TIME_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9", null ], + [ "BENCH_TIME_MAX_CHANNELS", "group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52", null ], [ "local_time", "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653", null ], - [ "INCLUDE_EVOLVE_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66", null ], + [ "INCLUDE_GEN_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692", 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 1d4324b..8f1d357 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.map +++ b/Doc/html/mylibs__config_8h__dep__incl.map @@ -1,44 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__config_8h__dep__incl.md5 b/Doc/html/mylibs__config_8h__dep__incl.md5 index 2bf2c87..8005ab1 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.md5 +++ b/Doc/html/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -5684ae5794e6a9fd93ea5670cfcc39cf \ No newline at end of file +1c7c706656d0b5264849d45ac47d4507 \ 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 eb504b4..a374176 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 e4296be..64d652b 100644 --- a/Doc/html/mylibs__config_8h_source.html +++ b/Doc/html/mylibs__config_8h_source.html @@ -157,45 +157,62 @@ $(function(){initNavTree('mylibs__config_8h_source.html','',''); });
    55
    56
    57/**
    -
    58 * @addtogroup EVOLVE_CONFIG Evolve configs
    +
    58 * @addtogroup GEN_CONFIG Genetic configs
    59 * @ingroup MYLIBS_CONFIG
    -
    60 * @brief Конфигурация однослойного персептрона и алгоритма обучения
    +
    60 * @brief Конфигурация генетического алгоритма обучения
    61 * @{
    62 */
    63
    -
    64#define ENABLE_EVOLVE_OPTIMIZATION ///< Включить оптимизацию параметров
    -
    65#define EVOLVE_MAX_PARAMS 20 ///< Максимальное количество параметров
    -
    66#define EVOLVE_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения
    +
    64#define GEN_OPTIMIZATION_ENABLE ///< Включить оптимизацию параметров
    +
    65#define GEN_MAX_PARAMS 20 ///< Максимальное количество параметров
    +
    66#define GEN_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения
    67
    -
    68/** EVOLVE_CONFIG
    +
    68/** GEN_CONFIG
    69 * @}
    70 */
    71
    72
    73/**
    -
    74 * @addtogroup LIBS_CONFIG Libraries configs
    +
    74 * @addtogroup GEN_CONFIG Genetic configs
    75 * @ingroup MYLIBS_CONFIG
    -
    76 * @brief Подключение различных модулей библиотеки
    +
    76 * @brief Конфигурация генетического алгоритма обучения
    77 * @{
    78 */
    79
    -
    80#define local_time() uwTick ///< Локальное время
    -
    81
    -
    82#define INCLUDE_EVOLVE_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров
    -
    83#define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями
    -
    84#define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами
    -
    85#define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами
    -
    86#define INCLUDE_GENERAL_PERIPH_LIBS ///< Подключить библиотеку с периферией
    -
    87#define FREERTOS_DELAY ///< Использовать FreeRTOS задержку, вместо HAL
    -
    88
    -
    89/** LIBS_CONFIG
    -
    90 * @}
    -
    91 */
    -
    92
    -
    93/** MYLIBS_CONFIG
    -
    94 * @}
    +
    80
    +
    81#define BENCH_TIME_ENABLE ///< Включить бенч времени
    +
    82#define BENCH_TIME_MAX_CHANNELS 16 ///< Максимальное количество каналов измерения
    +
    83
    +
    84/** GEN_CONFIG
    +
    85 * @}
    +
    86 */
    +
    87
    +
    88
    +
    89
    +
    90/**
    +
    91 * @addtogroup LIBS_CONFIG Libraries configs
    +
    92 * @ingroup MYLIBS_CONFIG
    +
    93 * @brief Подключение различных модулей библиотеки
    +
    94 * @{
    95 */
    -
    96#endif //__MYLIBS_CONFIG_H_
    +
    96
    +
    97#define local_time() uwTick ///< Локальное время
    +
    98
    +
    99#define INCLUDE_GEN_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров
    +
    100#define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями
    +
    101#define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами
    +
    102#define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами
    +
    103#define INCLUDE_GENERAL_PERIPH_LIBS ///< Подключить библиотеку с периферией
    +
    104#define FREERTOS_DELAY ///< Использовать FreeRTOS задержку, вместо HAL
    +
    105
    +
    106/** LIBS_CONFIG
    +
    107 * @}
    +
    108 */
    +
    109
    +
    110/** MYLIBS_CONFIG
    +
    111 * @}
    +
    112 */
    +
    113#endif //__MYLIBS_CONFIG_H_
    diff --git a/Doc/html/mylibs__defs_8h.html b/Doc/html/mylibs__defs_8h.html index 45402d5..5709d6b 100644 --- a/Doc/html/mylibs__defs_8h.html +++ b/Doc/html/mylibs__defs_8h.html @@ -123,46 +123,48 @@ $(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 07ec6b0..f952e29 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.map +++ b/Doc/html/mylibs__defs_8h__dep__incl.map @@ -1,42 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__defs_8h__dep__incl.md5 b/Doc/html/mylibs__defs_8h__dep__incl.md5 index 751fc98..27e2e55 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/html/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -9c1097cc7666ffa0cae2ac5bbe1fbab9 \ No newline at end of file +9853b50743578d4b3267175adda5a3af \ 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 5fae33f..02c276a 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 5c4e9a8..570cc52 100644 --- a/Doc/html/mylibs__defs_8h_source.html +++ b/Doc/html/mylibs__defs_8h_source.html @@ -239,60 +239,60 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
    137
    138
    139/***************************************************************************
    -
    140*******************************UTIL_DEFINES********************************/
    -
    141static int dummy;
    -
    142/**
    -
    143 * @addtogroup UTILS_DEFINES Utils defines
    -
    144 * @ingroup MYLIBS_DEFINES
    -
    145 * @brief Общие вспомогательные макросы
    -
    146 * @{
    -
    147 */
    -
    148
    -
    149/**
    -
    150 * @brief Обнуление структуры.
    -
    151 * @param _struct_ Структура, которую нужно обнулить.
    -
    152 * @details Макрос использует memset для обнуления всей памяти структуры.
    -
    153 * Используется для быстрой и безопасной инициализации переменных структур до нуля.
    -
    154 */
    -
    155#define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
    -
    156
    -
    157/**
    -
    158 * @brief Деление с округлением вверх
    -
    159 * @param _val_ Делимое.
    -
    160 * @param _div_ Делитель.
    -
    161 * @return Результат деления, округленный вверх.
    -
    162 * @details Если результат деления без остатка: он возвращается как есть
    -
    163 Если с остатком - округляется вверх
    -
    164 */
    -
    165//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
    -
    166#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
    -
    167
    -
    168/**
    -
    169 * @brief Swap between Little Endian and Big Endian
    -
    170 * @param v Исходное 16-битное значение.
    -
    171 * @return Результат с поменяными местами старшим и младшим байтом.
    -
    172 * @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
    -
    173 */
    -
    174#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
    -
    175
    -
    176/**
    -
    177 * @brief Абсолютное значение числа
    -
    178 * @param x Число.
    -
    179 * @return Абсолютное значение числа x.
    -
    180 * @details Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
    -
    181 */
    -
    182#define ABS(x) ( ((x) > 0)? (x) : -(x))
    -
    183
    -
    184/** UTILS_DEFINES
    -
    185 * @}
    -
    186 */
    -
    187
    -
    188
    -
    189
    -
    190/**
    -
    191 * @cond LIBS_INTERNAL
    -
    192 */
    -
    193
    +
    140*******************************UTIL_DEFINES********************************/
    +
    141/**
    +
    142 * @addtogroup UTILS_DEFINES Utils defines
    +
    143 * @ingroup MYLIBS_DEFINES
    +
    144 * @brief Общие вспомогательные макросы
    +
    145 * @{
    +
    146 */
    +
    147
    +
    148/**
    +
    149 * @brief Обнуление структуры.
    +
    150 * @param _struct_ Структура, которую нужно обнулить.
    +
    151 * @details Макрос использует memset для обнуления всей памяти структуры.
    +
    152 * Используется для быстрой и безопасной инициализации переменных структур до нуля.
    +
    153 */
    +
    154#define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
    +
    155
    +
    156/**
    +
    157 * @brief Деление с округлением вверх
    +
    158 * @param _val_ Делимое.
    +
    159 * @param _div_ Делитель.
    +
    160 * @return Результат деления, округленный вверх.
    +
    161 * @details Если результат деления без остатка: он возвращается как есть
    +
    162 Если с остатком - округляется вверх
    +
    163 */
    +
    164//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
    +
    165#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
    +
    166
    +
    167/**
    +
    168 * @brief Swap between Little Endian and Big Endian
    +
    169 * @param v Исходное 16-битное значение.
    +
    170 * @return Результат с поменяными местами старшим и младшим байтом.
    +
    171 * @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
    +
    172 */
    +
    173#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
    +
    174
    +
    175/**
    +
    176 * @brief Абсолютное значение числа
    +
    177 * @param x Число.
    +
    178 * @return Абсолютное значение числа x.
    +
    179 * @details Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
    +
    180 */
    +
    181#define ABS(x) ( ((x) > 0)? (x) : -(x))
    +
    182
    +
    183/** UTILS_DEFINES
    +
    184 * @}
    +
    185 */
    +
    186
    +
    187
    +
    188
    +
    189/**
    +
    190 * @cond LIBS_INTERNAL
    +
    191 */
    +
    192
    +
    193static int dummy; // переменная которой присваиваются значения, которые некуда присвоить
    194
    195/**
    196 * @brief Аналог HAL макроса для привязки DMA к UART.
    diff --git a/Doc/html/mylibs__include_8h.html b/Doc/html/mylibs__include_8h.html index bf4d850..726ac42 100644 --- a/Doc/html/mylibs__include_8h.html +++ b/Doc/html/mylibs__include_8h.html @@ -108,7 +108,7 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); }); #include "bit_access.h"
    #include "trackers.h"
    #include "trace.h"
    -#include "evolve_optimizer.h"
    +#include "gen_optimizer.h"
    #include "__general_flash.h"
    #include "general_gpio.h"
    Include dependency graph for mylibs_include.h:
    @@ -120,16 +120,16 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); }); - - + + - - + + @@ -141,27 +141,232 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); }); - - - - - - - - - + + + + + + + + +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Macros

    #define BenchTime_Init()
    #define BenchTime_Start(channel, ticks, tick_period)
    #define BenchTime_End(channel, ticks)
    #define BenchTime_GetMin(channel)
    #define BenchTime_GetMax(channel)
    #define BenchTime_GetAverage(channel)
    #define BenchTime_GetCount(channel)
    #define BenchTime_GetLast(channel)
    #define BenchTime_ResetStats(channel)

    Detailed Description

    Заголочный файл для всех библиотек

    Здесь нужно собрать библиотеки и дефайны, которые должны быть видны во всем проекте, чтобы не подключать 100 инклюдов в каждом ".c" файле

    Definition in file mylibs_include.h.

    -
    +

    Macro Definition Documentation

    + +

    ◆ BenchTime_Init

    + +
    +
    + + + + + + + +
    #define BenchTime_Init( void)
    +
    + +

    Definition at line 104 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_Start

    + +
    +
    + + + + + + + + + + + + + + + + +
    #define BenchTime_Start( channel,
    ticks,
    tick_period )
    +
    +Value:
    0
    +
    +

    Definition at line 105 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_End

    + +
    +
    + + + + + + + + + + + +
    #define BenchTime_End( channel,
    ticks )
    +
    +Value:
    0
    +
    +

    Definition at line 106 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_GetMin

    + +
    +
    + + + + + + + +
    #define BenchTime_GetMin( channel)
    +
    +Value:
    0
    +
    +

    Definition at line 107 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_GetMax

    + +
    +
    + + + + + + + +
    #define BenchTime_GetMax( channel)
    +
    +Value:
    0
    +
    +

    Definition at line 108 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_GetAverage

    + +
    +
    + + + + + + + +
    #define BenchTime_GetAverage( channel)
    +
    +Value:
    0
    +
    +

    Definition at line 109 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_GetCount

    + +
    +
    + + + + + + + +
    #define BenchTime_GetCount( channel)
    +
    +Value:
    0
    +
    +

    Definition at line 110 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_GetLast

    + +
    +
    + + + + + + + +
    #define BenchTime_GetLast( channel)
    +
    +Value:
    0
    +
    +

    Definition at line 111 of file mylibs_include.h.

    + +
    +
    + +

    ◆ BenchTime_ResetStats

    + +
    +
    + + + + + + + +
    #define BenchTime_ResetStats( channel)
    +
    + +

    Definition at line 112 of file mylibs_include.h.

    + +
    +
    + diff --git a/Doc/html/navtreedata.js b/Doc/html/navtreedata.js index b8175d6..bde56f6 100644 --- a/Doc/html/navtreedata.js +++ b/Doc/html/navtreedata.js @@ -49,8 +49,9 @@ var NAVTREE = [ "Files", "files.html", [ [ "File List", "files.html", "files_dup" ], [ "File Members", "globals.html", [ - [ "All", "globals.html", null ], + [ "All", "globals.html", "globals_dup" ], [ "Functions", "globals_func.html", null ], + [ "Variables", "globals_vars.html", null ], [ "Enumerations", "globals_enum.html", null ], [ "Enumerator", "globals_eval.html", null ], [ "Macros", "globals_defs.html", null ] @@ -62,7 +63,7 @@ var NAVTREE = var NAVTREEINDEX = [ "____general__flash_8c_source.html", -"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae" +"group___u_a_r_t___i_n_i_t.html" ]; var SYNCONMSG = 'click to disable panel synchronization'; diff --git a/Doc/html/navtreeindex0.js b/Doc/html/navtreeindex0.js index 8854031..18c9dc7 100644 --- a/Doc/html/navtreeindex0.js +++ b/Doc/html/navtreeindex0.js @@ -3,19 +3,21 @@ var NAVTREEINDEX0 = "____general__flash_8c_source.html":[3,0,1,1,0], "____general__flash_8h_source.html":[3,0,1,0,0], "annotated.html":[2,0], -"bit__access_8h.html":[3,0,0,0,0], -"bit__access_8h_source.html":[3,0,0,0,0], +"bench__time_8h.html":[3,0,0,0,0], +"bench__time_8h_source.html":[3,0,0,0,0], +"bit__access_8h.html":[3,0,0,0,1], +"bit__access_8h_source.html":[3,0,0,0,1], "classes.html":[2,1], "dir_2cad7b5fa94233a09111fd73c6202518.html":[3,0,1,0], "dir_3d5e348fed410a00f9c665596ca3b887.html":[3,0,1,1], "dir_57feeba75fefbd1a9c832b76e3bce520.html":[3,0,1], "dir_8eb68c124db7670c3cb56141b10519ea.html":[3,0,0,0], "dir_d4b2573a0c19afb61452cc3d00967af1.html":[3,0,0], -"evolve__optimizer_8h.html":[3,0,0,0,1], -"evolve__optimizer_8h_source.html":[3,0,0,0,1], "files.html":[3,0], "functions.html":[2,2,0], "functions_vars.html":[2,2,1], +"gen__optimizer_8h.html":[3,0,0,0,2], +"gen__optimizer_8h_source.html":[3,0,0,0,2], "general__gpio_8c.html":[3,0,1,1,1], "general__gpio_8c_source.html":[3,0,1,1,1], "general__gpio_8h.html":[3,0,1,0,1], @@ -36,39 +38,70 @@ var NAVTREEINDEX0 = "general__uart_8h.html":[3,0,1,0,4], "general__uart_8h_source.html":[3,0,1,0,4], "globals.html":[3,1,0], -"globals_defs.html":[3,1,4], -"globals_enum.html":[3,1,2], -"globals_eval.html":[3,1,3], +"globals.html":[3,1,0,0], +"globals_b.html":[3,1,0,1], +"globals_c.html":[3,1,0,2], +"globals_d.html":[3,1,0,3], +"globals_defs.html":[3,1,5], +"globals_e.html":[3,1,0,4], +"globals_enum.html":[3,1,3], +"globals_eval.html":[3,1,4], +"globals_f.html":[3,1,0,5], "globals_func.html":[3,1,1], +"globals_g.html":[3,1,0,6], +"globals_h.html":[3,1,0,7], +"globals_i.html":[3,1,0,8], +"globals_l.html":[3,1,0,9], +"globals_m.html":[3,1,0,10], +"globals_n.html":[3,1,0,11], +"globals_p.html":[3,1,0,12], +"globals_r.html":[3,1,0,13], +"globals_s.html":[3,1,0,14], +"globals_t.html":[3,1,0,15], +"globals_u.html":[3,1,0,16], +"globals_vars.html":[3,1,2], +"group___b_e_n_c_h___t_i_m_e.html":[1,0,1,1], +"group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e":[1,0,1,1,7], +"group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8":[1,0,1,1,8], +"group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705":[1,0,1,1,6], +"group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35":[1,0,1,1,11], +"group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439":[1,0,1,1,5], +"group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d":[1,0,1,1,12], +"group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054":[1,0,1,1,3], +"group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a":[1,0,1,1,9], +"group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349":[1,0,1,1,4], +"group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed":[1,0,1,1,10], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html":[1,0,1,0], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a":[1,0,1,0,7], "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,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#ga2f2b1be34ad4eb1bf3267237200cd6c6":[1,0,1,1,3], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb":[1,0,1,1,5], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21":[1,0,1,1,6], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e":[1,0,1,1,1], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc":[1,0,1,1,4], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3":[1,0,1,1,2], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef":[1,0,1,1,7], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,4], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,4,2], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,4,1], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,4,0], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,4,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,3], +"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,3,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,3,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,3,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,3,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,3,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,3,0], +"group___g_e_n___c_o_n_f_i_g.html":[1,0,0,1], +"group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869":[1,0,0,1,2], +"group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9":[1,0,0,1,3], +"group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52":[1,0,0,1,4], +"group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab":[1,0,0,1,1], +"group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c":[1,0,0,1,0], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html":[1,0,1,2], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a":[1,0,1,2,6], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb":[1,0,1,2,5], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068":[1,0,1,2,3], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd":[1,0,1,2,4], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e":[1,0,1,2,1], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3":[1,0,1,2,2], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628":[1,0,1,2,7], "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,4], "group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023":[1,0,2,0,0,0,1], @@ -79,9 +112,9 @@ var NAVTREEINDEX0 = "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,4], "group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281":[1,0,0,2,5], +"group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692":[1,0,0,2,1], "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32":[1,0,0,2,3], "group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151":[1,0,0,2,6], -"group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66":[1,0,0,2,1], "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653":[1,0,0,2,0], "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be":[1,0,0,2,2], "group___m_y___l_i_b_s___g_p_i_o.html":[1,0,2,0], @@ -164,7 +197,7 @@ var NAVTREEINDEX0 = "group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c":[1,0,2,2,0,0,13], "group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a":[1,0,2,2,0,0,8], "group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac":[1,0,2,2,0,0,12], -"group___t_r_a_c_e.html":[1,0,1,5], +"group___t_r_a_c_e.html":[1,0,1,6], "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], @@ -182,72 +215,39 @@ 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,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_a_r_t___i_n_i_t.html":[1,0,2,3,0], -"group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89":[1,0,2,3,0,0], -"group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340":[1,0,2,3,0,5], -"group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976":[1,0,2,3,0,3], -"group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7":[1,0,2,3,0,4], -"group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d":[1,0,2,3,0,2], -"group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b":[1,0,2,3,0,1], -"group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868":[1,0,2,3,0,6], -"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#features":[0,0], -"index.html#gpio_module":[0,0,2], -"index.html#overview":[0], -"index.html#spi_module":[0,0,5], -"index.html#structure":[0,1], -"index.html#tim_module":[0,0,3], -"index.html#trace_module":[0,0,1], -"index.html#uart_module":[0,0,4], -"index.html#usage_basic":[0,2], -"index.html#utils_module":[0,0,0], -"mainpage_8h_source.html":[3,0,2], -"mylibs__config_8h.html":[3,0,0,0,2], -"mylibs__config_8h_source.html":[3,0,0,0,2], -"mylibs__defs_8h.html":[3,0,0,0,3], -"mylibs__defs_8h_source.html":[3,0,0,0,3], -"mylibs__include_8h.html":[3,0,0,0,4], -"mylibs__include_8h_source.html":[3,0,0,0,4], -"pages.html":[], -"struct_evolve_optimizer__t.html":[1,0,1,1,0] +"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,6,1], +"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,6,1,1], +"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,6,1,0], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,6,3], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,6,3,1], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,6,3,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,6,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,6,2,1], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,6,2,3], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,6,2,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,6,2,4], +"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,6,0], +"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,6,0,1], +"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,6,0,0], +"group___t_r_a_c_k_e_r_s.html":[1,0,1,7], +"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,7,18], +"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,7,12], +"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,7,9], +"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,7,17], +"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,7,4], +"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,7,7], +"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,7,10], +"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,7,8], +"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,7,0], +"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,7,15], +"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,7,14], +"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,7,1], +"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,7,11], +"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,7,6], +"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,7,19], +"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,7,5], +"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,7,13], +"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,7,3], +"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,7,2], +"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,7,16] }; diff --git a/Doc/html/navtreeindex1.js b/Doc/html/navtreeindex1.js index be8ca82..7a2ccc1 100644 --- a/Doc/html/navtreeindex1.js +++ b/Doc/html/navtreeindex1.js @@ -1,16 +1,50 @@ var NAVTREEINDEX1 = { -"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae":[1,0,1,1,0,5], -"struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8":[1,0,1,1,0,1], -"struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727":[1,0,1,1,0,7], -"struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a":[1,0,1,1,0,10], -"struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c":[1,0,1,1,0,0], -"struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df":[1,0,1,1,0,8], -"struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6":[1,0,1,1,0,3], -"struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1":[1,0,1,1,0,2], -"struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108":[1,0,1,1,0,6], -"struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4":[1,0,1,1,0,9], -"struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8":[1,0,1,1,0,4], +"group___u_a_r_t___i_n_i_t.html":[1,0,2,3,0], +"group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89":[1,0,2,3,0,0], +"group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340":[1,0,2,3,0,5], +"group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976":[1,0,2,3,0,3], +"group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7":[1,0,2,3,0,4], +"group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d":[1,0,2,3,0,2], +"group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b":[1,0,2,3,0,1], +"group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868":[1,0,2,3,0,6], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,5], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,5,2], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,5,3], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,5,1], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,5,0], +"index.html":[], +"index.html#features":[0,0], +"index.html#gpio_module":[0,0,2], +"index.html#overview":[0], +"index.html#spi_module":[0,0,5], +"index.html#structure":[0,1], +"index.html#tim_module":[0,0,3], +"index.html#trace_module":[0,0,1], +"index.html#uart_module":[0,0,4], +"index.html#usage_basic":[0,2], +"index.html#utils_module":[0,0,0], +"mainpage_8h_source.html":[3,0,2], +"mylibs__config_8h.html":[3,0,0,0,3], +"mylibs__config_8h_source.html":[3,0,0,0,3], +"mylibs__defs_8h.html":[3,0,0,0,4], +"mylibs__defs_8h_source.html":[3,0,0,0,4], +"mylibs__include_8h.html":[3,0,0,0,5], +"mylibs__include_8h_source.html":[3,0,0,0,5], +"pages.html":[], +"struct_bench_time__t.html":[1,0,1,1,2], +"struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6":[1,0,1,1,2,0], +"struct_bench_time_channel__t.html":[1,0,1,1,1], +"struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd":[1,0,1,1,1,1], +"struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9":[1,0,1,1,1,2], +"struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c":[1,0,1,1,1,3], +"struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928":[1,0,1,1,1,0], +"struct_bench_time_stats__t.html":[1,0,1,1,0], +"struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec":[1,0,1,1,0,2], +"struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0":[1,0,1,1,0,4], +"struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8":[1,0,1,1,0,0], +"struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c":[1,0,1,1,0,1], +"struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71":[1,0,1,1,0,3], "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], @@ -23,19 +57,31 @@ var NAVTREEINDEX1 = "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,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_gen_optimizer__t.html":[1,0,1,2,0], +"struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc":[1,0,1,2,0,5], +"struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df":[1,0,1,2,0,9], +"struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9":[1,0,1,2,0,3], +"struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73":[1,0,1,2,0,8], +"struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c":[1,0,1,2,0,6], +"struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9":[1,0,1,2,0,2], +"struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192":[1,0,1,2,0,0], +"struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1":[1,0,1,2,0,7], +"struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12":[1,0,1,2,0,10], +"struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c":[1,0,1,2,0,4], +"struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5":[1,0,1,2,0,1], +"struct_h_f___stack_frame__t.html":[1,0,1,6,3,0], +"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,1,6,3,0,6], +"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,1,6,3,0,1], +"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,1,6,3,0,0], +"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,1,6,3,0,3], +"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,1,6,3,0,2], +"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,1,6,3,0,5], +"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,6,3,0,4], +"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,6,3,0,7], +"struct_r_t_t___flash_header__t.html":[1,0,1,6,2,0], +"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,6,2,0,0], +"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,6,2,0,2], +"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,6,2,0,1], "struct_s_p_i___settings_type_def.html":[1,0,2,1,1], "struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820":[1,0,2,1,1,7], "struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95":[1,0,2,1,1,4], @@ -78,10 +124,10 @@ var NAVTREEINDEX1 = "struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea":[1,0,2,3,1,0], "struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f":[1,0,2,3,1,1], "topics.html":[1], -"trace_8h.html":[3,0,0,0,5], -"trace_8h_source.html":[3,0,0,0,5], -"trackers_8h.html":[3,0,0,0,6], -"trackers_8h_source.html":[3,0,0,0,6], +"trace_8h.html":[3,0,0,0,6], +"trace_8h_source.html":[3,0,0,0,6], +"trackers_8h.html":[3,0,0,0,7], +"trackers_8h_source.html":[3,0,0,0,7], "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_1.js b/Doc/html/search/all_1.js index fa8ea03..2595211 100644 --- a/Doc/html/search/all_1.js +++ b/Doc/html/search/all_1.js @@ -1,7 +1,22 @@ var searchData= [ - ['bit_20access_20defines_0',['Bit access defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'']]], - ['bit_5faccess_2eh_1',['bit_access.h',['../bit__access_8h.html',1,'']]], - ['buffer_2',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]], - ['byteswap16_3',['ByteSwap16',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291',1,'mylibs_defs.h']]] + ['bench_5ftime_2eh_0',['bench_time.h',['../bench__time_8h.html',1,'']]], + ['bench_5ftime_5fenable_1',['BENCH_TIME_ENABLE',['../group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9',1,'mylibs_config.h']]], + ['bench_5ftime_5fmax_5fchannels_2',['BENCH_TIME_MAX_CHANNELS',['../group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52',1,'mylibs_config.h']]], + ['benchtime_5fend_3',['BenchTime_End',['../group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439',1,'bench_time.h']]], + ['benchtime_5fgetaverage_4',['BenchTime_GetAverage',['../group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8',1,'bench_time.h']]], + ['benchtime_5fgetcount_5',['BenchTime_GetCount',['../group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a',1,'bench_time.h']]], + ['benchtime_5fgetlast_6',['BenchTime_GetLast',['../group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed',1,'bench_time.h']]], + ['benchtime_5fgetmax_7',['BenchTime_GetMax',['../group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e',1,'bench_time.h']]], + ['benchtime_5fgetmin_8',['BenchTime_GetMin',['../group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705',1,'bench_time.h']]], + ['benchtime_5finit_9',['BenchTime_Init',['../group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054',1,'bench_time.h']]], + ['benchtime_5fresetstats_10',['BenchTime_ResetStats',['../group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35',1,'bench_time.h']]], + ['benchtime_5fstart_11',['BenchTime_Start',['../group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349',1,'bench_time.h']]], + ['benchtime_5ft_12',['BenchTime_t',['../struct_bench_time__t.html',1,'']]], + ['benchtimechannel_5ft_13',['BenchTimeChannel_t',['../struct_bench_time_channel__t.html',1,'']]], + ['benchtimestats_5ft_14',['BenchTimeStats_t',['../struct_bench_time_stats__t.html',1,'']]], + ['bit_20access_20defines_15',['Bit access defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'']]], + ['bit_5faccess_2eh_16',['bit_access.h',['../bit__access_8h.html',1,'']]], + ['buffer_17',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]], + ['byteswap16_18',['ByteSwap16',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291',1,'mylibs_defs.h']]] ]; diff --git a/Doc/html/search/all_10.js b/Doc/html/search/all_10.js index 91de365..4476016 100644 --- a/Doc/html/search/all_10.js +++ b/Doc/html/search/all_10.js @@ -2,57 +2,60 @@ var searchData= [ ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]], ['tern_5fassert_5fusertracker_1',['tern_assert_usertracker',['../group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30',1,'trackers.h']]], - ['tim_20tools_2',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], - ['tim_5fbase_5fdisable_3',['TIM_Base_Disable',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5',1,'general_tim.h']]], - ['tim_5fbase_5finit_4',['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_5',['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_6',['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_5fdefault_7',['TIM_DEFAULT',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8',1,'general_tim.h']]], - ['tim_5fdelay_8',['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_9',['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_10',['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_11',['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_12',['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_13',['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_5fencodertypedef_14',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]], - ['tim_5fit_5fmode_15',['TIM_IT_MODE',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c',1,'general_tim.h']]], - ['tim_5fitmodetypedef_16',['TIM_ITModeTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787',1,'general_tim.h']]], - ['tim_5fmhztickbasetypedef_17',['TIM_MHzTickBaseTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800',1,'general_tim.h']]], - ['tim_5foc_5fcomparator_5finit_18',['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_19',['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']]], - ['tim_5fsettingstypedef_20',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]], - ['tim_5ftickbase_5f100ms_21',['TIM_TickBase_100MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da',1,'general_tim.h']]], - ['tim_5ftickbase_5f100us_22',['TIM_TickBase_100US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30',1,'general_tim.h']]], - ['tim_5ftickbase_5f10ms_23',['TIM_TickBase_10MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa',1,'general_tim.h']]], - ['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___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___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART 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,'']]], - ['trace_20defines_31',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], - ['trace_20defines_32',['trace 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___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], - ['trace_2eh_33',['trace.h',['../trace_8h.html',1,'']]], - ['trace_5fgpio_5freset_34',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]], - ['trace_5fgpio_5fset_35',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]], - ['trackerclear_5fall_36',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]], - ['trackerclear_5ferr_37',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]], - ['trackerclear_5fok_38',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]], - ['trackerclear_5fuser_39',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]], - ['trackerclear_5fuserall_40',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]], - ['trackerclear_5fwarn_41',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]], - ['trackercnt_5ferr_42',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]], - ['trackercnt_5fok_43',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]], - ['trackercnt_5fuser_44',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]], - ['trackercnt_5fwarn_45',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]], - ['trackerget_5ferr_46',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]], - ['trackerget_5fok_47',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]], - ['trackerget_5fuser_48',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]], - ['trackerget_5fwarn_49',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]], - ['trackers_20defines_50',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]], - ['trackers_2eh_51',['trackers.h',['../trackers_8h.html',1,'']]], - ['trackers_5fenable_52',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]], - ['trackertypedef_53',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]], - ['trackerwrite_5fuser_54',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]] + ['tick_5fperiod_2',['tick_period',['../struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd',1,'BenchTimeChannel_t']]], + ['tim_20tools_3',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], + ['tim_5fbase_5fdisable_4',['TIM_Base_Disable',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5',1,'general_tim.h']]], + ['tim_5fbase_5finit_5',['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_6',['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_7',['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_5fdefault_8',['TIM_DEFAULT',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8',1,'general_tim.h']]], + ['tim_5fdelay_9',['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_10',['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_11',['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_12',['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_13',['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_14',['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_5fencodertypedef_15',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]], + ['tim_5fit_5fmode_16',['TIM_IT_MODE',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c',1,'general_tim.h']]], + ['tim_5fitmodetypedef_17',['TIM_ITModeTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787',1,'general_tim.h']]], + ['tim_5fmhztickbasetypedef_18',['TIM_MHzTickBaseTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800',1,'general_tim.h']]], + ['tim_5foc_5fcomparator_5finit_19',['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_20',['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']]], + ['tim_5fsettingstypedef_21',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]], + ['tim_5ftickbase_5f100ms_22',['TIM_TickBase_100MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da',1,'general_tim.h']]], + ['tim_5ftickbase_5f100us_23',['TIM_TickBase_100US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30',1,'general_tim.h']]], + ['tim_5ftickbase_5f10ms_24',['TIM_TickBase_10MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa',1,'general_tim.h']]], + ['tim_5ftickbase_5f10us_25',['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_26',['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_27',['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']]], + ['time_20measurement_28',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], + ['tools_29',['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___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]], + ['tools_30',['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']]], + ['total_5fticks_31',['total_ticks',['../struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec',1,'BenchTimeStats_t']]], + ['trace_32',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]], + ['trace_20configs_33',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], + ['trace_20defines_34',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], + ['trace_20defines_35',['trace 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___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], + ['trace_2eh_36',['trace.h',['../trace_8h.html',1,'']]], + ['trace_5fgpio_5freset_37',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]], + ['trace_5fgpio_5fset_38',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]], + ['trackerclear_5fall_39',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]], + ['trackerclear_5ferr_40',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]], + ['trackerclear_5fok_41',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]], + ['trackerclear_5fuser_42',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]], + ['trackerclear_5fuserall_43',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]], + ['trackerclear_5fwarn_44',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]], + ['trackercnt_5ferr_45',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]], + ['trackercnt_5fok_46',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]], + ['trackercnt_5fuser_47',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]], + ['trackercnt_5fwarn_48',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]], + ['trackerget_5ferr_49',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]], + ['trackerget_5fok_50',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]], + ['trackerget_5fuser_51',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]], + ['trackerget_5fwarn_52',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]], + ['trackers_20defines_53',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]], + ['trackers_2eh_54',['trackers.h',['../trackers_8h.html',1,'']]], + ['trackers_5fenable_55',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]], + ['trackertypedef_56',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]], + ['trackerwrite_5fuser_57',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]] ]; diff --git a/Doc/html/search/all_2.js b/Doc/html/search/all_2.js index 0a30887..28874f5 100644 --- a/Doc/html/search/all_2.js +++ b/Doc/html/search/all_2.js @@ -1,17 +1,19 @@ var searchData= [ - ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]], - ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4',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']]], - ['clk_5fgpio_5falternagefunc_9',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]], - ['clk_5fgpiox_10',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]], - ['clk_5fpin_11',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]], - ['configs_12',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['configs_13',['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']]] + ['cand_5findex_0',['cand_index',['../struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc',1,'GenOptimizer_t']]], + ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df',1,'GenOptimizer_t']]], + ['channels_2',['channels',['../struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6',1,'BenchTime_t']]], + ['channels_20tools_3',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], + ['check_5fnull_5fptr_5f1_4',['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_5',['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_6',['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_7',['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_8',['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_9',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]], + ['clk_5fgpio_5falternagefunc_10',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]], + ['clk_5fgpiox_11',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]], + ['clk_5fpin_12',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]], + ['configs_13',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], + ['configs_14',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic 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']]], + ['count_15',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]] ]; diff --git a/Doc/html/search/all_4.js b/Doc/html/search/all_4.js index 0884da6..7efe25f 100644 --- a/Doc/html/search/all_4.js +++ b/Doc/html/search/all_4.js @@ -1,19 +1,8 @@ var searchData= [ - ['elovle_5fn_5felite_5fcandidate_0',['ELOVLE_N_ELITE_CANDIDATE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb',1,'evolve_optimizer.h']]], - ['enable_5fevolve_5foptimization_1',['ENABLE_EVOLVE_OPTIMIZATION',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47',1,'mylibs_config.h']]], - ['encoder_20tools_2',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], - ['encoder_5fdiff_3',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], - ['encoder_5fshdw_4',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]], - ['error_20handler_20defines_5',['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_6',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]], - ['evolve_20optimizer_7',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]], - ['evolve_5fmax_5fcandidates_8',['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_9',['EVOLVE_MAX_PARAMS',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee',1,'mylibs_config.h']]], - ['evolve_5fmutation_5fmax_5fpct_10',['EVOLVE_MUTATION_MAX_PCT',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc',1,'evolve_optimizer.h']]], - ['evolve_5fmutation_5fmin_5fpct_11',['EVOLVE_MUTATION_MIN_PCT',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6',1,'evolve_optimizer.h']]], - ['evolve_5foptimizer_2eh_12',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]], - ['evolveoptimizer_5finit_13',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21',1,'evolve_optimizer.h']]], - ['evolveoptimizer_5fstep_14',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef',1,'evolve_optimizer.h']]], - ['evolveoptimizer_5ft_15',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]] + ['elovle_5fn_5felite_5fcandidate_0',['ELOVLE_N_ELITE_CANDIDATE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb',1,'gen_optimizer.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,'']]] ]; diff --git a/Doc/html/search/all_6.js b/Doc/html/search/all_6.js index 8d7f470..81020f3 100644 --- a/Doc/html/search/all_6.js +++ b/Doc/html/search/all_6.js @@ -1,38 +1,49 @@ var searchData= [ - ['gen_5findex_0',['gen_index',['../struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108',1,'EvolveOptimizer_t']]], - ['gen_5fmut_1',['gen_mut',['../struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727',1,'EvolveOptimizer_t']]], - ['general_20tools_2',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], - ['general_20tools_3',['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_4',['general_gpio.c',['../general__gpio_8c.html',1,'']]], - ['general_5fgpio_2eh_5',['general_gpio.h',['../general__gpio_8h.html',1,'']]], - ['general_5fspi_2ec_6',['general_spi.c',['../general__spi_8c.html',1,'']]], - ['general_5fspi_2eh_7',['general_spi.h',['../general__spi_8h.html',1,'']]], - ['general_5ftim_2ec_8',['general_tim.c',['../general__tim_8c.html',1,'']]], - ['general_5ftim_2eh_9',['general_tim.h',['../general__tim_8h.html',1,'']]], - ['general_5fuart_2ec_10',['general_uart.c',['../general__uart_8c.html',1,'']]], - ['general_5fuart_2eh_11',['general_uart.h',['../general__uart_8h.html',1,'']]], - ['gpio_20my_5flibs_5fgpio_12',['Модуль 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,'']]], - ['gpio_20tools_13',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], - ['gpio_20trace_20defines_14',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]], - ['gpio_5fclock_5fenable_15',['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_16',['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_17',['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_18',['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_19',['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_20',['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_21',['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_22',['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_5fledstatetypedef_23',['GPIO_LEDStateTypeDef',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1',1,'general_gpio.h']]], - ['gpio_5fledtypedef_24',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]], - ['gpio_5fpin_5frx_25',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]], - ['gpio_5fpin_5fsw_26',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti1_27',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti2_28',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5ftx_29',['GPIO_PIN_TX',['../struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef',1,'UART_SettingsTypeDef']]], - ['gpio_5fread_5fswitch_30',['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_31',['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']]], - ['gpio_5fswitchtypedef_32',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]], - ['gpio_5ftrace_5fenable_33',['GPIO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b',1,'mylibs_config.h']]], - ['gpiox_34',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef::GPIOx'],['../struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f',1,'UART_SettingsTypeDef::GPIOx']]] + ['gen_5findex_0',['gen_index',['../struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c',1,'GenOptimizer_t']]], + ['gen_5fmax_5fcandidates_1',['GEN_MAX_CANDIDATES',['../group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869',1,'mylibs_config.h']]], + ['gen_5fmax_5fparams_2',['GEN_MAX_PARAMS',['../group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab',1,'mylibs_config.h']]], + ['gen_5fmut_3',['gen_mut',['../struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1',1,'GenOptimizer_t']]], + ['gen_5fmutation_5fmax_5fpct_4',['GEN_MUTATION_MAX_PCT',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd',1,'gen_optimizer.h']]], + ['gen_5fmutation_5fmin_5fpct_5',['GEN_MUTATION_MIN_PCT',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068',1,'gen_optimizer.h']]], + ['gen_5foptimization_5fenable_6',['GEN_OPTIMIZATION_ENABLE',['../group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c',1,'mylibs_config.h']]], + ['gen_5foptimizer_2eh_7',['gen_optimizer.h',['../gen__optimizer_8h.html',1,'']]], + ['general_20tools_8',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], + ['general_20tools_9',['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_10',['general_gpio.c',['../general__gpio_8c.html',1,'']]], + ['general_5fgpio_2eh_11',['general_gpio.h',['../general__gpio_8h.html',1,'']]], + ['general_5fspi_2ec_12',['general_spi.c',['../general__spi_8c.html',1,'']]], + ['general_5fspi_2eh_13',['general_spi.h',['../general__spi_8h.html',1,'']]], + ['general_5ftim_2ec_14',['general_tim.c',['../general__tim_8c.html',1,'']]], + ['general_5ftim_2eh_15',['general_tim.h',['../general__tim_8h.html',1,'']]], + ['general_5fuart_2ec_16',['general_uart.c',['../general__uart_8c.html',1,'']]], + ['general_5fuart_2eh_17',['general_uart.h',['../general__uart_8h.html',1,'']]], + ['genetic_20configs_18',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]], + ['genetic_20optimizer_19',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]], + ['genoptimizer_5finit_20',['GenOptimizer_Init',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a',1,'gen_optimizer.h']]], + ['genoptimizer_5fstep_21',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]], + ['genoptimizer_5ft_22',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]], + ['gpio_20my_5flibs_5fgpio_23',['Модуль 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,'']]], + ['gpio_20tools_24',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], + ['gpio_20trace_20defines_25',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]], + ['gpio_5fclock_5fenable_26',['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_27',['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_28',['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_29',['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_30',['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_31',['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_32',['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_33',['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_5fledstatetypedef_34',['GPIO_LEDStateTypeDef',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1',1,'general_gpio.h']]], + ['gpio_5fledtypedef_35',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]], + ['gpio_5fpin_5frx_36',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]], + ['gpio_5fpin_5fsw_37',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]], + ['gpio_5fpin_5fti1_38',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]], + ['gpio_5fpin_5fti2_39',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]], + ['gpio_5fpin_5ftx_40',['GPIO_PIN_TX',['../struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef',1,'UART_SettingsTypeDef']]], + ['gpio_5fread_5fswitch_41',['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_42',['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']]], + ['gpio_5fswitchtypedef_43',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]], + ['gpio_5ftrace_5fenable_44',['GPIO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b',1,'mylibs_config.h']]], + ['gpiox_45',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef::GPIOx'],['../struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f',1,'UART_SettingsTypeDef::GPIOx']]] ]; diff --git a/Doc/html/search/all_7.js b/Doc/html/search/all_7.js index abe2462..3fb8b1e 100644 --- a/Doc/html/search/all_7.js +++ b/Doc/html/search/all_7.js @@ -5,15 +5,16 @@ var searchData= ['handler_20defines_2',['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,'']]], ['hardfault_20trace_20defines_3',['Hardfault trace defines',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'']]], ['hardfault_5fserial_5ftrace_4',['HARDFAULT_SERIAL_TRACE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6',1,'mylibs_config.h']]], - ['hf_5fcheckrecovered_5',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]], - ['hf_5fflash_5faddr_6',['HF_FLASH_ADDR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63',1,'mylibs_config.h']]], - ['hf_5fhandlefault_7',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]], - ['hf_5fram_5fend_8',['HF_RAM_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051',1,'mylibs_config.h']]], - ['hf_5frtt_5ftag_5fbase_9',['HF_RTT_TAG_BASE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313',1,'mylibs_config.h']]], - ['hf_5frtt_5ftail_5fsize_10',['HF_RTT_TAIL_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca',1,'mylibs_config.h']]], - ['hf_5fstack_5fdump_5fwords_11',['HF_STACK_DUMP_WORDS',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b',1,'mylibs_config.h']]], - ['hf_5fstackframe_5ft_12',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]], - ['hspi_13',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]], - ['htim_14',['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']]], - ['huart_15',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]] + ['hbt_5',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]], + ['hf_5fcheckrecovered_6',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]], + ['hf_5fflash_5faddr_7',['HF_FLASH_ADDR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63',1,'mylibs_config.h']]], + ['hf_5fhandlefault_8',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]], + ['hf_5fram_5fend_9',['HF_RAM_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051',1,'mylibs_config.h']]], + ['hf_5frtt_5ftag_5fbase_10',['HF_RTT_TAG_BASE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313',1,'mylibs_config.h']]], + ['hf_5frtt_5ftail_5fsize_11',['HF_RTT_TAIL_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca',1,'mylibs_config.h']]], + ['hf_5fstack_5fdump_5fwords_12',['HF_STACK_DUMP_WORDS',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b',1,'mylibs_config.h']]], + ['hf_5fstackframe_5ft_13',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]], + ['hspi_14',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]], + ['htim_15',['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']]], + ['huart_16',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]] ]; diff --git a/Doc/html/search/all_8.js b/Doc/html/search/all_8.js index 01381de..61586fa 100644 --- a/Doc/html/search/all_8.js +++ b/Doc/html/search/all_8.js @@ -2,9 +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_5fevolve_5foptimizer_2',['INCLUDE_EVOLVE_OPTIMIZER',['../group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66',1,'mylibs_config.h']]], + ['include_5fgen_5foptimizer_2',['INCLUDE_GEN_OPTIMIZER',['../group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692',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___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines']]] + ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines']]], + ['is_5frunning_7',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]] ]; diff --git a/Doc/html/search/all_9.js b/Doc/html/search/all_9.js index 8a2f81a..959bc31 100644 --- a/Doc/html/search/all_9.js +++ b/Doc/html/search/all_9.js @@ -1,22 +1,23 @@ var searchData= [ - ['led_20tools_0',['LED tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'']]], - ['led_5factivelvl_1',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], - ['led_5fis_5fblinking_2',['LED_IS_BLINKING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb',1,'general_gpio.h']]], - ['led_5fis_5ffading_3',['LED_IS_FADING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b',1,'general_gpio.h']]], - ['led_5fis_5foff_4',['LED_IS_OFF',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae',1,'general_gpio.h']]], - ['led_5fis_5fon_5',['LED_IS_ON',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea',1,'general_gpio.h']]], - ['led_5foff_6',['LED_OFF',['../group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29',1,'general_gpio.h']]], - ['led_5fon_7',['LED_ON',['../group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25',1,'general_gpio.h']]], - ['led_5fperiod_8',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], - ['led_5fpin_9',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], - ['led_5fport_10',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], - ['led_5fpwm_5fticks_11',['LED_PWM_TICKS',['../group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023',1,'general_gpio.h']]], - ['libraries_20configs_12',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['libs_13',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], - ['local_5ftime_14',['local_time',['../group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: mylibs_config.h'],['../group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: general_gpio.h']]], - ['log_5flevel_15',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]], - ['log_5fprintf_16',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]], - ['loss_17',['loss',['../struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df',1,'EvolveOptimizer_t']]], - ['lr_18',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] + ['last_5fticks_0',['last_ticks',['../struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0',1,'BenchTimeStats_t']]], + ['led_20tools_1',['LED tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'']]], + ['led_5factivelvl_2',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], + ['led_5fis_5fblinking_3',['LED_IS_BLINKING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb',1,'general_gpio.h']]], + ['led_5fis_5ffading_4',['LED_IS_FADING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b',1,'general_gpio.h']]], + ['led_5fis_5foff_5',['LED_IS_OFF',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae',1,'general_gpio.h']]], + ['led_5fis_5fon_6',['LED_IS_ON',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea',1,'general_gpio.h']]], + ['led_5foff_7',['LED_OFF',['../group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29',1,'general_gpio.h']]], + ['led_5fon_8',['LED_ON',['../group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25',1,'general_gpio.h']]], + ['led_5fperiod_9',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], + ['led_5fpin_10',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], + ['led_5fport_11',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], + ['led_5fpwm_5fticks_12',['LED_PWM_TICKS',['../group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023',1,'general_gpio.h']]], + ['libraries_20configs_13',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]], + ['libs_14',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], + ['local_5ftime_15',['local_time',['../group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: mylibs_config.h'],['../group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: general_gpio.h']]], + ['log_5flevel_16',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]], + ['log_5fprintf_17',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]], + ['loss_18',['loss',['../struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73',1,'GenOptimizer_t']]], + ['lr_19',['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 45e0ffa..e17cff4 100644 --- a/Doc/html/search/all_a.js +++ b/Doc/html/search/all_a.js @@ -1,26 +1,29 @@ var searchData= [ - ['miso_5fgpio_5falternagefunc_0',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]], - ['miso_5fgpiox_1',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]], - ['miso_5fpin_2',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpio_5falternagefunc_3',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpiox_4',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]], - ['mosi_5fpin_5',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]], - ['msdelay_6',['msDelay',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479',1,'mylibs_defs.h']]], - ['msdelaystart_7',['msDelayStart',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25',1,'mylibs_defs.h']]], - ['msdelaywaitdone_8',['msDelayWaitDone',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518',1,'mylibs_defs.h']]], - ['msdelaywhileactive_9',['msDelayWhileActive',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85',1,'mylibs_defs.h']]], - ['mutation_5famp_10',['mutation_amp',['../struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8',1,'EvolveOptimizer_t']]], - ['my_20libs_11',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], - ['my_5flibs_5fgpio_12',['Модуль 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_5fspi_13',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], - ['my_5flibs_5ftim_14',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['my_5flibs_5fuart_15',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]], - ['my_5fprintf_16',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]], - ['mylibs_17',['MyLibs',['../index.html',1,'']]], - ['mylibs_5fconfig_2eh_18',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], - ['mylibs_5fdefines_19',['Общие утилиты (<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_20',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], - ['mylibs_5ferror_5fhandler_21',['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_22',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]] + ['max_5fticks_0',['max_ticks',['../struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c',1,'BenchTimeStats_t']]], + ['measurement_1',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], + ['min_5fticks_2',['min_ticks',['../struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8',1,'BenchTimeStats_t']]], + ['miso_5fgpio_5falternagefunc_3',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]], + ['miso_5fgpiox_4',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]], + ['miso_5fpin_5',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]], + ['mosi_5fgpio_5falternagefunc_6',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]], + ['mosi_5fgpiox_7',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]], + ['mosi_5fpin_8',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]], + ['msdelay_9',['msDelay',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479',1,'mylibs_defs.h']]], + ['msdelaystart_10',['msDelayStart',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25',1,'mylibs_defs.h']]], + ['msdelaywaitdone_11',['msDelayWaitDone',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518',1,'mylibs_defs.h']]], + ['msdelaywhileactive_12',['msDelayWhileActive',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85',1,'mylibs_defs.h']]], + ['mutation_5famp_13',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]], + ['my_20libs_14',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], + ['my_5flibs_5fgpio_15',['Модуль 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_5fspi_16',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], + ['my_5flibs_5ftim_17',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], + ['my_5flibs_5fuart_18',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]], + ['my_5fprintf_19',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]], + ['mylibs_20',['MyLibs',['../index.html',1,'']]], + ['mylibs_5fconfig_2eh_21',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], + ['mylibs_5fdefines_22',['Общие утилиты (<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_23',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], + ['mylibs_5ferror_5fhandler_24',['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_25',['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 ec18e7a..ff965e9 100644 --- a/Doc/html/search/all_b.js +++ b/Doc/html/search/all_b.js @@ -1,7 +1,7 @@ var searchData= [ - ['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']]], + ['n_5fbest_0',['n_best',['../struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9',1,'GenOptimizer_t']]], + ['n_5fcand_1',['n_cand',['../struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9',1,'GenOptimizer_t']]], + ['n_5fparams_2',['n_params',['../struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5',1,'GenOptimizer_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 fa27ef2..9094ace 100644 --- a/Doc/html/search/all_c.js +++ b/Doc/html/search/all_c.js @@ -1,5 +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,'']]], - ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]] + ['optimizer_1',['Genetic optimizer',['../group___g_e_n___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 7209e2c..77e15f2 100644 --- a/Doc/html/search/all_d.js +++ b/Doc/html/search/all_d.js @@ -1,7 +1,7 @@ var searchData= [ - ['param_5fscale_0',['PARAM_SCALE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e',1,'evolve_optimizer.h']]], - ['param_5funscale_1',['PARAM_UNSCALE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3',1,'evolve_optimizer.h']]], + ['param_5fscale_0',['PARAM_SCALE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e',1,'gen_optimizer.h']]], + ['param_5funscale_1',['PARAM_UNSCALE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3',1,'gen_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']]], diff --git a/Doc/html/search/all_f.js b/Doc/html/search/all_f.js index 103d4c4..037ff30 100644 --- a/Doc/html/search/all_f.js +++ b/Doc/html/search/all_f.js @@ -7,7 +7,7 @@ var searchData= ['serial_5ftrace_5fenable_4',['SERIAL_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6',1,'mylibs_config.h']]], ['size_5',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]], ['smasterconfig_6',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]], - ['sorted_5fidx_7',['sorted_idx',['../struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a',1,'EvolveOptimizer_t']]], + ['sorted_5fidx_7',['sorted_idx',['../struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12',1,'GenOptimizer_t']]], ['spi_20my_5flibs_5fspi_8',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], ['spi_20tools_9',['SPI Tools',['../group___m_y___l_i_b_s___s_p_i.html',1,'']]], ['spi_5fbase_5finit_10',['SPI_Base_Init',['../group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba',1,'SPI_Base_Init(SPI_SettingsTypeDef *sspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba',1,'SPI_Base_Init(SPI_SettingsTypeDef *sspi): general_spi.c']]], @@ -17,21 +17,23 @@ var searchData= ['spi_5fmspinit_14',['SPI_MspInit',['../group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac',1,'SPI_MspInit(SPI_HandleTypeDef *hspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac',1,'SPI_MspInit(SPI_HandleTypeDef *hspi): general_spi.c']]], ['spi_5fsettingstypedef_15',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]], ['sslaveconfig_16',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], - ['stability_17',['stability',['../struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c',1,'EvolveOptimizer_t']]], - ['state_18',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], - ['stickbaseprescaler_19',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], - ['stickbaseus_20',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], - ['stimahbfreqmhz_21',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], - ['stimfreqhz_22',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], - ['stimmode_23',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], - ['sw_24',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], - ['sw_5factivelvl_25',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], - ['sw_5ffilterdelay_26',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], - ['sw_5foff_27',['SW_OFF',['../group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067',1,'general_gpio.h']]], - ['sw_5fon_28',['SW_ON',['../group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9',1,'general_gpio.h']]], - ['sw_5fpin_29',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], - ['sw_5fport_30',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], - ['sw_5fprevstate_31',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]], - ['switch_20tools_32',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]], - ['swo_5ftrace_5fenable_33',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]] + ['stability_17',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]], + ['start_5ftick_18',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]], + ['state_19',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], + ['stats_20',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]], + ['stickbaseprescaler_21',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], + ['stickbaseus_22',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], + ['stimahbfreqmhz_23',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], + ['stimfreqhz_24',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], + ['stimmode_25',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], + ['sw_26',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], + ['sw_5factivelvl_27',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], + ['sw_5ffilterdelay_28',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], + ['sw_5foff_29',['SW_OFF',['../group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067',1,'general_gpio.h']]], + ['sw_5fon_30',['SW_ON',['../group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9',1,'general_gpio.h']]], + ['sw_5fpin_31',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], + ['sw_5fport_32',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], + ['sw_5fprevstate_33',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]], + ['switch_20tools_34',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]], + ['swo_5ftrace_5fenable_35',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]] ]; diff --git a/Doc/html/search/classes_0.js b/Doc/html/search/classes_0.js index e1df323..54d0c71 100644 --- a/Doc/html/search/classes_0.js +++ b/Doc/html/search/classes_0.js @@ -1,4 +1,6 @@ var searchData= [ - ['evolveoptimizer_5ft_0',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]] + ['benchtime_5ft_0',['BenchTime_t',['../struct_bench_time__t.html',1,'']]], + ['benchtimechannel_5ft_1',['BenchTimeChannel_t',['../struct_bench_time_channel__t.html',1,'']]], + ['benchtimestats_5ft_2',['BenchTimeStats_t',['../struct_bench_time_stats__t.html',1,'']]] ]; diff --git a/Doc/html/search/classes_1.js b/Doc/html/search/classes_1.js index 7f32de6..0c5d0d7 100644 --- a/Doc/html/search/classes_1.js +++ b/Doc/html/search/classes_1.js @@ -1,5 +1,6 @@ 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,'']]] + ['genoptimizer_5ft_0',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]], + ['gpio_5fledtypedef_1',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]], + ['gpio_5fswitchtypedef_2',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]] ]; diff --git a/Doc/html/search/files_0.js b/Doc/html/search/files_0.js index 317d2f4..ff4d1c6 100644 --- a/Doc/html/search/files_0.js +++ b/Doc/html/search/files_0.js @@ -1,4 +1,5 @@ var searchData= [ - ['bit_5faccess_2eh_0',['bit_access.h',['../bit__access_8h.html',1,'']]] + ['bench_5ftime_2eh_0',['bench_time.h',['../bench__time_8h.html',1,'']]], + ['bit_5faccess_2eh_1',['bit_access.h',['../bit__access_8h.html',1,'']]] ]; diff --git a/Doc/html/search/files_1.js b/Doc/html/search/files_1.js index 9050e12..7a27173 100644 --- a/Doc/html/search/files_1.js +++ b/Doc/html/search/files_1.js @@ -1,4 +1,12 @@ var searchData= [ - ['evolve_5foptimizer_2eh_0',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]] + ['gen_5foptimizer_2eh_0',['gen_optimizer.h',['../gen__optimizer_8h.html',1,'']]], + ['general_5fgpio_2ec_1',['general_gpio.c',['../general__gpio_8c.html',1,'']]], + ['general_5fgpio_2eh_2',['general_gpio.h',['../general__gpio_8h.html',1,'']]], + ['general_5fspi_2ec_3',['general_spi.c',['../general__spi_8c.html',1,'']]], + ['general_5fspi_2eh_4',['general_spi.h',['../general__spi_8h.html',1,'']]], + ['general_5ftim_2ec_5',['general_tim.c',['../general__tim_8c.html',1,'']]], + ['general_5ftim_2eh_6',['general_tim.h',['../general__tim_8h.html',1,'']]], + ['general_5fuart_2ec_7',['general_uart.c',['../general__uart_8c.html',1,'']]], + ['general_5fuart_2eh_8',['general_uart.h',['../general__uart_8h.html',1,'']]] ]; diff --git a/Doc/html/search/files_2.js b/Doc/html/search/files_2.js index 045601b..3a61f58 100644 --- a/Doc/html/search/files_2.js +++ b/Doc/html/search/files_2.js @@ -1,11 +1,6 @@ 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_5fspi_2ec_2',['general_spi.c',['../general__spi_8c.html',1,'']]], - ['general_5fspi_2eh_3',['general_spi.h',['../general__spi_8h.html',1,'']]], - ['general_5ftim_2ec_4',['general_tim.c',['../general__tim_8c.html',1,'']]], - ['general_5ftim_2eh_5',['general_tim.h',['../general__tim_8h.html',1,'']]], - ['general_5fuart_2ec_6',['general_uart.c',['../general__uart_8c.html',1,'']]], - ['general_5fuart_2eh_7',['general_uart.h',['../general__uart_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_3.js b/Doc/html/search/files_3.js index 3a61f58..f744967 100644 --- a/Doc/html/search/files_3.js +++ b/Doc/html/search/files_3.js @@ -1,6 +1,5 @@ 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,'']]] + ['trace_2eh_0',['trace.h',['../trace_8h.html',1,'']]], + ['trackers_2eh_1',['trackers.h',['../trackers_8h.html',1,'']]] ]; diff --git a/Doc/html/search/files_4.js b/Doc/html/search/files_4.js deleted file mode 100644 index f744967..0000000 --- a/Doc/html/search/files_4.js +++ /dev/null @@ -1,5 +0,0 @@ -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 32253ba..7ef7b4f 100644 --- a/Doc/html/search/functions_0.js +++ b/Doc/html/search/functions_0.js @@ -1,5 +1,12 @@ var searchData= [ - ['evolveoptimizer_5finit_0',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21',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#gaef44a1f3298514569cc2b396a92101ef',1,'evolve_optimizer.h']]] + ['benchtime_5fend_0',['BenchTime_End',['../group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439',1,'bench_time.h']]], + ['benchtime_5fgetaverage_1',['BenchTime_GetAverage',['../group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8',1,'bench_time.h']]], + ['benchtime_5fgetcount_2',['BenchTime_GetCount',['../group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a',1,'bench_time.h']]], + ['benchtime_5fgetlast_3',['BenchTime_GetLast',['../group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed',1,'bench_time.h']]], + ['benchtime_5fgetmax_4',['BenchTime_GetMax',['../group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e',1,'bench_time.h']]], + ['benchtime_5fgetmin_5',['BenchTime_GetMin',['../group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705',1,'bench_time.h']]], + ['benchtime_5finit_6',['BenchTime_Init',['../group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054',1,'bench_time.h']]], + ['benchtime_5fresetstats_7',['BenchTime_ResetStats',['../group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35',1,'bench_time.h']]], + ['benchtime_5fstart_8',['BenchTime_Start',['../group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349',1,'bench_time.h']]] ]; diff --git a/Doc/html/search/functions_1.js b/Doc/html/search/functions_1.js index a564d7b..3e028e5 100644 --- a/Doc/html/search/functions_1.js +++ b/Doc/html/search/functions_1.js @@ -1,13 +1,15 @@ 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']]] + ['genoptimizer_5finit_0',['GenOptimizer_Init',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a',1,'gen_optimizer.h']]], + ['genoptimizer_5fstep_1',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]], + ['gpio_5fclock_5fenable_2',['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_3',['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_4',['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_5',['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_6',['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_7',['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_8',['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_9',['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_10',['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_11',['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/groups_2.js b/Doc/html/search/groups_2.js index e1a626d..1f5d168 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___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']]] + ['configs_2',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic 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_4.js b/Doc/html/search/groups_4.js index ca0406b..d2fc234 100644 --- a/Doc/html/search/groups_4.js +++ b/Doc/html/search/groups_4.js @@ -1,7 +1,5 @@ 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,'']]], - ['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,'']]] + ['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,'']]] ]; diff --git a/Doc/html/search/groups_6.js b/Doc/html/search/groups_6.js index 96772f9..451771a 100644 --- a/Doc/html/search/groups_6.js +++ b/Doc/html/search/groups_6.js @@ -2,6 +2,8 @@ var searchData= [ ['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,'']]] + ['genetic_20configs_2',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]], + ['genetic_20optimizer_3',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]], + ['gpio_20tools_4',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], + ['gpio_20trace_20defines_5',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]] ]; diff --git a/Doc/html/search/groups_a.js b/Doc/html/search/groups_a.js index 44a62b4..b997f53 100644 --- a/Doc/html/search/groups_a.js +++ b/Doc/html/search/groups_a.js @@ -1,4 +1,5 @@ var searchData= [ - ['my_20libs_0',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]] + ['measurement_0',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], + ['my_20libs_1',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]] ]; diff --git a/Doc/html/search/groups_b.js b/Doc/html/search/groups_b.js index fa27ef2..9094ace 100644 --- a/Doc/html/search/groups_b.js +++ b/Doc/html/search/groups_b.js @@ -1,5 +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,'']]], - ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]] + ['optimizer_1',['Genetic optimizer',['../group___g_e_n___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 0864006..dcdcef1 100644 --- a/Doc/html/search/groups_f.js +++ b/Doc/html/search/groups_f.js @@ -1,10 +1,11 @@ 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___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___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART 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,'']]], - ['trace_20defines_5',['trace 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___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], - ['trackers_20defines_6',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]] + ['time_20measurement_1',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], + ['tools_2',['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___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]], + ['tools_3',['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_4',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], + ['trace_20defines_5',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], + ['trace_20defines_6',['trace 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___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], + ['trackers_20defines_7',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]] ]; diff --git a/Doc/html/search/searchdata.js b/Doc/html/search/searchdata.js index 7f3006a..457d6e9 100644 --- a/Doc/html/search/searchdata.js +++ b/Doc/html/search/searchdata.js @@ -1,10 +1,10 @@ var indexSectionsWithContent = { 0: "abcdefghilmnoprstuвимопсту", - 1: "eghrstu", - 2: "begmt", - 3: "eghrstu", - 4: "cdeghlmnprst", + 1: "bghrstu", + 2: "bgmt", + 3: "bghrstu", + 4: "cdeghilmnprst", 5: "gt", 6: "lt", 7: "abcdefghilmoprstu", diff --git a/Doc/html/search/variables_0.js b/Doc/html/search/variables_0.js index 91d9d13..d01d6ca 100644 --- a/Doc/html/search/variables_0.js +++ b/Doc/html/search/variables_0.js @@ -1,8 +1,10 @@ var searchData= [ - ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]], - ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4',1,'EvolveOptimizer_t']]], - ['clk_5fgpio_5falternagefunc_2',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]], - ['clk_5fgpiox_3',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]], - ['clk_5fpin_4',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]] + ['cand_5findex_0',['cand_index',['../struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc',1,'GenOptimizer_t']]], + ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df',1,'GenOptimizer_t']]], + ['channels_2',['channels',['../struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6',1,'BenchTime_t']]], + ['clk_5fgpio_5falternagefunc_3',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]], + ['clk_5fgpiox_4',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]], + ['clk_5fpin_5',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]], + ['count_6',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]] ]; diff --git a/Doc/html/search/variables_3.js b/Doc/html/search/variables_3.js index 3e4add5..aff98e3 100644 --- a/Doc/html/search/variables_3.js +++ b/Doc/html/search/variables_3.js @@ -1,7 +1,7 @@ var searchData= [ - ['gen_5findex_0',['gen_index',['../struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108',1,'EvolveOptimizer_t']]], - ['gen_5fmut_1',['gen_mut',['../struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727',1,'EvolveOptimizer_t']]], + ['gen_5findex_0',['gen_index',['../struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c',1,'GenOptimizer_t']]], + ['gen_5fmut_1',['gen_mut',['../struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1',1,'GenOptimizer_t']]], ['gpio_5fpin_5frx_2',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]], ['gpio_5fpin_5fsw_3',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]], ['gpio_5fpin_5fti1_4',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]], diff --git a/Doc/html/search/variables_4.js b/Doc/html/search/variables_4.js index 1d4c0a0..182e697 100644 --- a/Doc/html/search/variables_4.js +++ b/Doc/html/search/variables_4.js @@ -1,6 +1,7 @@ var searchData= [ - ['hspi_0',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]], - ['htim_1',['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']]], - ['huart_2',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]] + ['hbt_0',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]], + ['hspi_1',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]], + ['htim_2',['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']]], + ['huart_3',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]] ]; diff --git a/Doc/html/search/variables_5.js b/Doc/html/search/variables_5.js index 6a97596..3cfd1f9 100644 --- a/Doc/html/search/variables_5.js +++ b/Doc/html/search/variables_5.js @@ -1,9 +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']]], - ['loss_4',['loss',['../struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df',1,'EvolveOptimizer_t']]], - ['lr_5',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] + ['is_5frunning_0',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]] ]; diff --git a/Doc/html/search/variables_6.js b/Doc/html/search/variables_6.js index bd7bed0..c8e17d1 100644 --- a/Doc/html/search/variables_6.js +++ b/Doc/html/search/variables_6.js @@ -1,10 +1,10 @@ var searchData= [ - ['miso_5fgpio_5falternagefunc_0',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]], - ['miso_5fgpiox_1',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]], - ['miso_5fpin_2',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpio_5falternagefunc_3',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpiox_4',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]], - ['mosi_5fpin_5',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]], - ['mutation_5famp_6',['mutation_amp',['../struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8',1,'EvolveOptimizer_t']]] + ['last_5fticks_0',['last_ticks',['../struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0',1,'BenchTimeStats_t']]], + ['led_5factivelvl_1',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], + ['led_5fperiod_2',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], + ['led_5fpin_3',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], + ['led_5fport_4',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], + ['loss_5',['loss',['../struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73',1,'GenOptimizer_t']]], + ['lr_6',['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 0e355de..eac5a24 100644 --- a/Doc/html/search/variables_7.js +++ b/Doc/html/search/variables_7.js @@ -1,6 +1,12 @@ var searchData= [ - ['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']]] + ['max_5fticks_0',['max_ticks',['../struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c',1,'BenchTimeStats_t']]], + ['min_5fticks_1',['min_ticks',['../struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8',1,'BenchTimeStats_t']]], + ['miso_5fgpio_5falternagefunc_2',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]], + ['miso_5fgpiox_3',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]], + ['miso_5fpin_4',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]], + ['mosi_5fgpio_5falternagefunc_5',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]], + ['mosi_5fgpiox_6',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]], + ['mosi_5fpin_7',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]], + ['mutation_5famp_8',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_8.js b/Doc/html/search/variables_8.js index 7d04971..88c43fd 100644 --- a/Doc/html/search/variables_8.js +++ b/Doc/html/search/variables_8.js @@ -1,5 +1,6 @@ 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']]] + ['n_5fbest_0',['n_best',['../struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9',1,'GenOptimizer_t']]], + ['n_5fcand_1',['n_cand',['../struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9',1,'GenOptimizer_t']]], + ['n_5fparams_2',['n_params',['../struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5',1,'GenOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_9.js b/Doc/html/search/variables_9.js index 29cfada..7d04971 100644 --- a/Doc/html/search/variables_9.js +++ b/Doc/html/search/variables_9.js @@ -1,8 +1,5 @@ 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']]] + ['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_a.js b/Doc/html/search/variables_a.js index e291301..29cfada 100644 --- a/Doc/html/search/variables_a.js +++ b/Doc/html/search/variables_a.js @@ -1,23 +1,8 @@ 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']]], - ['sorted_5fidx_5',['sorted_idx',['../struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a',1,'EvolveOptimizer_t']]], - ['sslaveconfig_6',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], - ['stability_7',['stability',['../struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c',1,'EvolveOptimizer_t']]], - ['state_8',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], - ['stickbaseprescaler_9',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], - ['stickbaseus_10',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], - ['stimahbfreqmhz_11',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], - ['stimfreqhz_12',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], - ['stimmode_13',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], - ['sw_14',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], - ['sw_5factivelvl_15',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], - ['sw_5ffilterdelay_16',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], - ['sw_5fpin_17',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], - ['sw_5fport_18',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], - ['sw_5fprevstate_19',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]] + ['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_b.js b/Doc/html/search/variables_b.js index 24558b0..928694e 100644 --- a/Doc/html/search/variables_b.js +++ b/Doc/html/search/variables_b.js @@ -1,4 +1,25 @@ var searchData= [ - ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]] + ['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']]], + ['sorted_5fidx_5',['sorted_idx',['../struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12',1,'GenOptimizer_t']]], + ['sslaveconfig_6',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], + ['stability_7',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]], + ['start_5ftick_8',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]], + ['state_9',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], + ['stats_10',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]], + ['stickbaseprescaler_11',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], + ['stickbaseus_12',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], + ['stimahbfreqmhz_13',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], + ['stimfreqhz_14',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], + ['stimmode_15',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], + ['sw_16',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], + ['sw_5factivelvl_17',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], + ['sw_5ffilterdelay_18',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], + ['sw_5fpin_19',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], + ['sw_5fport_20',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], + ['sw_5fprevstate_21',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]] ]; diff --git a/Doc/html/search/variables_c.js b/Doc/html/search/variables_c.js new file mode 100644 index 0000000..f83ad97 --- /dev/null +++ b/Doc/html/search/variables_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]], + ['tick_5fperiod_1',['tick_period',['../struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd',1,'BenchTimeChannel_t']]], + ['total_5fticks_2',['total_ticks',['../struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec',1,'BenchTimeStats_t']]] +]; diff --git a/Doc/html/struct_bench_time__t-members.html b/Doc/html/struct_bench_time__t-members.html new file mode 100644 index 0000000..434af22 --- /dev/null +++ b/Doc/html/struct_bench_time__t-members.html @@ -0,0 +1,117 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BenchTime_t Member List
    +
    +
    + +

    This is the complete list of members for BenchTime_t, including all inherited members.

    + + +
    channelsBenchTime_t
    +
    +
    + + + + diff --git a/Doc/html/struct_bench_time__t.html b/Doc/html/struct_bench_time__t.html new file mode 100644 index 0000000..440831d --- /dev/null +++ b/Doc/html/struct_bench_time__t.html @@ -0,0 +1,171 @@ + + + + + + + +MyLibs: BenchTime_t Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BenchTime_t Struct Reference
    +
    +
    + +

    Основная структура менеджера измерений + More...

    + +

    #include <bench_time.h>

    +
    Collaboration diagram for BenchTime_t:
    +
    +
    + + + + + +

    +Public Attributes

    BenchTimeChannel_t channels [16]
     Каналы измерения
    +

    Detailed Description

    +

    Основная структура менеджера измерений

    + +

    Definition at line 102 of file bench_time.h.

    +

    Member Data Documentation

    + +

    ◆ channels

    + +
    +
    + + + + +
    BenchTimeChannel_t BenchTime_t::channels[16]
    +
    + +

    Каналы измерения

    + +

    Definition at line 103 of file bench_time.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • +
    +
    +
    + +
    + + + + diff --git a/Doc/html/struct_bench_time__t.js b/Doc/html/struct_bench_time__t.js new file mode 100644 index 0000000..7f4e613 --- /dev/null +++ b/Doc/html/struct_bench_time__t.js @@ -0,0 +1,4 @@ +var struct_bench_time__t = +[ + [ "channels", "struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6", null ] +]; \ No newline at end of file diff --git a/Doc/html/struct_bench_time__t__coll__graph.map b/Doc/html/struct_bench_time__t__coll__graph.map new file mode 100644 index 0000000..5b2f5df --- /dev/null +++ b/Doc/html/struct_bench_time__t__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Doc/html/struct_bench_time__t__coll__graph.md5 b/Doc/html/struct_bench_time__t__coll__graph.md5 new file mode 100644 index 0000000..cb61ea0 --- /dev/null +++ b/Doc/html/struct_bench_time__t__coll__graph.md5 @@ -0,0 +1 @@ +38d4100ea738d751cba8e97cbba534f5 \ No newline at end of file diff --git a/Doc/html/struct_bench_time__t__coll__graph.png b/Doc/html/struct_bench_time__t__coll__graph.png new file mode 100644 index 0000000..3d24b09 Binary files /dev/null and b/Doc/html/struct_bench_time__t__coll__graph.png differ diff --git a/Doc/html/struct_bench_time_channel__t-members.html b/Doc/html/struct_bench_time_channel__t-members.html new file mode 100644 index 0000000..9995d01 --- /dev/null +++ b/Doc/html/struct_bench_time_channel__t-members.html @@ -0,0 +1,120 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BenchTimeChannel_t Member List
    +
    +
    + +

    This is the complete list of members for BenchTimeChannel_t, including all inherited members.

    + + + + + +
    is_runningBenchTimeChannel_t
    start_tickBenchTimeChannel_t
    statsBenchTimeChannel_t
    tick_periodBenchTimeChannel_t
    +
    +
    + + + + diff --git a/Doc/html/struct_bench_time_channel__t.html b/Doc/html/struct_bench_time_channel__t.html new file mode 100644 index 0000000..09d2745 --- /dev/null +++ b/Doc/html/struct_bench_time_channel__t.html @@ -0,0 +1,229 @@ + + + + + + + +MyLibs: BenchTimeChannel_t Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BenchTimeChannel_t Struct Reference
    +
    +
    + +

    Структура канала измерения + More...

    + +

    #include <bench_time.h>

    +
    Collaboration diagram for BenchTimeChannel_t:
    +
    +
    + + + + + + + + + + + +

    +Public Attributes

    uint32_t start_tick
     Время старта в тиках
    uint32_t tick_period
     Период тиков для переполнения
    uint32_t is_running
     Флаг активного измерения
    BenchTimeStats_t stats
     Статистика измерений
    +

    Detailed Description

    +

    Структура канала измерения

    + +

    Definition at line 92 of file bench_time.h.

    +

    Member Data Documentation

    + +

    ◆ start_tick

    + +
    +
    + + + + +
    uint32_t BenchTimeChannel_t::start_tick
    +
    + +

    Время старта в тиках

    + +

    Definition at line 93 of file bench_time.h.

    + +
    +
    + +

    ◆ tick_period

    + +
    +
    + + + + +
    uint32_t BenchTimeChannel_t::tick_period
    +
    + +

    Период тиков для переполнения

    + +

    Definition at line 94 of file bench_time.h.

    + +
    +
    + +

    ◆ is_running

    + +
    +
    + + + + +
    uint32_t BenchTimeChannel_t::is_running
    +
    + +

    Флаг активного измерения

    + +

    Definition at line 95 of file bench_time.h.

    + +
    +
    + +

    ◆ stats

    + +
    +
    + + + + +
    BenchTimeStats_t BenchTimeChannel_t::stats
    +
    + +

    Статистика измерений

    + +

    Definition at line 96 of file bench_time.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • +
    +
    +
    + +
    + + + + diff --git a/Doc/html/struct_bench_time_channel__t.js b/Doc/html/struct_bench_time_channel__t.js new file mode 100644 index 0000000..ec6b79e --- /dev/null +++ b/Doc/html/struct_bench_time_channel__t.js @@ -0,0 +1,7 @@ +var struct_bench_time_channel__t = +[ + [ "start_tick", "struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928", null ], + [ "tick_period", "struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd", null ], + [ "is_running", "struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9", null ], + [ "stats", "struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c", null ] +]; \ No newline at end of file diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.map b/Doc/html/struct_bench_time_channel__t__coll__graph.map new file mode 100644 index 0000000..64ddd1a --- /dev/null +++ b/Doc/html/struct_bench_time_channel__t__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.md5 b/Doc/html/struct_bench_time_channel__t__coll__graph.md5 new file mode 100644 index 0000000..abd7684 --- /dev/null +++ b/Doc/html/struct_bench_time_channel__t__coll__graph.md5 @@ -0,0 +1 @@ +5f298be6c8f367b71f1703e38d9f38a3 \ No newline at end of file diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.png b/Doc/html/struct_bench_time_channel__t__coll__graph.png new file mode 100644 index 0000000..ae2c4a6 Binary files /dev/null and b/Doc/html/struct_bench_time_channel__t__coll__graph.png differ diff --git a/Doc/html/struct_bench_time_stats__t-members.html b/Doc/html/struct_bench_time_stats__t-members.html new file mode 100644 index 0000000..2b179d6 --- /dev/null +++ b/Doc/html/struct_bench_time_stats__t-members.html @@ -0,0 +1,121 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BenchTimeStats_t Member List
    +
    + +
    +
    + + + + diff --git a/Doc/html/struct_bench_time_stats__t.html b/Doc/html/struct_bench_time_stats__t.html new file mode 100644 index 0000000..7df43c4 --- /dev/null +++ b/Doc/html/struct_bench_time_stats__t.html @@ -0,0 +1,238 @@ + + + + + + + +MyLibs: BenchTimeStats_t Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BenchTimeStats_t Struct Reference
    +
    +
    + +

    Структура статистики измерений + More...

    + +

    #include <bench_time.h>

    + + + + + + + + + + + + +

    +Public Attributes

    uint32_t min_ticks
     Минимальное время в тиках
    uint32_t max_ticks
     Максимальное время в тиках
    uint32_t total_ticks
     Суммарное время в тиках
    uint32_t count
     Количество измерений
    uint32_t last_ticks
     Последнее измеренное время
    +

    Detailed Description

    +

    Структура статистики измерений

    + +

    Definition at line 81 of file bench_time.h.

    +

    Member Data Documentation

    + +

    ◆ min_ticks

    + +
    +
    + + + + +
    uint32_t BenchTimeStats_t::min_ticks
    +
    + +

    Минимальное время в тиках

    + +

    Definition at line 82 of file bench_time.h.

    + +
    +
    + +

    ◆ max_ticks

    + +
    +
    + + + + +
    uint32_t BenchTimeStats_t::max_ticks
    +
    + +

    Максимальное время в тиках

    + +

    Definition at line 83 of file bench_time.h.

    + +
    +
    + +

    ◆ total_ticks

    + +
    +
    + + + + +
    uint32_t BenchTimeStats_t::total_ticks
    +
    + +

    Суммарное время в тиках

    + +

    Definition at line 84 of file bench_time.h.

    + +
    +
    + +

    ◆ count

    + +
    +
    + + + + +
    uint32_t BenchTimeStats_t::count
    +
    + +

    Количество измерений

    + +

    Definition at line 85 of file bench_time.h.

    + +
    +
    + +

    ◆ last_ticks

    + +
    +
    + + + + +
    uint32_t BenchTimeStats_t::last_ticks
    +
    + +

    Последнее измеренное время

    + +

    Definition at line 86 of file bench_time.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • +
    +
    +
    + +
    + + + + diff --git a/Doc/html/struct_bench_time_stats__t.js b/Doc/html/struct_bench_time_stats__t.js new file mode 100644 index 0000000..20c1e62 --- /dev/null +++ b/Doc/html/struct_bench_time_stats__t.js @@ -0,0 +1,8 @@ +var struct_bench_time_stats__t = +[ + [ "min_ticks", "struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8", null ], + [ "max_ticks", "struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c", null ], + [ "total_ticks", "struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec", null ], + [ "count", "struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71", null ], + [ "last_ticks", "struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0", null ] +]; \ No newline at end of file diff --git a/Doc/html/struct_evolve_optimizer__t.html b/Doc/html/struct_evolve_optimizer__t.html deleted file mode 100644 index 12ac0cd..0000000 --- a/Doc/html/struct_evolve_optimizer__t.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - -MyLibs: EvolveOptimizer_t Struct Reference - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    EvolveOptimizer_t Struct Reference
    -
    -
    - -

    Структура эволюционного оптимизатора - More...

    - -

    #include <evolve_optimizer.h>

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    float stability
     Коэффициент насколько стабильная популяция (0..1)(n_cand)
    uint16_t n_params
     Количество параметров
    uint16_t n_cand
     Количество кандидатов в популяции
    uint16_t n_best
     Количество лучших, усредняемых
    float mutation_amp
     Амплитуда мутации (0..1)
    uint16_t cand_index
     Индекс кандидата для обработки
    uint16_t gen_index
     Индекс популяции
    float gen_mut
     Амплитуда мутации у текущей популяции
    float loss [100]
     Loss для каждого кандидата
    float candidates [100][20]
     Параметры кандидатов
    uint16_t sorted_idx [100]
     Индексы отсортированных кандидатов
    -

    Detailed Description

    -

    Структура эволюционного оптимизатора

    - -

    Definition at line 102 of file evolve_optimizer.h.

    -

    Member Data Documentation

    - -

    ◆ stability

    - -
    -
    - - - - -
    float EvolveOptimizer_t::stability
    -
    - -

    Коэффициент насколько стабильная популяция (0..1)(n_cand)

    - -

    Definition at line 103 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ n_params

    - -
    -
    - - - - -
    uint16_t EvolveOptimizer_t::n_params
    -
    - -

    Количество параметров

    - -

    Definition at line 105 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ n_cand

    - -
    -
    - - - - -
    uint16_t EvolveOptimizer_t::n_cand
    -
    - -

    Количество кандидатов в популяции

    - -

    Definition at line 106 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ n_best

    - -
    -
    - - - - -
    uint16_t EvolveOptimizer_t::n_best
    -
    - -

    Количество лучших, усредняемых

    - -

    Definition at line 107 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ mutation_amp

    - -
    -
    - - - - -
    float EvolveOptimizer_t::mutation_amp
    -
    - -

    Амплитуда мутации (0..1)

    - -

    Definition at line 108 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ cand_index

    - -
    -
    - - - - -
    uint16_t EvolveOptimizer_t::cand_index
    -
    - -

    Индекс кандидата для обработки

    - -

    Definition at line 110 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ gen_index

    - -
    -
    - - - - -
    uint16_t EvolveOptimizer_t::gen_index
    -
    - -

    Индекс популяции

    - -

    Definition at line 111 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ gen_mut

    - -
    -
    - - - - -
    float EvolveOptimizer_t::gen_mut
    -
    - -

    Амплитуда мутации у текущей популяции

    - -

    Definition at line 114 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ loss

    - -
    -
    - - - - -
    float EvolveOptimizer_t::loss[100]
    -
    - -

    Loss для каждого кандидата

    - -

    Definition at line 116 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ candidates

    - -
    -
    - - - - -
    float EvolveOptimizer_t::candidates[100][20]
    -
    - -

    Параметры кандидатов

    - -

    Definition at line 117 of file evolve_optimizer.h.

    - -
    -
    - -

    ◆ sorted_idx

    - -
    -
    - - - - -
    uint16_t EvolveOptimizer_t::sorted_idx[100]
    -
    - -

    Индексы отсортированных кандидатов

    - -

    Definition at line 118 of file evolve_optimizer.h.

    - -
    -
    -
    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 deleted file mode 100644 index 588d42a..0000000 --- a/Doc/html/struct_evolve_optimizer__t.js +++ /dev/null @@ -1,14 +0,0 @@ -var struct_evolve_optimizer__t = -[ - [ "stability", "struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c", null ], - [ "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 ], - [ "mutation_amp", "struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8", null ], - [ "cand_index", "struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae", null ], - [ "gen_index", "struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108", null ], - [ "gen_mut", "struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727", null ], - [ "loss", "struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df", null ], - [ "candidates", "struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4", null ], - [ "sorted_idx", "struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a", null ] -]; \ No newline at end of file diff --git a/Doc/html/struct_evolve_optimizer__t-members.html b/Doc/html/struct_gen_optimizer__t-members.html similarity index 61% rename from Doc/html/struct_evolve_optimizer__t-members.html rename to Doc/html/struct_gen_optimizer__t-members.html index dbd3cfc..df5e548 100644 --- a/Doc/html/struct_evolve_optimizer__t-members.html +++ b/Doc/html/struct_gen_optimizer__t-members.html @@ -71,7 +71,7 @@ $(function() {
    @@ -97,23 +97,23 @@ $(function(){initNavTree('struct_evolve_optimizer__t.html','',''); });
    -
    EvolveOptimizer_t Member List
    +
    GenOptimizer_t Member List
    diff --git a/Doc/html/struct_gen_optimizer__t.html b/Doc/html/struct_gen_optimizer__t.html new file mode 100644 index 0000000..2ef2f85 --- /dev/null +++ b/Doc/html/struct_gen_optimizer__t.html @@ -0,0 +1,358 @@ + + + + + + + +MyLibs: GenOptimizer_t Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    GenOptimizer_t Struct Reference
    +
    +
    + +

    Структура эволюционного оптимизатора + More...

    + +

    #include <gen_optimizer.h>

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    float stability
     Коэффициент насколько стабильная популяция (0..1)(n_cand)
    uint16_t n_params
     Количество параметров
    uint16_t n_cand
     Количество кандидатов в популяции
    uint16_t n_best
     Количество лучших, усредняемых
    float mutation_amp
     Амплитуда мутации (0..1)
    uint16_t cand_index
     Индекс текущего кандидата
    uint16_t gen_index
     Индекс популяции
    float gen_mut
     Амплитуда мутации у текущей популяции
    float loss [100]
     Loss для каждого кандидата
    float candidates [100][20]
     Параметры кандидатов
    uint16_t sorted_idx [100]
     Индексы отсортированных кандидатов
    +

    Detailed Description

    +

    Структура эволюционного оптимизатора

    + +

    Definition at line 102 of file gen_optimizer.h.

    +

    Member Data Documentation

    + +

    ◆ stability

    + +
    +
    + + + + +
    float GenOptimizer_t::stability
    +
    + +

    Коэффициент насколько стабильная популяция (0..1)(n_cand)

    + +

    Definition at line 103 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ n_params

    + +
    +
    + + + + +
    uint16_t GenOptimizer_t::n_params
    +
    + +

    Количество параметров

    + +

    Definition at line 105 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ n_cand

    + +
    +
    + + + + +
    uint16_t GenOptimizer_t::n_cand
    +
    + +

    Количество кандидатов в популяции

    + +

    Definition at line 106 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ n_best

    + +
    +
    + + + + +
    uint16_t GenOptimizer_t::n_best
    +
    + +

    Количество лучших, усредняемых

    + +

    Definition at line 107 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ mutation_amp

    + +
    +
    + + + + +
    float GenOptimizer_t::mutation_amp
    +
    + +

    Амплитуда мутации (0..1)

    + +

    Definition at line 108 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ cand_index

    + +
    +
    + + + + +
    uint16_t GenOptimizer_t::cand_index
    +
    + +

    Индекс текущего кандидата

    + +

    Definition at line 110 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ gen_index

    + +
    +
    + + + + +
    uint16_t GenOptimizer_t::gen_index
    +
    + +

    Индекс популяции

    + +

    Definition at line 111 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ gen_mut

    + +
    +
    + + + + +
    float GenOptimizer_t::gen_mut
    +
    + +

    Амплитуда мутации у текущей популяции

    + +

    Definition at line 114 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ loss

    + +
    +
    + + + + +
    float GenOptimizer_t::loss[100]
    +
    + +

    Loss для каждого кандидата

    + +

    Definition at line 116 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ candidates

    + +
    +
    + + + + +
    float GenOptimizer_t::candidates[100][20]
    +
    + +

    Параметры кандидатов

    + +

    Definition at line 117 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ sorted_idx

    + +
    +
    + + + + +
    uint16_t GenOptimizer_t::sorted_idx[100]
    +
    + +

    Индексы отсортированных кандидатов

    + +

    Definition at line 118 of file gen_optimizer.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + +
    + + + + diff --git a/Doc/html/struct_gen_optimizer__t.js b/Doc/html/struct_gen_optimizer__t.js new file mode 100644 index 0000000..1a11730 --- /dev/null +++ b/Doc/html/struct_gen_optimizer__t.js @@ -0,0 +1,14 @@ +var struct_gen_optimizer__t = +[ + [ "stability", "struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192", null ], + [ "n_params", "struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5", null ], + [ "n_cand", "struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9", null ], + [ "n_best", "struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9", null ], + [ "mutation_amp", "struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c", null ], + [ "cand_index", "struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc", null ], + [ "gen_index", "struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c", null ], + [ "gen_mut", "struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1", null ], + [ "loss", "struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73", null ], + [ "candidates", "struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df", null ], + [ "sorted_idx", "struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12", null ] +]; \ No newline at end of file diff --git a/Doc/html/topics.html b/Doc/html/topics.html index 8fdffb3..121e67f 100644 --- a/Doc/html/topics.html +++ b/Doc/html/topics.html @@ -105,36 +105,37 @@ $(function(){initNavTree('topics.html','',''); });  My LibsВсе используемые MyLibs библиотеки  ConfigsКонфигурации для библиотек MyLibs  Trace configsКонфигурация трекеров и трассировки - Evolve configsКонфигурация однослойного персептрона и алгоритма обучения + Genetic 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 - Init definesНастройка состояний кнопок и количества тиков в периоде ШИМ - Switch toolsФункции для работы с GPIO, как с кнопкой - LED toolsФункции для работы с GPIO, для управления светодиодом - SPI ToolsФункции и макросы для удобной работы с SPI - Init definesНастройка SPI - TIM ToolsФункции и макросы для удобной работы с TIM - General toolsФункции для базовой инициализации таймеров - Init definesНастройка таймеров - Delay toolsФункции для формирования задержек с помощью таймеров - PWM/OC Channels toolsФункции для инициализации базовых функций каналов таймера - Encoder toolsФункции для считывания энкодера - UART ToolsФункции и макросы для удобной работы с UART - Init definesНастройка UART + Time measurementБиблиотека для измерения времени/тиков между событиями + Genetic 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 + Init definesНастройка состояний кнопок и количества тиков в периоде ШИМ + Switch toolsФункции для работы с GPIO, как с кнопкой + LED toolsФункции для работы с GPIO, для управления светодиодом + SPI ToolsФункции и макросы для удобной работы с SPI + Init definesНастройка SPI + TIM ToolsФункции и макросы для удобной работы с TIM + General toolsФункции для базовой инициализации таймеров + Init definesНастройка таймеров + Delay toolsФункции для формирования задержек с помощью таймеров + PWM/OC Channels toolsФункции для инициализации базовых функций каналов таймера + Encoder toolsФункции для считывания энкодера + UART ToolsФункции и макросы для удобной работы с UART + Init definesНастройка UART diff --git a/Doc/html/trace_8h.html b/Doc/html/trace_8h.html index b8f5a47..7ef9cc8 100644 --- a/Doc/html/trace_8h.html +++ b/Doc/html/trace_8h.html @@ -171,6 +171,12 @@ Functions  Проверка и вывод последнего HardFault-трейса из Flash.
    __STATIC_FORCEINLINE void HF_HandleFault (void)  Обработчик HardFault.
    + + + + +

    +Variables

    static HF_StackFrame_tstack_frame
    static uint32_t stack_dump [32]
    static void * ret_adr [10] = {0}

    Detailed Description

    Заголочный файл для работы с трассировкой.

    diff --git a/Doc/latex/annotated.tex b/Doc/latex/annotated.tex index 7c59474..428a296 100644 --- a/Doc/latex/annotated.tex +++ b/Doc/latex/annotated.tex @@ -1,6 +1,9 @@ \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_bench_time__t}{Bench\+Time\+\_\+t}} \\*Основная структура менеджера измерений }{\pageref{struct_bench_time__t}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} \\*Структура канала измерения }{\pageref{struct_bench_time_channel__t}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} \\*Структура статистики измерений }{\pageref{struct_bench_time_stats__t}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \\*Структура эволюционного оптимизатора }{\pageref{struct_gen_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/bench__time_8h.tex b/Doc/latex/bench__time_8h.tex new file mode 100644 index 0000000..db1c3db --- /dev/null +++ b/Doc/latex/bench__time_8h.tex @@ -0,0 +1,61 @@ +\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/bench\+\_\+time.h File Reference} +\hypertarget{bench__time_8h}{}\label{bench__time_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}} + + +Заголовочный файл для измерения времени между событиями + + +{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline +{\ttfamily \#include $<$stdint.\+h$>$}\newline +Include dependency graph for bench\+\_\+time.\+h\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=230pt]{bench__time_8h__incl} +\end{center} +\end{figure} +\doxysubsubsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Структура статистики измерений \end{DoxyCompactList}\item +struct \mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Структура канала измерения \end{DoxyCompactList}\item +struct \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Основная структура менеджера измерений \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsection*{Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{Bench\+Time\+\_\+\+Init}} (void) +\begin{DoxyCompactList}\small\item\em Инициализация системы измерения времени \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{Bench\+Time\+\_\+\+Start}} (uint8\+\_\+t channel, uint32\+\_\+t ticks, uint32\+\_\+t tick\+\_\+period) +\begin{DoxyCompactList}\small\item\em Начало измерения на указанном канале \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{Bench\+Time\+\_\+\+End}} (uint8\+\_\+t channel, uint32\+\_\+t ticks) +\begin{DoxyCompactList}\small\item\em Окончание измерения на указанном канале \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{Bench\+Time\+\_\+\+Get\+Min}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение минимального времени измерения \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{Bench\+Time\+\_\+\+Get\+Max}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение максимального времени измерения \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{Bench\+Time\+\_\+\+Get\+Average}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение среднего времени измерения \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{Bench\+Time\+\_\+\+Get\+Count}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение количества измерений \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{Bench\+Time\+\_\+\+Get\+Last}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение последнего измеренного времени \end{DoxyCompactList}\item +static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{Bench\+Time\+\_\+\+Reset\+Stats}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Сброс статистики для канала \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsection*{Variables} +\begin{DoxyCompactItemize} +\item +static \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}} = \{0\} +\begin{DoxyCompactList}\small\item\em Внутренний экземпляр \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Заголовочный файл для измерения времени между событиями + + + +Definition in file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + diff --git a/Doc/latex/bench__time_8h__incl.md5 b/Doc/latex/bench__time_8h__incl.md5 new file mode 100644 index 0000000..1ed4101 --- /dev/null +++ b/Doc/latex/bench__time_8h__incl.md5 @@ -0,0 +1 @@ +122aa7271e7507ca099dc86bd8c9c747 \ No newline at end of file diff --git a/Doc/latex/bench__time_8h__incl.pdf b/Doc/latex/bench__time_8h__incl.pdf new file mode 100644 index 0000000..1bd577f Binary files /dev/null and b/Doc/latex/bench__time_8h__incl.pdf differ diff --git a/Doc/latex/bench__time_8h_source.tex b/Doc/latex/bench__time_8h_source.tex new file mode 100644 index 0000000..7f76067 --- /dev/null +++ b/Doc/latex/bench__time_8h_source.tex @@ -0,0 +1,264 @@ +\doxysection{bench\+\_\+time.\+h} +\hypertarget{bench__time_8h_source}{}\label{bench__time_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}} +\mbox{\hyperlink{bench__time_8h}{Go to the documentation of this file.}} +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00001}00001\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00002}00002\ \textcolor{comment}{******************************************************************************}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ bench\_time.h}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ измерения\ времени\ между\ событиями}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ BENCH\_TIME\ \ \ \ Time\ measurement}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ измерения\ времени/тиков\ между\ событиями}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Многоканальные\ измерения\ (несколько\ независимых\ таймеров)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Платформонезависимый\ интерфейс}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Измерение\ в\ тиках\ или\ временных\ единицах}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Статистику\ измерений\ (мин/макс/среднее)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00015}00015\ \textcolor{comment}{-\/\ Настраиваемый\ размер\ тиков\ для\ каждого\ канала}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00016}00016\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_ENABLE\ -\/\ Включить\ бенч\ времени}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00019}00019\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_MAX\_CHANNELS\ -\/\ Максимальное\ количество\ каналов\ измерения\ (по\ умолчанию\ 8)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00020}00020\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00021}00021\ \textcolor{comment}{@par\ Пример\ использования:}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00022}00022\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00023}00023\ \textcolor{comment}{\#include\ "{}bench\_time.h"{}}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00024}00024\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00025}00025\ \textcolor{comment}{//\ Инициализация}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00026}00026\ \textcolor{comment}{BenchTime\_Init();}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00027}00027\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00028}00028\ \textcolor{comment}{//\ Измерение\ с\ SysTick}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00029}00029\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 0xFFFFFFFF);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00030}00030\ \textcolor{comment}{some\_function();}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00031}00031\ \textcolor{comment}{uint32\_t\ time\ =\ BenchTime\_End(0,\ HAL\_GetTick);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00032}00032\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00033}00033\ \textcolor{comment}{//\ Измерение\ с\ TIM2\ (16-\/бит)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00034}00034\ \textcolor{comment}{BenchTime\_Start(1,\ TIM2-\/>CNT,\ 0xFFFF);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00035}00035\ \textcolor{comment}{fast\_function();\ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00036}00036\ \textcolor{comment}{uint32\_t\ time2\ =\ BenchTime\_End(1,\ TIM2-\/>CNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00037}00037\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00038}00038\ \textcolor{comment}{//\ Измерение\ с\ DWT\ цикловым\ счетчиком}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00039}00039\ \textcolor{comment}{BenchTime\_Start(2,\ DWT-\/>CYCCNT,\ 0xFFFFFFFF);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00040}00040\ \textcolor{comment}{critical\_function();}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00041}00041\ \textcolor{comment}{uint32\_t\ cycles\ =\ BenchTime\_End(2,\ DWT-\/>CYCCNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00042}00042\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00043}00043\ \textcolor{comment}{//\ Многоканальное\ измерение}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00044}00044\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 1000);\ \ \ \ \ \ \ \ //\ общее\ время}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00045}00045\ \textcolor{comment}{BenchTime\_Start(1,\ TIM3-\/>CNT,\ 500);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 1}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00046}00046\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00047}00047\ \textcolor{comment}{//\ ...\ код\ 1}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00048}00048\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00049}00049\ \textcolor{comment}{uint32\_t\ part1\ =\ BenchTime\_End(1,\ TIM3-\/>CNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00050}00050\ \textcolor{comment}{BenchTime\_Start(2,\ TIM4-\/>CNT,\ 200);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 2\ \ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00051}00051\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00052}00052\ \textcolor{comment}{//\ ...\ код\ 2}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00053}00053\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00054}00054\ \textcolor{comment}{uint32\_t\ part2\ =\ BenchTime\_End(2,\ TIM4-\/>CNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00055}00055\ \textcolor{comment}{uint32\_t\ total\ =\ BenchTime\_End(0,\ HAL\_GetTick);\ //\ общее\ время}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00056}00056\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00057}00057\ \textcolor{comment}{//\ Статистика}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00058}00058\ \textcolor{comment}{uint32\_t\ min\_time\ =\ BenchTime\_GetMin(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00059}00059\ \textcolor{comment}{uint32\_t\ max\_time\ =\ BenchTime\_GetMax(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00060}00060\ \textcolor{comment}{uint32\_t\ avg\_time\ =\ BenchTime\_GetAverage(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00061}00061\ \textcolor{comment}{uint32\_t\ count\ =\ BenchTime\_GetCount(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00062}00062\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00063}00063\ \textcolor{comment}{*\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00064}00064\ \textcolor{comment}{*****************************************************************************/}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00065}00065\ \textcolor{preprocessor}{\#ifndef\ \_\_BENCH\_TIME\_H\_}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00066}00066\ \textcolor{preprocessor}{\#define\ \_\_BENCH\_TIME\_H\_}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00067}00067\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00068}00068\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00069}00069\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00070}00070\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00071}00071\ \textcolor{preprocessor}{\#ifdef\ BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00072}00072\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00073}00073\ \textcolor{comment}{//\ Конфигурация\ библиотеки}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00074}00074\ \textcolor{preprocessor}{\#ifndef\ BENCH\_TIME\_MAX\_CHANNELS}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00075}00075\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_MAX\_CHANNELS\ \ 8\ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ каналов\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00076}00076\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00077}00077\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00078}00078\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ @brief\ Структура\ статистики\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00080}00080\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00081}\mbox{\hyperlink{struct_bench_time_stats__t}{00081}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00082}\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{00082}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Минимальное\ время\ в\ тиках}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00083}\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{00083}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Максимальное\ время\ в\ тиках\ \ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00084}\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{00084}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}};\ \ \ \ \textcolor{comment}{///<\ Суммарное\ время\ в\ тиках}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00085}\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{00085}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};\ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00086}\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{00086}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}};\ \ \ \ \ \textcolor{comment}{///<\ Последнее\ измеренное\ время}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00087}00087\ \}\ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00088}00088\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00089}00089\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ @brief\ Структура\ канала\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00091}00091\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00092}\mbox{\hyperlink{struct_bench_time_channel__t}{00092}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00093}\mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{00093}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{start\_tick}};\ \ \ \ \ \textcolor{comment}{///<\ Время\ старта\ в\ тиках}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00094}\mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{00094}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{tick\_period}};\ \ \ \ \textcolor{comment}{///<\ Период\ тиков\ для\ переполнения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00095}\mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{00095}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{is\_running}};\ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Флаг\ активного\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00096}\mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{00096}}\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}\ \mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{stats}};\ \ \textcolor{comment}{///<\ Статистика\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00097}00097\ \}\ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00098}00098\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00099}00099\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Основная\ структура\ менеджера\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00102}\mbox{\hyperlink{struct_bench_time__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00103}\mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{00103}}\ \ \ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}}\ \mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{channels}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}}];\ \textcolor{comment}{///<\ Каналы\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00104}00104\ \}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00105}00105\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00106}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{00106}}\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}\ =\ \{0\};\ \textcolor{comment}{///<\ Внутренний\ экземпляр}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00107}00107\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00108}00108\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00109}00109\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ системы\ измерения\ времени}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00110}00110\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00111}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{00111}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{BenchTime\_Init}}(\textcolor{keywordtype}{void})\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00112}00112\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}};\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00113}00113\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].start\_tick\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00114}00114\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].tick\_period\ =\ 0xFFFFFFFF;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00115}00115\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].is\_running\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00116}00116\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.min\_ticks\ =\ 0xFFFFFFFF;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00117}00117\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.max\_ticks\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00118}00118\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.total\_ticks\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00119}00119\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.count\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00120}00120\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.last\_ticks\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00121}00121\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00122}00122\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00123}00123\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00124}00124\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00125}00125\ \textcolor{comment}{\ \ *\ @brief\ Начало\ измерения\ на\ указанном\ канале}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00127}00127\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (например:\ HAL\_GetTick(),\ TIM2-\/>CNT,\ DWT-\/>CYCCNT)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00128}00128\ \textcolor{comment}{\ \ *\ @param\ tick\_period\ Период\ тиков\ для\ переполнения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00129}00129\ \textcolor{comment}{\ \ *\ @return\ 1\ -\/\ успех,\ 0\ -\/\ ошибка}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00130}00130\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00131}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{00131}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(uint8\_t\ channel,\ uint32\_t\ ticks,\ uint32\_t\ tick\_period)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00133}00133\ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00134}00134\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00135}00135\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick\ =\ ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00136}00136\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period\ =\ tick\_period;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00137}00137\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 1;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00138}00138\ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00139}00139\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00140}00140\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00141}00141\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @brief\ Окончание\ измерения\ на\ указанном\ канале}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (должен\ быть\ тот\ же\ что\ в\ Start)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @return\ Измеренное\ время\ в\ тиках,\ 0\ -\/\ в\ случае\ ошибки}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00146}00146\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00147}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{00147}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(uint8\_t\ channel,\ uint32\_t\ ticks)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00148}00148\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00149}00149\ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00150}00150\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00151}00151\ \ \ uint32\_t\ end\_tick\ =\ ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00152}00152\ \ \ uint32\_t\ start\_tick\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00153}00153\ \ \ uint32\_t\ tick\_period\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00154}00154\ \ \ uint32\_t\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00155}00155\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00156}00156\ \ \ \textcolor{keywordflow}{if}\ (end\_tick\ >=\ start\_tick)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00157}00157\ \ \ \ \ elapsed\_ticks\ =\ end\_tick\ -\/\ start\_tick;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00158}00158\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00159}00159\ \ \ \ \ elapsed\_ticks\ =\ (tick\_period\ -\/\ start\_tick)\ +\ end\_tick\ +\ 1;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00160}00160\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00161}00161\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ tick\_period)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00163}00163\ \ \ \ \ elapsed\_ticks\ =\ tick\_period;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00164}00164\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00165}00165\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00166}00166\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00167}00167\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00168}00168\ \ \ \textcolor{comment}{//\ Обновление\ статистики}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00169}00169\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00170}00170\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00171}00171\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00172}00172\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ <\ stats-\/>min\_ticks)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00173}00173\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00174}00174\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00175}00175\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00176}00176\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}})\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00177}00177\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00178}00178\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00179}00179\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00180}00180\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ +=\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00181}00181\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}++;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00182}00182\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00183}00183\ \ \ \textcolor{keywordflow}{return}\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00184}00184\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00185}00185\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00186}00186\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00187}00187\ \textcolor{comment}{\ \ *\ @brief\ Получение\ минимального\ времени\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00188}00188\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00189}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{00189}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{BenchTime\_GetMin}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00191}00191\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.min\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00192}00192\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00193}00193\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00194}00194\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00195}00195\ \textcolor{comment}{\ \ *\ @brief\ Получение\ максимального\ времени\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00196}00196\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00197}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{00197}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{BenchTime\_GetMax}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00198}00198\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00199}00199\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.max\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00200}00200\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00201}00201\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00202}00202\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00203}00203\ \textcolor{comment}{\ \ *\ @brief\ Получение\ среднего\ времени\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00204}00204\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00205}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{00205}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{BenchTime\_GetAverage}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00206}00206\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00207}00207\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00208}00208\ \ \ \textcolor{keywordflow}{if}\ (stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ ==\ 0)\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00209}00209\ \ \ \textcolor{keywordflow}{return}\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ /\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00210}00210\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00211}00211\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00212}00212\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @brief\ Получение\ количества\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00214}00214\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00215}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{00215}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{BenchTime\_GetCount}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00216}00216\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00217}00217\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.count;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00218}00218\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00219}00219\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00220}00220\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ @brief\ Получение\ последнего\ измеренного\ времени}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00222}00222\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00223}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{00223}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{BenchTime\_GetLast}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00224}00224\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00225}00225\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.last\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00226}00226\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00227}00227\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00228}00228\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00229}00229\ \textcolor{comment}{\ \ *\ @brief\ Сброс\ статистики\ для\ канала}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00230}00230\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00231}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{00231}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{BenchTime\_ResetStats}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00232}00232\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00233}00233\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00234}00234\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ 0xFFFFFFFF;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00235}00235\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00236}00236\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00237}00237\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00238}00238\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00239}00239\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00240}00240\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00241}00241\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00242}00242\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00243}00243\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00244}00244\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00245}00245\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00246}00246\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00247}00247\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00248}00248\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00249}00249\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00250}00250\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00251}00251\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00252}00252\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00253}00253\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00254}00254\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_BENCH\_TIME\_H\_}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00255}00255\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00256}00256\ \textcolor{comment}{/**\ BENCH\_TIME}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00257}00257\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00258}00258\ \textcolor{comment}{\ \ */}} + +\end{DoxyCode} diff --git a/Doc/latex/bit__access_8h__dep__incl.pdf b/Doc/latex/bit__access_8h__dep__incl.pdf index 9be0751..f3819bf 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 51efe14..ed1e926 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__dep__incl.md5 b/Doc/latex/evolve__optimizer_8h__dep__incl.md5 deleted file mode 100644 index 8ece981..0000000 --- a/Doc/latex/evolve__optimizer_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a0affaffafe83b1e4cf8ca3fc40e3aed \ 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 deleted file mode 100644 index 850bc9f..0000000 Binary files a/Doc/latex/evolve__optimizer_8h__dep__incl.pdf and /dev/null differ diff --git a/Doc/latex/evolve__optimizer_8h__incl.md5 b/Doc/latex/evolve__optimizer_8h__incl.md5 deleted file mode 100644 index 50d9e87..0000000 --- a/Doc/latex/evolve__optimizer_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -408dcb9ada023de3bfc1cdb66d4747c7 \ No newline at end of file diff --git a/Doc/latex/evolve__optimizer_8h__incl.pdf b/Doc/latex/evolve__optimizer_8h__incl.pdf deleted file mode 100644 index ac1c537..0000000 Binary files a/Doc/latex/evolve__optimizer_8h__incl.pdf and /dev/null differ diff --git a/Doc/latex/evolve__optimizer_8h_source.tex b/Doc/latex/evolve__optimizer_8h_source.tex deleted file mode 100644 index 99f6969..0000000 --- a/Doc/latex/evolve__optimizer_8h_source.tex +++ /dev/null @@ -1,344 +0,0 @@ -\doxysection{evolve\+\_\+optimizer.\+h} -\hypertarget{evolve__optimizer_8h_source}{}\label{evolve__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/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}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ ENABLE\_EVOLVE\_OPTIMIZATION\ -\/\ Включить\ оптимизацию\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00019}00019\ \textcolor{comment}{\ \ Если\ библиотека\ отключена\ @ref\ ENABLE\_EVOLVE\_OPTIMIZATION,\ то\ вставляются\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00020}00020\ \textcolor{comment}{\ \ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00021}00021\ \textcolor{comment}{-\/\ @ref\ EVOLVE\_MAX\_PARAMS\ \ \ \ \ \ \ \ \ \ -\/\ Максимальное\ количество\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00022}00022\ \textcolor{comment}{-\/\ @ref\ EVOLVE\_MAX\_CANDIDATES\ \ \ \ \ \ -\/\ Максимальное\ количество\ кандидатов\ для\ обучения}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00023}00023\ \textcolor{comment}{-\/\ (опционально)\ @ref\ EVOLVE\_MUTATION\_MIN\_PCT\ \ \ \ -\/\ Минимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 10\%)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00024}00024\ \textcolor{comment}{-\/\ (опционально)\ @ref\ EVOLVE\_MUTATION\_MAX\_PCT\ \ \ \ -\/\ Максимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 100\%)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00025}00025\ \textcolor{comment}{-\/\ (опционально)\ @ref\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ \ -\/\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00026}00026\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00027}00027\ \textcolor{comment}{@par\ Пример\ использования:}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00028}00028\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#include\ "{}evolve\_optimizer.h"{}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00032}00032\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00033}00033\ \textcolor{comment}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00034}00034\ \textcolor{comment}{float\ params[N\_PARAMS];}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00035}00035\ \textcolor{comment}{EvolveOptimizer\_t\ optimizer;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00036}00036\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00037}00037\ \textcolor{comment}{//\ Формирование\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00038}00038\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00039}00039\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00040}00040\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00041}00041\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE(param\_f,\ \ \ \ 0.001f,\ 0.1f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00044}00044\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00045}00045\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE(param\_i16,\ \ 500.0f,\ 5000.0f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00046}00046\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00047}00047\ \textcolor{comment}{//\ Инициалиазция}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00048}00048\ \textcolor{comment}{EvolveOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00049}00049\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00050}00050\ \textcolor{comment}{//\ Шаг\ эволюции}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00051}00051\ \textcolor{comment}{float\ loss\ =\ calc\_loss();\ //\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00052}00052\ \textcolor{comment}{EvolveOptimizer\_Step(\&optimizer,\ params,\ loss);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00053}00053\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00054}00054\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE(params[0],\ \ 0.0f,\ \ \ 1000.0f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE(params[1],\ \ 0.001f,\ 0.1f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00057}00057\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE(params[2],\ \ 10.0f,\ \ 100.0f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00058}00058\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE(params[3],\ \ 500.0f,\ 5000.0f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00059}00059\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00060}00060\ \textcolor{comment}{*\ @\{\ \ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00061}00061\ \textcolor{comment}{*****************************************************************************/}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00062}00062\ \textcolor{preprocessor}{\#ifndef\ \_\_EVOLVE\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ \_\_EVOLVE\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00064}00064\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00066}00066\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00067}00067\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00068}00068\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{\#ifdef\ ENABLE\_EVOLVE\_OPTIMIZATION}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00070}00070\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ диапазон\ [0,\ 1)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00073}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{00073}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00074}00074\ \textcolor{preprocessor}{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00075}00075\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00076}00076\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ значения\ из\ [0,\ 1)\ в\ диапазон\ [min\_val,\ max\_val]}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00079}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{00079}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00080}00080\ \textcolor{preprocessor}{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00081}00081\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifndef\ local\_time}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00083}00083\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00084}00084\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00085}00085\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00086}00086\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00087}00087\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00088}00088\ \textcolor{preprocessor}{\#ifndef\ EVOLVE\_MUTATION\_MIN\_PCT}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00089}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{00089}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MUTATION\_MIN\_PCT\ \ \ 10\ \ \ \ }\textcolor{comment}{///<\ Минимальная\ мутация\ (в\ процентах\ от\ Loss)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00090}00090\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00091}00091\ \textcolor{preprocessor}{\#ifndef\ EVOLVE\_MUTATION\_MAX\_PCT}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00092}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{00092}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MUTATION\_MAX\_PCT\ \ \ 100\ \ \ }\textcolor{comment}{///<\ Максимальная\ мутация\ (в\ процентах\ от\ Loss)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00093}00093\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifndef\ ELOVLE\_N\_ELITE\_CANDIDATE}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00095}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{00095}}\ \textcolor{preprocessor}{\#define\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ 2\ \ \ \ \ }\textcolor{comment}{///<\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений\ (по\ умолчанию\ 2)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00097}00097\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00098}00098\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00099}00099\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00102}\mbox{\hyperlink{struct_evolve_optimizer__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00103}\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{00103}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Коэффициент\ насколько\ стабильная\ популяция\ (0..1)(@ref\ n\_cand)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00104}00104\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00105}\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{00105}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00106}\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{00106}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов\ в\ популяции}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00107}\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{00107}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00108}\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{00108}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ (0..1)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00109}00109\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00110}\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{00110}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ кандидата\ для\ обработки}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00111}\mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{00111}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ популяции\ \ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00112}00112\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00113}00113\ \ \ \textcolor{comment}{//INTERNAL}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00114}\mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{00114}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{gen\_mut}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ у\ текущей\ популяции\ \ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00115}00115\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00116}\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{00116}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{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_l00117}\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{00117}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{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_l00118}\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{00118}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00119}00119\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00120}00120\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00121}00121\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00122}00122\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00123}00123\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00124}00124\ \textcolor{comment}{\ *\ @cond\ EVOLVE\_INTERNAL}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00125}00125\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00126}00126\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00127}00127\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00128}00128\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00129}00129\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00130}00130\ \textcolor{comment}{//\ функция\ условия\ сортировки}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00131}00131\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00133}00133\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00134}00134\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00135}00135\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00136}00136\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00137}00137\ \}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00138}00138\ \textcolor{comment}{/**\ @endcond\ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00139}00139\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00140}00140\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00141}00141\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00142}00142\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00143}00143\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00144}00144\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00148}00148\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00149}00149\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00150}00150\ \textcolor{comment}{\ \ *\ @param\ mutation\_amp\ Амплитуда\ мутации\ (в\ диапазоне\ 0.0–1.0)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00151}00151\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (в\ диапазоне\ 0.0–1.0)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00152}00152\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00153}00153\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00154}00154\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00155}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{00155}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{EvolveOptimizer\_Init}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00156}00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ mutation\_amp,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ start\_params)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00161}00161\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (start\_params\ ==\ NULL))} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00163}00163\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00164}00164\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00165}00165\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00166}00166\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00167}00167\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}}\ \ \ \ \ =\ n\_params;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00168}00168\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00169}00169\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00170}00170\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00171}00171\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00172}00172\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00173}00173\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00174}00174\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00175}00175\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00176}00176\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00177}00177\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00178}00178\ \ \ \textcolor{keywordflow}{if}((mutation\_amp\ >\ 1)\ ||\ (mutation\_amp\ <\ 0))} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00179}00179\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00180}00180\ \ \ \textcolor{keywordflow}{if}(mutation\_amp\ <=\ 0.001f)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00181}00181\ \ \ \ \ mutation\_amp\ =\ 0.001f;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00182}00182\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}}\ \ =\ mutation\_amp;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00183}00183\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00184}00184\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}();} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00185}00185\ \textcolor{preprocessor}{\#ifdef\ ADC1}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00186}00186\ \ \ seed\ +=\ (ADC1-\/>DR\ \&\ 0xFF);} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00187}00187\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00188}00188\ \ \ srand(seed);} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00189}00189\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00191}00191\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00192}00192\ \ \ \ \ \ \ \textcolor{comment}{//\ Добавляем\ случайную\ мутацию\ вокруг\ стартового\ параметра}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00193}00193\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ base\ =\ start\_params[j];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00194}00194\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00195}00195\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ mutation\_amp;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00196}00196\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ base\ +\ noise;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00197}00197\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00198}00198\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00199}00199\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00200}00200\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[i]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00201}00201\ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00202}00202\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00203}00203\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00204}00204\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\_index}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00205}00205\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00206}00206\ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00207}00207\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00208}00208\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00209}00209\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00210}00210\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00211}00211\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00219}00219\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00220}00220\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00223}00223\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00224}00224\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00225}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{00225}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{EvolveOptimizer\_Step}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00226}00226\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ params,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00227}00227\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ loss)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00228}00228\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00229}00229\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (params\ ==\ NULL))} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00230}00230\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00231}00231\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00232}00232\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00233}00233\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00234}00234\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00235}00235\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00236}00236\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00237}00237\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00238}00238\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00239}00239\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00240}00240\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00241}00241\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00242}00242\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00243}00243\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00244}00244\ \ \ \textcolor{keywordtype}{float}\ \ \ \ mut\ \ \ \ \ \ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}};} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00245}00245\ \ \ \textcolor{keywordflow}{if}((mut\ >\ 1)\ ||(mut\ <\ 0))} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00246}00246\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00247}00247\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00248}00248\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00249}00249\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}]\ =\ loss;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00250}00250\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}++;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00251}00251\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00252}00252\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ >=\ n\_cand)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00253}00253\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00254}00254\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ i++)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00255}00255\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[i]\ =\ i;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00256}00256\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00257}00257\ \ \ \ \ g\_sort\_opt\ =\ opt;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00258}00258\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00259}00259\ \ \ \ \ g\_sort\_opt\ =\ NULL;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00260}00260\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00261}00261\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Адаптивная\ мутация\ в\ зависимости\ от\ Loss\ -\/-\/-\/}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00262}00262\ \ \ \ \ \textcolor{keywordtype}{float}\ best\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[0]];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00263}00263\ \ \ \ \ \textcolor{keywordtype}{float}\ worst\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ -\/\ 1]];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00264}00264\ \ \ \ \ \textcolor{keywordtype}{float}\ diff\ =\ worst\_loss\ -\/\ best\_loss;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00265}00265\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00266}00266\ \ \ \ \ \textcolor{keywordtype}{float}\ sum\_loss\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00267}00267\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00268}00268\ \ \ \ \ \ \ sum\_loss\ +=\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[i];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00269}00269\ \ \ \ \ \textcolor{keywordtype}{float}\ avg\_loss\ =\ sum\_loss\ /\ (float)n\_cand;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00270}00270\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00271}00271\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordtype}{float}\ loss\_ratio\ =\ (diff\ >\ 0.0f)\ ?\ ((avg\_loss\ -\/\ best\_loss)\ /\ diff)\ :\ 0.5f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00273}00273\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ <\ 0.0f)\ loss\_ratio\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00274}00274\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ >\ 1.0f)\ loss\_ratio\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00275}00275\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00276}00276\ \ \ \ \ \textcolor{comment}{//\ Записываем\ стабильность\ популяции\ в\ структуру}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00277}00277\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ <\ 0.0f)\ diff\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00278}00278\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ >\ 1.0f)\ diff\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00279}00279\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ (1.0f\ -\/\ worst\_loss)\ *\ (1.0f\ -\/\ (worst\_loss\ -\/\ best\_loss));} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00282}00282\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00283}00283\ \ \ \ \ \textcolor{keywordtype}{float}\ mut\_pct\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\_MUTATION\_MIN\_PCT}}\ +} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00284}00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\_MUTATION\_MAX\_PCT}}\ -\/\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\_MUTATION\_MIN\_PCT}})\ *\ loss\_ratio;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00285}00285\ \ \ \ \ \textcolor{keywordtype}{float}\ adaptive\_mut\ =\ mut\ *\ (mut\_pct\ /\ 100.0f);} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00286}00286\ \ \ \ \ \textcolor{keywordflow}{if}\ (adaptive\_mut\ <\ 0.0001f)\ adaptive\_mut\ =\ 0.0001f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00287}00287\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{gen\_mut}}\ =\ adaptive\_mut;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00288}00288\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00289}00289\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00290}00290\ \ \ \ \ uint16\_t\ n\_elite\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\_N\_ELITE\_CANDIDATE}};} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00291}00291\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00292}00292\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00293}00293\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00294}00294\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[c]][i];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00295}00295\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[c]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00296}00296\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00297}00297\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00298}00298\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00299}00299\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ adaptive\_mut;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00300}00300\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00301}00301\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[parent][i]\ +\ noise;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00302}00302\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00303}00303\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00304}00304\ \ \ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00305}00305\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[c]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00306}00306\ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00307}00307\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00308}00308\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00309}00309\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\_index}}++;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00310}00310\ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00311}00311\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00312}00312\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00313}00313\ \ \ \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_l00314}00314\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}][i];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00315}00315\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00316}00316\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00317}00317\ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00318}00318\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00319}00319\ \textcolor{comment}{//заглушки}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00320}00320\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00321}00321\ \ \ uint16\_t\ n\_params;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00322}00322\ \ \ uint16\_t\ n\_cand;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00323}00323\ \ \ uint16\_t\ n\_best;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00324}00324\ \ \ \textcolor{keywordtype}{float}\ mutation\_amp;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00325}00325\ \ \ \textcolor{keywordtype}{float}\ loss[0];\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00326}00326\ \ \ \textcolor{keywordtype}{float}\ candidates[0][0];\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00327}00327\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00328}00328\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ mutation\_amp,\ start\_params)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00329}00329\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00330}00330\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ (x)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00331}00331\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \ \ \ \ (val)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00332}00332\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00333}00333\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00334}00334\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_EVOLVE\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00335}00335\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00336}00336\ \textcolor{comment}{/**\ EVOLVE\_OPTIMIZER}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00337}00337\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00338}00338\ \textcolor{comment}{\ \ */}} - -\end{DoxyCode} diff --git a/Doc/latex/files.tex b/Doc/latex/files.tex index 3015b2d..87d066a 100644 --- a/Doc/latex/files.tex +++ b/Doc/latex/files.tex @@ -1,8 +1,9 @@ \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/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}} \\*Заголовочный файл для измерения времени между событиями }{\pageref{bench__time_8h}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{evolve__optimizer_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{gen__optimizer_8h}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__defs_8h}{mylibs\+\_\+defs.\+h}} \\*Заголочный файл для дефайнов библиотеки My\+Libs\+General }{\pageref{mylibs__defs_8h}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__include_8h}{mylibs\+\_\+include.\+h}} \\*Заголочный файл для всех библиотек }{\pageref{mylibs__include_8h}}{} diff --git a/Doc/latex/evolve__optimizer_8h.tex b/Doc/latex/gen__optimizer_8h.tex similarity index 52% rename from Doc/latex/evolve__optimizer_8h.tex rename to Doc/latex/gen__optimizer_8h.tex index 4068f31..9639f6c 100644 --- a/Doc/latex/evolve__optimizer_8h.tex +++ b/Doc/latex/gen__optimizer_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/evolve\+\_\+optimizer.h File Reference} -\hypertarget{evolve__optimizer_8h}{}\label{evolve__optimizer_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/evolve\_optimizer.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/gen\+\_\+optimizer.h File Reference} +\hypertarget{gen__optimizer_8h}{}\label{gen__optimizer_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}} Заголовочный файл для адаптивного подбора параметров @@ -8,12 +8,12 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline {\ttfamily \#include $<$stdint.\+h$>$}\newline {\ttfamily \#include $<$stdlib.\+h$>$}\newline -Include dependency graph for evolve\+\_\+optimizer.\+h\+: +Include dependency graph for gen\+\_\+optimizer.\+h\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=295pt]{evolve__optimizer_8h__incl} +\includegraphics[width=295pt]{gen__optimizer_8h__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+: @@ -21,33 +21,33 @@ This graph shows which files directly or indirectly include this file\+: \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{evolve__optimizer_8h__dep__incl} +\includegraphics[width=212pt]{gen__optimizer_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item -struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} +struct \mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+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_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val) +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val) \begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val) +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val) \begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10 +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10 \begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100 +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100 \begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2 +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2 \begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{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, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params) +static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{Gen\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params) \begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss) +static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{Gen\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss) \begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -56,5 +56,5 @@ struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} -Definition in file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. +Definition in file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. diff --git a/Doc/latex/gen__optimizer_8h__dep__incl.md5 b/Doc/latex/gen__optimizer_8h__dep__incl.md5 new file mode 100644 index 0000000..d842556 --- /dev/null +++ b/Doc/latex/gen__optimizer_8h__dep__incl.md5 @@ -0,0 +1 @@ +f620087f87f5ce223eef2578f5c74e74 \ No newline at end of file diff --git a/Doc/latex/gen__optimizer_8h__dep__incl.pdf b/Doc/latex/gen__optimizer_8h__dep__incl.pdf new file mode 100644 index 0000000..be1ec98 Binary files /dev/null and b/Doc/latex/gen__optimizer_8h__dep__incl.pdf differ diff --git a/Doc/latex/gen__optimizer_8h__incl.md5 b/Doc/latex/gen__optimizer_8h__incl.md5 new file mode 100644 index 0000000..ad8b4c6 --- /dev/null +++ b/Doc/latex/gen__optimizer_8h__incl.md5 @@ -0,0 +1 @@ +d8ba80e222b124652de74ea26c9b5a44 \ No newline at end of file diff --git a/Doc/latex/gen__optimizer_8h__incl.pdf b/Doc/latex/gen__optimizer_8h__incl.pdf new file mode 100644 index 0000000..1e5a8ac Binary files /dev/null and b/Doc/latex/gen__optimizer_8h__incl.pdf differ diff --git a/Doc/latex/gen__optimizer_8h_source.tex b/Doc/latex/gen__optimizer_8h_source.tex new file mode 100644 index 0000000..a7832c0 --- /dev/null +++ b/Doc/latex/gen__optimizer_8h_source.tex @@ -0,0 +1,344 @@ +\doxysection{gen\+\_\+optimizer.\+h} +\hypertarget{gen__optimizer_8h_source}{}\label{gen__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}} +\mbox{\hyperlink{gen__optimizer_8h}{Go to the documentation of this file.}} +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00001}00001\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00002}00002\ \textcolor{comment}{******************************************************************************}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ gen\_optimizer.h}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ адаптивного\ подбора\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ GEN\_OPTIMIZER\ \ \ \ Genetic\ optimizer}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ эволюционного\ подбора\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Любое\ количество\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Генерацию\ новых\ параметров\ на\ основе\ лучших\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Мутацию\ для\ поиска\ оптимальных\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Несколько\ независимых\ оптимизаторов\ в\ одной\ программе}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00015}00015\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00016}00016\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ GEN\_OPTIMIZATION\_ENABLE\ -\/\ Включить\ оптимизацию\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00019}00019\ \textcolor{comment}{\ \ Если\ библиотека\ отключена\ @ref\ GEN\_OPTIMIZATION\_ENABLE,\ то\ вставляются\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00020}00020\ \textcolor{comment}{\ \ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00021}00021\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_PARAMS\ \ \ \ \ \ \ \ \ \ -\/\ Максимальное\ количество\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00022}00022\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_CANDIDATES\ \ \ \ \ \ -\/\ Максимальное\ количество\ кандидатов\ для\ обучения}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00023}00023\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MIN\_PCT\ \ \ \ \ \ \ -\/\ Минимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 10\%)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00024}00024\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MAX\_PCT\ \ \ \ \ \ \ -\/\ Максимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 100\%)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00025}00025\ \textcolor{comment}{-\/\ (опционально)\ @ref\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ \ -\/\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00026}00026\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00027}00027\ \textcolor{comment}{@par\ Пример\ использования:}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00028}00028\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#include\ "{}gen\_optimizer.h"{}}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00032}00032\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00033}00033\ \textcolor{comment}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00034}00034\ \textcolor{comment}{float\ params[N\_PARAMS];}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00035}00035\ \textcolor{comment}{GenOptimizer\_t\ optimizer;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00036}00036\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00037}00037\ \textcolor{comment}{//\ Формирование\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00038}00038\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00039}00039\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00040}00040\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00041}00041\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE(param\_f,\ \ \ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00044}00044\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00045}00045\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE(param\_i16,\ \ 500.0f,\ 5000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00046}00046\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00047}00047\ \textcolor{comment}{//\ Инициалиазция}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00048}00048\ \textcolor{comment}{GenOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00049}00049\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00050}00050\ \textcolor{comment}{//\ Шаг\ эволюции}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00051}00051\ \textcolor{comment}{float\ loss\ =\ calc\_loss();\ //\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00052}00052\ \textcolor{comment}{GenOptimizer\_Step(\&optimizer,\ params,\ loss);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00053}00053\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00054}00054\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE(params[0],\ \ 0.0f,\ \ \ 1000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE(params[1],\ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00057}00057\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE(params[2],\ \ 10.0f,\ \ 100.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00058}00058\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE(params[3],\ \ 500.0f,\ 5000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00059}00059\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00060}00060\ \textcolor{comment}{*\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00061}00061\ \textcolor{comment}{*****************************************************************************/}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00062}00062\ \textcolor{preprocessor}{\#ifndef\ \_\_GEN\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ \_\_GEN\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00064}00064\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00066}00066\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00067}00067\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00068}00068\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{\#ifdef\ GEN\_OPTIMIZATION\_ENABLE}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00070}00070\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ диапазон\ [0,\ 1)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00073}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{00073}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00074}00074\ \textcolor{preprocessor}{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00075}00075\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00076}00076\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ значения\ из\ [0,\ 1)\ в\ диапазон\ [min\_val,\ max\_val]}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00079}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{00079}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00080}00080\ \textcolor{preprocessor}{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00081}00081\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifndef\ local\_time}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00083}00083\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00084}00084\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00085}00085\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00086}00086\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00087}00087\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00088}00088\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MIN\_PCT}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00089}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{00089}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MIN\_PCT\ \ \ 10\ \ \ \ }\textcolor{comment}{///<\ Минимальная\ мутация\ (в\ процентах\ от\ Loss)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00090}00090\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00091}00091\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MAX\_PCT}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00092}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{00092}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MAX\_PCT\ \ \ 100\ \ \ }\textcolor{comment}{///<\ Максимальная\ мутация\ (в\ процентах\ от\ Loss)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00093}00093\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifndef\ ELOVLE\_N\_ELITE\_CANDIDATE}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00095}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{00095}}\ \textcolor{preprocessor}{\#define\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ 2\ \ \ \ \ }\textcolor{comment}{///<\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений\ (по\ умолчанию\ 2)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00097}00097\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00098}00098\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00099}00099\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00102}\mbox{\hyperlink{struct_gen_optimizer__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00103}\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{00103}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Коэффициент\ насколько\ стабильная\ популяция\ (0..1)(@ref\ n\_cand)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00104}00104\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00105}\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{00105}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00106}\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{00106}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов\ в\ популяции}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00107}\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{00107}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00108}\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{00108}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ (0..1)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00109}00109\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00110}\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{00110}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00111}\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{00111}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ популяции\ \ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00112}00112\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00113}00113\ \ \ \textcolor{comment}{//INTERNAL}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00114}\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{00114}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ у\ текущей\ популяции\ \ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00115}00115\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00116}\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{00116}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00117}\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{00117}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}}];\ \textcolor{comment}{///<\ Параметры\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00118}\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{00118}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00119}00119\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00120}00120\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00121}00121\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00122}00122\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00123}00123\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00124}00124\ \textcolor{comment}{\ *\ @cond\ GEN\_INTERNAL}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00125}00125\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00126}00126\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00127}00127\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00128}00128\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00129}00129\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00130}00130\ \textcolor{comment}{//\ функция\ условия\ сортировки}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00131}00131\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00133}00133\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00134}00134\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00135}00135\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00136}00136\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00137}00137\ \}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00138}00138\ \textcolor{comment}{/**\ @endcond\ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00139}00139\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00140}00140\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00141}00141\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00142}00142\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00143}00143\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00144}00144\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00148}00148\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00149}00149\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00150}00150\ \textcolor{comment}{\ \ *\ @param\ mutation\_amp\ Амплитуда\ мутации\ (в\ диапазоне\ 0.0–1.0)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00151}00151\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (в\ диапазоне\ 0.0–1.0)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00152}00152\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00153}00153\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00154}00154\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00155}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{00155}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{GenOptimizer\_Init}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00156}00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ mutation\_amp,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ start\_params)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00161}00161\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (start\_params\ ==\ NULL))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00163}00163\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00164}00164\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00165}00165\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00166}00166\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00167}00167\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}}\ \ \ \ \ =\ n\_params;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00168}00168\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00169}00169\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00170}00170\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00171}00171\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00172}00172\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00173}00173\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00174}00174\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00175}00175\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00176}00176\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00177}00177\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00178}00178\ \ \ \textcolor{keywordflow}{if}((mutation\_amp\ >\ 1)\ ||\ (mutation\_amp\ <\ 0))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00179}00179\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00180}00180\ \ \ \textcolor{keywordflow}{if}(mutation\_amp\ <=\ 0.001f)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00181}00181\ \ \ \ \ mutation\_amp\ =\ 0.001f;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00182}00182\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}}\ \ =\ mutation\_amp;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00183}00183\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00184}00184\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}();} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00185}00185\ \textcolor{preprocessor}{\#ifdef\ ADC1}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00186}00186\ \ \ seed\ +=\ (ADC1-\/>DR\ \&\ 0xFF);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00187}00187\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00188}00188\ \ \ srand(seed);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00189}00189\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00191}00191\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00192}00192\ \ \ \ \ \ \ \textcolor{comment}{//\ Добавляем\ случайную\ мутацию\ вокруг\ стартового\ параметра}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00193}00193\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ base\ =\ start\_params[j];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00194}00194\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00195}00195\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ mutation\_amp;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00196}00196\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ base\ +\ noise;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00197}00197\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00198}00198\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00199}00199\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00200}00200\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[i]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00201}00201\ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00202}00202\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00203}00203\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00204}00204\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00205}00205\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00206}00206\ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00207}00207\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00208}00208\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00209}00209\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00210}00210\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00211}00211\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00219}00219\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00220}00220\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00223}00223\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00224}00224\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00225}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{00225}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{GenOptimizer\_Step}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00226}00226\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ params,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00227}00227\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ loss)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00228}00228\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00229}00229\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (params\ ==\ NULL))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00230}00230\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00231}00231\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00232}00232\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00233}00233\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00234}00234\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00235}00235\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00236}00236\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00237}00237\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00238}00238\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00239}00239\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00240}00240\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00241}00241\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00242}00242\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00243}00243\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00244}00244\ \ \ \textcolor{keywordtype}{float}\ \ \ \ mut\ \ \ \ \ \ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00245}00245\ \ \ \textcolor{keywordflow}{if}((mut\ >\ 1)\ ||(mut\ <\ 0))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00246}00246\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00247}00247\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00248}00248\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00249}00249\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}]\ =\ loss;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00250}00250\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}++;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00251}00251\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00252}00252\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ >=\ n\_cand)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00253}00253\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00254}00254\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00255}00255\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[i]\ =\ i;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00256}00256\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00257}00257\ \ \ \ \ g\_sort\_opt\ =\ opt;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00258}00258\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00259}00259\ \ \ \ \ g\_sort\_opt\ =\ NULL;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00260}00260\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00261}00261\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Адаптивная\ мутация\ в\ зависимости\ от\ Loss\ -\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00262}00262\ \ \ \ \ \textcolor{keywordtype}{float}\ best\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[0]];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00263}00263\ \ \ \ \ \textcolor{keywordtype}{float}\ worst\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ -\/\ 1]];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00264}00264\ \ \ \ \ \textcolor{keywordtype}{float}\ diff\ =\ worst\_loss\ -\/\ best\_loss;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00265}00265\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00266}00266\ \ \ \ \ \textcolor{keywordtype}{float}\ sum\_loss\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00267}00267\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00268}00268\ \ \ \ \ \ \ sum\_loss\ +=\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[i];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00269}00269\ \ \ \ \ \textcolor{keywordtype}{float}\ avg\_loss\ =\ sum\_loss\ /\ (float)n\_cand;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00270}00270\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00271}00271\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordtype}{float}\ loss\_ratio\ =\ (diff\ >\ 0.0f)\ ?\ ((avg\_loss\ -\/\ best\_loss)\ /\ diff)\ :\ 0.5f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00273}00273\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ <\ 0.0f)\ loss\_ratio\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00274}00274\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ >\ 1.0f)\ loss\_ratio\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00275}00275\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00276}00276\ \ \ \ \ \textcolor{comment}{//\ Записываем\ стабильность\ популяции\ в\ структуру}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00277}00277\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ <\ 0.0f)\ diff\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00278}00278\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ >\ 1.0f)\ diff\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00279}00279\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ (1.0f\ -\/\ worst\_loss)\ *\ (1.0f\ -\/\ (worst\_loss\ -\/\ best\_loss));} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00282}00282\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00283}00283\ \ \ \ \ \textcolor{keywordtype}{float}\ mut\_pct\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}}\ +} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00284}00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\_MUTATION\_MAX\_PCT}}\ -\/\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}})\ *\ loss\_ratio;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00285}00285\ \ \ \ \ \textcolor{keywordtype}{float}\ adaptive\_mut\ =\ mut\ *\ (mut\_pct\ /\ 100.0f);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00286}00286\ \ \ \ \ \textcolor{keywordflow}{if}\ (adaptive\_mut\ <\ 0.0001f)\ adaptive\_mut\ =\ 0.0001f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00287}00287\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}}\ =\ adaptive\_mut;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00288}00288\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00289}00289\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00290}00290\ \ \ \ \ uint16\_t\ n\_elite\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\_N\_ELITE\_CANDIDATE}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00291}00291\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00292}00292\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00293}00293\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00294}00294\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[c]][i];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00295}00295\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[c]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00296}00296\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00297}00297\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00298}00298\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00299}00299\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ adaptive\_mut;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00300}00300\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00301}00301\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[parent][i]\ +\ noise;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00302}00302\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00303}00303\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00304}00304\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00305}00305\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[c]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00306}00306\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00307}00307\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00308}00308\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00309}00309\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}++;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00310}00310\ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00311}00311\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00312}00312\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00313}00313\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00314}00314\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}][i];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00315}00315\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00316}00316\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00317}00317\ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00318}00318\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00319}00319\ \textcolor{comment}{//заглушки}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00320}00320\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00321}00321\ \ \ uint16\_t\ n\_params;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00322}00322\ \ \ uint16\_t\ n\_cand;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00323}00323\ \ \ uint16\_t\ n\_best;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00324}00324\ \ \ \textcolor{keywordtype}{float}\ mutation\_amp;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00325}00325\ \ \ \textcolor{keywordtype}{float}\ loss[0];\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00326}00326\ \ \ \textcolor{keywordtype}{float}\ candidates[0][0];\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00327}00327\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00328}00328\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ mutation\_amp,\ start\_params)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00329}00329\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Step(opt,\ params,\ LossFunc)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00330}00330\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ (x)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00331}00331\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \ \ \ \ (val)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00332}00332\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00333}00333\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00334}00334\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_GEN\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00335}00335\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00336}00336\ \textcolor{comment}{/**\ GEN\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00337}00337\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00338}00338\ \textcolor{comment}{\ \ */}} + +\end{DoxyCode} diff --git a/Doc/latex/general__gpio_8c__incl.pdf b/Doc/latex/general__gpio_8c__incl.pdf index 8c3a4fa..064f67d 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__dep__incl.pdf b/Doc/latex/general__gpio_8h__dep__incl.pdf index a8e3c04..087765d 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 b1cc4e0..99fe613 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__spi_8c__incl.pdf b/Doc/latex/general__spi_8c__incl.pdf index 3ed818e..a12720e 100644 Binary files a/Doc/latex/general__spi_8c__incl.pdf and b/Doc/latex/general__spi_8c__incl.pdf differ diff --git a/Doc/latex/general__spi_8h__dep__incl.pdf b/Doc/latex/general__spi_8h__dep__incl.pdf index 458dc12..284ee2b 100644 Binary files a/Doc/latex/general__spi_8h__dep__incl.pdf and b/Doc/latex/general__spi_8h__dep__incl.pdf differ diff --git a/Doc/latex/general__spi_8h__incl.pdf b/Doc/latex/general__spi_8h__incl.pdf index 807ab2a..27a8875 100644 Binary files a/Doc/latex/general__spi_8h__incl.pdf and b/Doc/latex/general__spi_8h__incl.pdf differ diff --git a/Doc/latex/general__tim_8c__incl.pdf b/Doc/latex/general__tim_8c__incl.pdf index 177f001..6449f65 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__dep__incl.pdf b/Doc/latex/general__tim_8h__dep__incl.pdf index 47e8c57..3838a8d 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 23f6352..0bea05b 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/general__uart_8c__incl.pdf b/Doc/latex/general__uart_8c__incl.pdf index 0d6d63e..5f7b469 100644 Binary files a/Doc/latex/general__uart_8c__incl.pdf and b/Doc/latex/general__uart_8c__incl.pdf differ diff --git a/Doc/latex/general__uart_8h__dep__incl.pdf b/Doc/latex/general__uart_8h__dep__incl.pdf index c0c2040..055d1c4 100644 Binary files a/Doc/latex/general__uart_8h__dep__incl.pdf and b/Doc/latex/general__uart_8h__dep__incl.pdf differ diff --git a/Doc/latex/general__uart_8h__incl.pdf b/Doc/latex/general__uart_8h__incl.pdf index ccac83a..51da014 100644 Binary files a/Doc/latex/general__uart_8h__incl.pdf and b/Doc/latex/general__uart_8h__incl.pdf differ diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 b/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 new file mode 100644 index 0000000..a1ee85e --- /dev/null +++ b/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 @@ -0,0 +1 @@ +15b595630eeca30c57a018017bc540ba \ No newline at end of file diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf b/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf new file mode 100644 index 0000000..0cab24d Binary files /dev/null and b/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf differ diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex b/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex new file mode 100644 index 0000000..46cb9e6 --- /dev/null +++ b/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex @@ -0,0 +1,288 @@ +\doxysubsubsection{Time measurement } +\hypertarget{group___b_e_n_c_h___t_i_m_e}{}\label{group___b_e_n_c_h___t_i_m_e}\index{Time measurement@{Time measurement}} + + +Библиотека для измерения времени/тиков между событиями + + +Collaboration diagram for Time measurement\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=291pt]{group___b_e_n_c_h___t_i_m_e} +\end{center} +\end{figure} +\doxysubsubsubsubsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Структура статистики измерений \end{DoxyCompactList}\item +struct \mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Структура канала измерения \end{DoxyCompactList}\item +struct \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Основная структура менеджера измерений \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsubsubsection*{Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{Bench\+Time\+\_\+\+Init}} (void) +\begin{DoxyCompactList}\small\item\em Инициализация системы измерения времени \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{Bench\+Time\+\_\+\+Start}} (uint8\+\_\+t channel, uint32\+\_\+t ticks, uint32\+\_\+t tick\+\_\+period) +\begin{DoxyCompactList}\small\item\em Начало измерения на указанном канале \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{Bench\+Time\+\_\+\+End}} (uint8\+\_\+t channel, uint32\+\_\+t ticks) +\begin{DoxyCompactList}\small\item\em Окончание измерения на указанном канале \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{Bench\+Time\+\_\+\+Get\+Min}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение минимального времени измерения \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{Bench\+Time\+\_\+\+Get\+Max}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение максимального времени измерения \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{Bench\+Time\+\_\+\+Get\+Average}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение среднего времени измерения \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{Bench\+Time\+\_\+\+Get\+Count}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение количества измерений \end{DoxyCompactList}\item +static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{Bench\+Time\+\_\+\+Get\+Last}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Получение последнего измеренного времени \end{DoxyCompactList}\item +static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{Bench\+Time\+\_\+\+Reset\+Stats}} (uint8\+\_\+t channel) +\begin{DoxyCompactList}\small\item\em Сброс статистики для канала \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsubsubsection*{Variables} +\begin{DoxyCompactItemize} +\item +static \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}} = \{0\} +\begin{DoxyCompactList}\small\item\em Внутренний экземпляр \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsubsubsection{Detailed Description} +Библиотека для измерения времени/тиков между событиями + +Поддерживает\+: +\begin{DoxyItemize} +\item Многоканальные измерения (несколько независимых таймеров) +\item Платформонезависимый интерфейс +\item Измерение в тиках или временных единицах +\item Статистику измерений (мин/макс/среднее) +\item Настраиваемый размер тиков для каждого канала +\end{DoxyItemize} + +Параметры для конфигурации\+: +\begin{DoxyItemize} +\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{BENCH\+\_\+\+TIME\+\_\+\+ENABLE} -\/ Включить бенч времени +\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS} -\/ Максимальное количество каналов измерения (по умолчанию 8) +\end{DoxyItemize} + +\begin{DoxyParagraph}{Пример использования\+:} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bench__time_8h}{bench\_time.h}}"{}}} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Инициализация}} +\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{BenchTime\_Init}}();} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Измерение\ с\ SysTick}} +\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(0,\ HAL\_GetTick,\ 0xFFFFFFFF);} +\DoxyCodeLine{some\_function();} +\DoxyCodeLine{uint32\_t\ time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(0,\ HAL\_GetTick);} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Измерение\ с\ TIM2\ (16-\/бит)}} +\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(1,\ TIM2-\/>CNT,\ 0xFFFF);} +\DoxyCodeLine{fast\_function();\ } +\DoxyCodeLine{uint32\_t\ time2\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(1,\ TIM2-\/>CNT);} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Измерение\ с\ DWT\ цикловым\ счетчиком}} +\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(2,\ DWT-\/>CYCCNT,\ 0xFFFFFFFF);} +\DoxyCodeLine{critical\_function();} +\DoxyCodeLine{uint32\_t\ cycles\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(2,\ DWT-\/>CYCCNT);} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Многоканальное\ измерение}} +\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(0,\ HAL\_GetTick,\ 1000);\ \ \ \ \ \ \ \ \textcolor{comment}{//\ общее\ время}} +\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(1,\ TIM3-\/>CNT,\ 500);\ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ часть\ 1}} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ ...\ код\ 1}} +\DoxyCodeLine{} +\DoxyCodeLine{uint32\_t\ part1\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(1,\ TIM3-\/>CNT);} +\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(2,\ TIM4-\/>CNT,\ 200);\ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ часть\ 2\ \ }} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ ...\ код\ 2}} +\DoxyCodeLine{} +\DoxyCodeLine{uint32\_t\ part2\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(2,\ TIM4-\/>CNT);} +\DoxyCodeLine{uint32\_t\ total\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(0,\ HAL\_GetTick);\ \textcolor{comment}{//\ общее\ время}} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Статистика}} +\DoxyCodeLine{uint32\_t\ min\_time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{BenchTime\_GetMin}}(0);} +\DoxyCodeLine{uint32\_t\ max\_time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{BenchTime\_GetMax}}(0);} +\DoxyCodeLine{uint32\_t\ avg\_time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{BenchTime\_GetAverage}}(0);} +\DoxyCodeLine{uint32\_t\ count\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{BenchTime\_GetCount}}(0);} + +\end{DoxyCode} + +\end{DoxyParagraph} + + +\label{doc-func-members} +\Hypertarget{group___b_e_n_c_h___t_i_m_e_doc-func-members} +\doxysubsubsubsection{Function Documentation} +\Hypertarget{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}\index{Time measurement@{Time measurement}!BenchTime\_Init@{BenchTime\_Init}} +\index{BenchTime\_Init@{BenchTime\_Init}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_Init()}{BenchTime\_Init()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054} +void Bench\+Time\+\_\+\+Init (\begin{DoxyParamCaption}\item[{void}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Инициализация системы измерения времени + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00111}{111}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}\index{Time measurement@{Time measurement}!BenchTime\_Start@{BenchTime\_Start}} +\index{BenchTime\_Start@{BenchTime\_Start}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_Start()}{BenchTime\_Start()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349} +uint32\+\_\+t Bench\+Time\+\_\+\+Start (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{, }\item[{uint32\+\_\+t}]{ticks}{, }\item[{uint32\+\_\+t}]{tick\+\_\+period}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Начало измерения на указанном канале + + +\begin{DoxyParams}{Parameters} +{\em channel} & Номер канала (0..BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS-\/1) \\ +\hline +{\em ticks} & Источник тиков (например\+: HAL\+\_\+\+Get\+Tick(), TIM2-\/\texorpdfstring{$>$}{>}CNT, DWT-\/\texorpdfstring{$>$}{>}CYCCNT) \\ +\hline +{\em tick\+\_\+period} & Период тиков для переполнения \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 -\/ успех, 0 -\/ ошибка +\end{DoxyReturn} + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00131}{131}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}\index{Time measurement@{Time measurement}!BenchTime\_End@{BenchTime\_End}} +\index{BenchTime\_End@{BenchTime\_End}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_End()}{BenchTime\_End()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439} +uint32\+\_\+t Bench\+Time\+\_\+\+End (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{, }\item[{uint32\+\_\+t}]{ticks}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Окончание измерения на указанном канале + + +\begin{DoxyParams}{Parameters} +{\em channel} & Номер канала (0..BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS-\/1) \\ +\hline +{\em ticks} & Источник тиков (должен быть тот же что в Start) \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Измеренное время в тиках, 0 -\/ в случае ошибки +\end{DoxyReturn} + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00147}{147}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}\index{Time measurement@{Time measurement}!BenchTime\_GetMin@{BenchTime\_GetMin}} +\index{BenchTime\_GetMin@{BenchTime\_GetMin}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetMin()}{BenchTime\_GetMin()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705} +uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Min (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Получение минимального времени измерения + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00189}{189}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}\index{Time measurement@{Time measurement}!BenchTime\_GetMax@{BenchTime\_GetMax}} +\index{BenchTime\_GetMax@{BenchTime\_GetMax}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetMax()}{BenchTime\_GetMax()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e} +uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Max (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Получение максимального времени измерения + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00197}{197}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}\index{Time measurement@{Time measurement}!BenchTime\_GetAverage@{BenchTime\_GetAverage}} +\index{BenchTime\_GetAverage@{BenchTime\_GetAverage}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetAverage()}{BenchTime\_GetAverage()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8} +uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Average (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Получение среднего времени измерения + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00205}{205}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}\index{Time measurement@{Time measurement}!BenchTime\_GetCount@{BenchTime\_GetCount}} +\index{BenchTime\_GetCount@{BenchTime\_GetCount}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetCount()}{BenchTime\_GetCount()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a} +uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Count (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Получение количества измерений + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00215}{215}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}\index{Time measurement@{Time measurement}!BenchTime\_GetLast@{BenchTime\_GetLast}} +\index{BenchTime\_GetLast@{BenchTime\_GetLast}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetLast()}{BenchTime\_GetLast()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed} +uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Last (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Получение последнего измеренного времени + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00223}{223}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}\index{Time measurement@{Time measurement}!BenchTime\_ResetStats@{BenchTime\_ResetStats}} +\index{BenchTime\_ResetStats@{BenchTime\_ResetStats}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_ResetStats()}{BenchTime\_ResetStats()}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35} +void Bench\+Time\+\_\+\+Reset\+Stats (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Сброс статистики для канала + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00231}{231}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + + + +\label{doc-var-members} +\Hypertarget{group___b_e_n_c_h___t_i_m_e_doc-var-members} +\doxysubsubsubsection{Variable Documentation} +\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}\index{Time measurement@{Time measurement}!hbt@{hbt}} +\index{hbt@{hbt}!Time measurement@{Time measurement}} +\doxysubsubsubsubsection{\texorpdfstring{hbt}{hbt}} +{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d} +\mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} hbt = \{0\}\hspace{0.3cm}{\ttfamily [static]}} + + + +Внутренний экземпляр + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00106}{106}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + 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 2c8efa8..01802db 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___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 4b406c4..cde6412 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___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 a551bb6..7ab8673 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_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 deleted file mode 100644 index 53dee98..0000000 --- a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 1b1d8ab..0000000 Binary files a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf and /dev/null 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 deleted file mode 100644 index ababb3b..0000000 --- a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex +++ /dev/null @@ -1,76 +0,0 @@ -\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 deleted file mode 100644 index b136329..0000000 --- a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 86f3e87..0000000 Binary files a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf and /dev/null 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 deleted file mode 100644 index fc8f22f..0000000 --- a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex +++ /dev/null @@ -1,253 +0,0 @@ -\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_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val) -\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val) -\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10 -\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100 -\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2 -\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize} -\doxysubsubsubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{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, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params) -\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss) -\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsubsubsection{Detailed Description} -Библиотека для эволюционного подбора параметров - -Поддерживает\+: -\begin{DoxyItemize} -\item Любое количество параметров -\item Генерацию новых параметров на основе лучших кандидатов -\item Мутацию для поиска оптимальных параметров -\item Несколько независимых оптимизаторов в одной программе -\end{DoxyItemize} - -Параметры для конфигурации\+: -\begin{DoxyItemize} -\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION} -\/ Включить оптимизацию параметров Если библиотека отключена \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}, то вставляются заглушки, никак не влияющие на параметры и остальную программу -\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS} -\/ Максимальное количество параметров -\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES} -\/ Максимальное количество кандидатов для обучения -\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT} -\/ Минимальная мутация в процентах от Loss (по умолчанию 10\%) -\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT} -\/ Максимальная мутация в процентах от Loss (по умолчанию 100\%) -\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE} -\/ Количество кандидатов, которые проходят в поколение без изменений -\end{DoxyItemize} - -\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\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} -\DoxyCodeLine{\textcolor{keywordtype}{float}\ 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_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);} -\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(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_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u8,\ \ \ 10.0f,\ \ 100.0f);} -\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_i16,\ \ 500.0f,\ 5000.0f);} -\DoxyCodeLine{} -\DoxyCodeLine{\textcolor{comment}{//\ Инициалиазция}} -\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{EvolveOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);} -\DoxyCodeLine{} -\DoxyCodeLine{\textcolor{comment}{//\ Шаг\ эволюции}} -\DoxyCodeLine{\textcolor{keywordtype}{float}\ loss\ =\ calc\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} -\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{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_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[0],\ \ 0.0f,\ \ \ 1000.0f);} -\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(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_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[2],\ \ 10.0f,\ \ 100.0f);} -\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[3],\ \ 500.0f,\ 5000.0f);} - -\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_ga83abbcabaff9111c03ae2475ee72ea3e}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_SCALE@{PARAM\_SCALE}} -\index{PARAM\_SCALE@{PARAM\_SCALE}!Evolve optimizer@{Evolve optimizer}} -\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE}{PARAM\_SCALE}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e} -\#define PARAM\+\_\+\+SCALE(\begin{DoxyParamCaption}\item[{}]{x}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})} - -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))} - -\end{DoxyCode} - - -Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00073}{73}} 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_gaa1d5510fe5f0bd989473f3ebe324bde3}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_UNSCALE@{PARAM\_UNSCALE}} -\index{PARAM\_UNSCALE@{PARAM\_UNSCALE}!Evolve optimizer@{Evolve optimizer}} -\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE}{PARAM\_UNSCALE}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3} -\#define PARAM\+\_\+\+UNSCALE(\begin{DoxyParamCaption}\item[{}]{val}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})} - -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))} - -\end{DoxyCode} - - -Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00079}{79}} 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_ga2f2b1be34ad4eb1bf3267237200cd6c6}\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}} -\index{EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}!Evolve optimizer@{Evolve optimizer}} -\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MIN\_PCT}{EVOLVE\_MUTATION\_MIN\_PCT}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6} -\#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT~10} - - - -Минимальная мутация (в процентах от Loss) - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00089}{89}} 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_ga861c1c6a503c21441abcec0d57b848bc}\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}} -\index{EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}!Evolve optimizer@{Evolve optimizer}} -\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MAX\_PCT}{EVOLVE\_MUTATION\_MAX\_PCT}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc} -\#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT~100} - - - -Максимальная мутация (в процентах от Loss) - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00092}{92}} 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_ga38607e23d9234524bc7de5869b15b8eb}\index{Evolve optimizer@{Evolve optimizer}!ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}} -\index{ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}!Evolve optimizer@{Evolve optimizer}} -\doxysubsubsubsubsection{\texorpdfstring{ELOVLE\_N\_ELITE\_CANDIDATE}{ELOVLE\_N\_ELITE\_CANDIDATE}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb} -\#define ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE~2} - - - -Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00095}{95}} 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_ga4e3ea118b5b9068619c57724a925ba21}\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_ga4e3ea118b5b9068619c57724a925ba21} -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int 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[{float}]{mutation\+\_\+amp}{, }\item[{float \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 mutation\+\_\+amp} & Амплитуда мутации (в диапазоне 0.\+0–1.0) \\ -\hline -{\em start\+\_\+params} & Начальные параметры (в диапазоне 0.\+0–1.0) \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -0 — если окей, -\/1 — если ошибка -\end{DoxyReturn} - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00155}{155}} 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_gaef44a1f3298514569cc2b396a92101ef}\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_gaef44a1f3298514569cc2b396a92101ef} -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{params}{, }\item[{float}]{loss}{}\end{DoxyParamCaption})} - - - -Один шаг эволюционного оптимизатора. - - -\begin{DoxyParams}{Parameters} -{\em opt} & Указатель на структуру оптимизатора \\ -\hline -{\em params} & Массив параметров, которые будут обновлены (на выходе — новые параметры) \\ -\hline -{\em loss} & Loss текущего кандидата \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -0 — если окей, -\/1 — если ошибка -\end{DoxyReturn} -Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n\+\_\+cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n\+\_\+best лучших с добавлением мутации. - -На выходе params содержит параметры следующего кандидата для измерений. \begin{DoxyNote}{Note} -Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени -\end{DoxyNote} - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00225}{225}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - diff --git a/Doc/latex/group___g_e_n___c_o_n_f_i_g.md5 b/Doc/latex/group___g_e_n___c_o_n_f_i_g.md5 new file mode 100644 index 0000000..d496a11 --- /dev/null +++ b/Doc/latex/group___g_e_n___c_o_n_f_i_g.md5 @@ -0,0 +1 @@ +5f0295c96943053471a3de806e4b1afd \ No newline at end of file diff --git a/Doc/latex/group___g_e_n___c_o_n_f_i_g.pdf b/Doc/latex/group___g_e_n___c_o_n_f_i_g.pdf new file mode 100644 index 0000000..7114735 Binary files /dev/null and b/Doc/latex/group___g_e_n___c_o_n_f_i_g.pdf differ diff --git a/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex b/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex new file mode 100644 index 0000000..dc3c7d1 --- /dev/null +++ b/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex @@ -0,0 +1,108 @@ +\doxysubsubsection{Genetic configs } +\hypertarget{group___g_e_n___c_o_n_f_i_g}{}\label{group___g_e_n___c_o_n_f_i_g}\index{Genetic configs@{Genetic configs}} + + +Конфигурация генетического алгоритма обучения + + +Collaboration diagram for Genetic configs\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=250pt]{group___g_e_n___c_o_n_f_i_g} +\end{center} +\end{figure} +\doxysubsubsubsubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE}} +\begin{DoxyCompactList}\small\item\em Включить оптимизацию параметров \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+MAX\+\_\+\+PARAMS}}~20 +\begin{DoxyCompactList}\small\item\em Максимальное количество параметров \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100 +\begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{BENCH\+\_\+\+TIME\+\_\+\+ENABLE}} +\begin{DoxyCompactList}\small\item\em Включить бенч времени \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS}}~16 +\begin{DoxyCompactList}\small\item\em Максимальное количество каналов измерения \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsubsubsection{Detailed Description} +Конфигурация генетического алгоритма обучения + + + +\label{doc-define-members} +\Hypertarget{group___g_e_n___c_o_n_f_i_g_doc-define-members} +\doxysubsubsubsection{Macro Definition Documentation} +\Hypertarget{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}\index{Genetic configs@{Genetic configs}!GEN\_OPTIMIZATION\_ENABLE@{GEN\_OPTIMIZATION\_ENABLE}} +\index{GEN\_OPTIMIZATION\_ENABLE@{GEN\_OPTIMIZATION\_ENABLE}!Genetic configs@{Genetic configs}} +\doxysubsubsubsubsection{\texorpdfstring{GEN\_OPTIMIZATION\_ENABLE}{GEN\_OPTIMIZATION\_ENABLE}} +{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c} +\#define GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE} + + + +Включить оптимизацию параметров + + + +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00064}{64}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. + +\Hypertarget{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}\index{Genetic configs@{Genetic configs}!GEN\_MAX\_PARAMS@{GEN\_MAX\_PARAMS}} +\index{GEN\_MAX\_PARAMS@{GEN\_MAX\_PARAMS}!Genetic configs@{Genetic configs}} +\doxysubsubsubsubsection{\texorpdfstring{GEN\_MAX\_PARAMS}{GEN\_MAX\_PARAMS}} +{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab} +\#define GEN\+\_\+\+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___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}\index{Genetic configs@{Genetic configs}!GEN\_MAX\_CANDIDATES@{GEN\_MAX\_CANDIDATES}} +\index{GEN\_MAX\_CANDIDATES@{GEN\_MAX\_CANDIDATES}!Genetic configs@{Genetic configs}} +\doxysubsubsubsubsection{\texorpdfstring{GEN\_MAX\_CANDIDATES}{GEN\_MAX\_CANDIDATES}} +{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869} +\#define GEN\+\_\+\+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}}. + +\Hypertarget{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}\index{Genetic configs@{Genetic configs}!BENCH\_TIME\_ENABLE@{BENCH\_TIME\_ENABLE}} +\index{BENCH\_TIME\_ENABLE@{BENCH\_TIME\_ENABLE}!Genetic configs@{Genetic configs}} +\doxysubsubsubsubsection{\texorpdfstring{BENCH\_TIME\_ENABLE}{BENCH\_TIME\_ENABLE}} +{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9} +\#define BENCH\+\_\+\+TIME\+\_\+\+ENABLE} + + + +Включить бенч времени + + + +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00081}{81}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. + +\Hypertarget{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}\index{Genetic configs@{Genetic configs}!BENCH\_TIME\_MAX\_CHANNELS@{BENCH\_TIME\_MAX\_CHANNELS}} +\index{BENCH\_TIME\_MAX\_CHANNELS@{BENCH\_TIME\_MAX\_CHANNELS}!Genetic configs@{Genetic configs}} +\doxysubsubsubsubsection{\texorpdfstring{BENCH\_TIME\_MAX\_CHANNELS}{BENCH\_TIME\_MAX\_CHANNELS}} +{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52} +\#define BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS~16} + + + +Максимальное количество каналов измерения + + + +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. + diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 new file mode 100644 index 0000000..63165ab --- /dev/null +++ b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 @@ -0,0 +1 @@ +ec124a446898cfdeeba090736e9d2802 \ No newline at end of file diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf new file mode 100644 index 0000000..5b112d2 Binary files /dev/null and b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf differ diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex new file mode 100644 index 0000000..7551dba --- /dev/null +++ b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex @@ -0,0 +1,253 @@ +\doxysubsubsection{Genetic optimizer } +\hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r}{}\label{group___g_e_n___o_p_t_i_m_i_z_e_r}\index{Genetic optimizer@{Genetic optimizer}} + + +Библиотека для эволюционного подбора параметров + + +Collaboration diagram for Genetic optimizer\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=284pt]{group___g_e_n___o_p_t_i_m_i_z_e_r} +\end{center} +\end{figure} +\doxysubsubsubsubsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsubsubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val) +\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val) +\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10 +\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100 +\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2 +\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsubsubsection*{Functions} +\begin{DoxyCompactItemize} +\item +static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{Gen\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params) +\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item +static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{Gen\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss) +\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsubsubsection{Detailed Description} +Библиотека для эволюционного подбора параметров + +Поддерживает\+: +\begin{DoxyItemize} +\item Любое количество параметров +\item Генерацию новых параметров на основе лучших кандидатов +\item Мутацию для поиска оптимальных параметров +\item Несколько независимых оптимизаторов в одной программе +\end{DoxyItemize} + +Параметры для конфигурации\+: +\begin{DoxyItemize} +\item \doxylink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE} -\/ Включить оптимизацию параметров Если библиотека отключена \doxylink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE}, то вставляются заглушки, никак не влияющие на параметры и остальную программу +\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+MAX\+\_\+\+PARAMS} -\/ Максимальное количество параметров +\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES} -\/ Максимальное количество кандидатов для обучения +\item (опционально) \doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT} -\/ Минимальная мутация в процентах от Loss (по умолчанию 10\%) +\item (опционально) \doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT} -\/ Максимальная мутация в процентах от Loss (по умолчанию 100\%) +\item (опционально) \doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE} -\/ Количество кандидатов, которые проходят в поколение без изменений +\end{DoxyItemize} + +\begin{DoxyParagraph}{Пример использования\+:} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{gen__optimizer_8h}{gen\_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\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} +\DoxyCodeLine{\textcolor{keywordtype}{float}\ params[N\_PARAMS];} +\DoxyCodeLine{\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_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___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);} +\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_f,\ \ \ \ 0.001f,\ 0.1f);} +\DoxyCodeLine{params[2]\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u8,\ \ \ 10.0f,\ \ 100.0f);} +\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_i16,\ \ 500.0f,\ 5000.0f);} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Инициалиазция}} +\DoxyCodeLine{\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{GenOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Шаг\ эволюции}} +\DoxyCodeLine{\textcolor{keywordtype}{float}\ loss\ =\ calc\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} +\DoxyCodeLine{\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{GenOptimizer\_Step}}(\&optimizer,\ params,\ loss);} +\DoxyCodeLine{} +\DoxyCodeLine{\textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} +\DoxyCodeLine{param\_u16\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[0],\ \ 0.0f,\ \ \ 1000.0f);} +\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[1],\ \ 0.001f,\ 0.1f);} +\DoxyCodeLine{param\_u8\ \ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[2],\ \ 10.0f,\ \ 100.0f);} +\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[3],\ \ 500.0f,\ 5000.0f);} + +\end{DoxyCode} + +\end{DoxyParagraph} + + +\label{doc-define-members} +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_doc-define-members} +\doxysubsubsubsection{Macro Definition Documentation} +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}\index{Genetic optimizer@{Genetic optimizer}!PARAM\_SCALE@{PARAM\_SCALE}} +\index{PARAM\_SCALE@{PARAM\_SCALE}!Genetic optimizer@{Genetic optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE}{PARAM\_SCALE}} +{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e} +\#define PARAM\+\_\+\+SCALE(\begin{DoxyParamCaption}\item[{}]{x}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))} + +\end{DoxyCode} + + +Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00073}{73}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}\index{Genetic optimizer@{Genetic optimizer}!PARAM\_UNSCALE@{PARAM\_UNSCALE}} +\index{PARAM\_UNSCALE@{PARAM\_UNSCALE}!Genetic optimizer@{Genetic optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE}{PARAM\_UNSCALE}} +{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3} +\#define PARAM\+\_\+\+UNSCALE(\begin{DoxyParamCaption}\item[{}]{val}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))} + +\end{DoxyCode} + + +Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00079}{79}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}\index{Genetic optimizer@{Genetic optimizer}!GEN\_MUTATION\_MIN\_PCT@{GEN\_MUTATION\_MIN\_PCT}} +\index{GEN\_MUTATION\_MIN\_PCT@{GEN\_MUTATION\_MIN\_PCT}!Genetic optimizer@{Genetic optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{GEN\_MUTATION\_MIN\_PCT}{GEN\_MUTATION\_MIN\_PCT}} +{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068} +\#define GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT~10} + + + +Минимальная мутация (в процентах от Loss) + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00089}{89}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}\index{Genetic optimizer@{Genetic optimizer}!GEN\_MUTATION\_MAX\_PCT@{GEN\_MUTATION\_MAX\_PCT}} +\index{GEN\_MUTATION\_MAX\_PCT@{GEN\_MUTATION\_MAX\_PCT}!Genetic optimizer@{Genetic optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{GEN\_MUTATION\_MAX\_PCT}{GEN\_MUTATION\_MAX\_PCT}} +{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd} +\#define GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT~100} + + + +Максимальная мутация (в процентах от Loss) + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00092}{92}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}\index{Genetic optimizer@{Genetic optimizer}!ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}} +\index{ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}!Genetic optimizer@{Genetic optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{ELOVLE\_N\_ELITE\_CANDIDATE}{ELOVLE\_N\_ELITE\_CANDIDATE}} +{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb} +\#define ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE~2} + + + +Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00095}{95}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + + + +\label{doc-func-members} +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_doc-func-members} +\doxysubsubsubsection{Function Documentation} +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}\index{Genetic optimizer@{Genetic optimizer}!GenOptimizer\_Init@{GenOptimizer\_Init}} +\index{GenOptimizer\_Init@{GenOptimizer\_Init}!Genetic optimizer@{Genetic optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{GenOptimizer\_Init()}{GenOptimizer\_Init()}} +{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a} +int Gen\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{uint16\+\_\+t}]{n\+\_\+params}{, }\item[{uint16\+\_\+t}]{n\+\_\+cand}{, }\item[{uint16\+\_\+t}]{n\+\_\+best}{, }\item[{float}]{mutation\+\_\+amp}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{start\+\_\+params}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Инициализация эволюционного оптимизатора. + + +\begin{DoxyParams}{Parameters} +{\em opt} & Указатель на структуру оптимизатора \\ +\hline +{\em n\+\_\+params} & Количество параметров в одном кандидате \\ +\hline +{\em n\+\_\+cand} & Количество кандидатов \\ +\hline +{\em n\+\_\+best} & Количество лучших, усредняемых \\ +\hline +{\em mutation\+\_\+amp} & Амплитуда мутации (в диапазоне 0.\+0–1.0) \\ +\hline +{\em start\+\_\+params} & Начальные параметры (в диапазоне 0.\+0–1.0) \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +0 — если окей, -\/1 — если ошибка +\end{DoxyReturn} + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00155}{155}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}\index{Genetic optimizer@{Genetic optimizer}!GenOptimizer\_Step@{GenOptimizer\_Step}} +\index{GenOptimizer\_Step@{GenOptimizer\_Step}!Genetic optimizer@{Genetic optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{GenOptimizer\_Step()}{GenOptimizer\_Step()}} +{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628} +int Gen\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{params}{, }\item[{float}]{loss}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Один шаг эволюционного оптимизатора. + + +\begin{DoxyParams}{Parameters} +{\em opt} & Указатель на структуру оптимизатора \\ +\hline +{\em params} & Массив параметров, которые будут обновлены (на выходе — новые параметры) \\ +\hline +{\em loss} & Loss текущего кандидата \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +0 — если окей, -\/1 — если ошибка +\end{DoxyReturn} +Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n\+\_\+cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n\+\_\+best лучших с добавлением мутации. + +На выходе params содержит параметры следующего кандидата для измерений. \begin{DoxyNote}{Note} +Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени +\end{DoxyNote} + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00225}{225}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+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 82aa69e..7c35f0b 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___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 90d5a86..05aa1ff 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 f01d1d5..b1d0342 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 @@ -18,7 +18,7 @@ Collaboration diagram for Libraries configs\+: \item \#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}() \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}} +\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}{INCLUDE\+\_\+\+GEN\+\_\+\+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 @@ -57,13 +57,13 @@ Collaboration diagram for Libraries configs\+: -Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00080}{80}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00097}{97}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\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} +\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}\index{Libraries configs@{Libraries configs}!INCLUDE\_GEN\_OPTIMIZER@{INCLUDE\_GEN\_OPTIMIZER}} +\index{INCLUDE\_GEN\_OPTIMIZER@{INCLUDE\_GEN\_OPTIMIZER}!Libraries configs@{Libraries configs}} +\doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_GEN\_OPTIMIZER}{INCLUDE\_GEN\_OPTIMIZER}} +{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692} +\#define INCLUDE\+\_\+\+GEN\+\_\+\+OPTIMIZER} @@ -71,7 +71,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00080}{80}} of fil -Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00099}{99}} 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}} @@ -85,7 +85,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of fil -Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00083}{83}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00100}{100}} 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}} @@ -99,7 +99,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00083}{83}} of fil -Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00084}{84}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00101}{101}} 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}} @@ -113,7 +113,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00084}{84}} of fil -Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00085}{85}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00102}{102}} 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}} @@ -127,7 +127,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00085}{85}} of fil -Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00086}{86}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00103}{103}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. \Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga57c369737d5c0cfdb7baeecba0a4b151}\index{Libraries configs@{Libraries configs}!FREERTOS\_DELAY@{FREERTOS\_DELAY}} \index{FREERTOS\_DELAY@{FREERTOS\_DELAY}!Libraries configs@{Libraries configs}} @@ -141,5 +141,5 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00086}{86}} of fil -Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00087}{87}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00104}{104}} 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 4d52e25..9dc1317 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___s_p_i.pdf b/Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf index 64f21f2..a1fad2b 100644 Binary files a/Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf and b/Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf differ 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 9211750..6691623 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___u_a_r_t.pdf b/Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf index afbf5dc..78e9165 100644 Binary files a/Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf and b/Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf differ 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 d4ded15..7a54923 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___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 3f02def..34ea56a 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 @@ -e39777f4e691429c305a230cb7233db5 \ No newline at end of file +d391fab11da478dd495954b9be42bbb6 \ 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 fc97eb7..3eddb63 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 843cfc2..35e80d3 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 @@ -18,8 +18,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___g_e_n___c_o_n_f_i_g}{Genetic 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} @@ -28,5 +28,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___g_e_n___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 21a4273..01910aa 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 @@ -e21133381fcfb6b51ca1c555273b8ce6 \ No newline at end of file +264808d6452fadd8a8ce8eeb10b2b251 \ 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 fe2af8c..a54e0d1 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 d32e230..da314e2 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 @@ -18,7 +18,9 @@ Collaboration diagram for General Tools\+: \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}} +\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e}{Time measurement}} +\begin{DoxyCompactList}\small\item\em Библиотека для измерения времени/тиков между событиями \end{DoxyCompactList}\item +\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r}{Genetic 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 @@ -36,7 +38,8 @@ Collaboration diagram for General Tools\+: Общие макросы и 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___b_e_n_c_h___t_i_m_e} +\input{group___g_e_n___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 01ba29d..3c1d42d 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___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 233193f..106c61c 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___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 bb025ac..3e4a460 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___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 36e36b4..eef90f4 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___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 0798e4b..f3e73bb 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___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 b71ba93..70d362f 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___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 d765e02..32a3068 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___o_c.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf index 1864a7c..54f9113 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___s_p_i___i_n_i_t.pdf b/Doc/latex/group___s_p_i___i_n_i_t.pdf index e6e178a..493f128 100644 Binary files a/Doc/latex/group___s_p_i___i_n_i_t.pdf and b/Doc/latex/group___s_p_i___i_n_i_t.pdf differ 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 2e60311..ce20232 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_r_a_c_e.pdf b/Doc/latex/group___t_r_a_c_e.pdf index 4d0bd7b..81dcda3 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___c_o_n_f_i_g.pdf b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf index b5a80db..73c9287 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___g_p_i_o.pdf b/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf index 442e91e..fe7b5f8 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___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 055bed7..77d699f 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 6d9fd50..dbb5af5 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 @@ -25,6 +25,15 @@ struct \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\ \begin{DoxyCompactList}\small\item\em Проверка и вывод последнего Hard\+Fault-\/трейса из Flash. \end{DoxyCompactList}\item \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{HF\+\_\+\+Handle\+Fault}} (void) \begin{DoxyCompactList}\small\item\em Обработчик Hard\+Fault. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsubsubsubsection*{Variables} +\begin{DoxyCompactItemize} +\item +static \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}{stack\+\_\+frame}} +\item +static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}{stack\+\_\+dump}} \mbox{[}32\mbox{]} +\item +static void \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}{ret\+\_\+adr}} \mbox{[}10\mbox{]} = \{0\} +\end{DoxyCompactItemize} \doxysubsubsubsubsection{Detailed Description} @@ -135,3 +144,38 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00499}{499}} of file \mbox{ Definition at line \mbox{\hyperlink{trace_8h_source_l00540}{540}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. + + +\label{doc-var-members} +\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_doc-var-members} +\doxysubsubsubsubsection{Variable Documentation} +\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}\index{Hardfault trace defines@{Hardfault trace defines}!stack\_frame@{stack\_frame}} +\index{stack\_frame@{stack\_frame}!Hardfault trace defines@{Hardfault trace defines}} +\doxysubsubsubsubsubsection{\texorpdfstring{stack\_frame}{stack\_frame}} +{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e} +\mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}}\texorpdfstring{$\ast$}{*} stack\+\_\+frame\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line \mbox{\hyperlink{trace_8h_source_l00523}{523}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. + +\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}\index{Hardfault trace defines@{Hardfault trace defines}!stack\_dump@{stack\_dump}} +\index{stack\_dump@{stack\_dump}!Hardfault trace defines@{Hardfault trace defines}} +\doxysubsubsubsubsubsection{\texorpdfstring{stack\_dump}{stack\_dump}} +{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7} +uint32\+\_\+t stack\+\_\+dump\mbox{[}32\mbox{]}\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line \mbox{\hyperlink{trace_8h_source_l00524}{524}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. + +\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}\index{Hardfault trace defines@{Hardfault trace defines}!ret\_adr@{ret\_adr}} +\index{ret\_adr@{ret\_adr}!Hardfault trace defines@{Hardfault trace defines}} +\doxysubsubsubsubsubsection{\texorpdfstring{ret\_adr}{ret\_adr}} +{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79} +void\texorpdfstring{$\ast$}{*} ret\+\_\+adr\mbox{[}10\mbox{]} = \{0\}\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line \mbox{\hyperlink{trace_8h_source_l00525}{525}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. + 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 1d09cf9..04f0bcb 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___s_e_r_i_a_l.pdf b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf index ac623a8..343a3b9 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_k_e_r_s.pdf b/Doc/latex/group___t_r_a_c_k_e_r_s.pdf index a695c86..51c35dc 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___u_a_r_t___i_n_i_t.pdf b/Doc/latex/group___u_a_r_t___i_n_i_t.pdf index 589fe83..5d22ebd 100644 Binary files a/Doc/latex/group___u_a_r_t___i_n_i_t.pdf and b/Doc/latex/group___u_a_r_t___i_n_i_t.pdf differ 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 8e5d91b..6b0c886 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 8571583..5797503 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 @@ -56,7 +56,7 @@ Collaboration diagram for Utils defines\+: \end{DoxyParams} Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00155}{155}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} 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 +85,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00155}{155}} of file \end{DoxyReturn} Если результат деления без остатка\+: он возвращается как есть Если с остатком -\/ округляется вверх -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00166}{166}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00165}{165}} 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 +112,7 @@ Swap between Little Endian and Big Endian. \end{DoxyReturn} Переключения между двумя типами хранения слова\+: HI-\/\+LO байты и LO-\/\+HI байты. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00174}{174}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} 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 +139,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00174}{174}} of file \end{DoxyReturn} Берет число по модулю. Хз как работает библиотечный abs в stdlib.\+h, мб это быстрее, но вряд ли конечно. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00182}{182}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00181}{181}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. diff --git a/Doc/latex/index.tex b/Doc/latex/index.tex index b2c5da4..ac123f4 100644 --- a/Doc/latex/index.tex +++ b/Doc/latex/index.tex @@ -9,7 +9,7 @@ My\+Libs -\/ это набор библиотек для удобной рабо \begin{DoxyItemize} \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 Эволюционный алгоритм для оптимизации параметров (\doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r}{Genetic 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} @@ -49,7 +49,7 @@ My\+Libs -\/ это набор библиотек для удобной рабо \DoxyCodeLine{│\ \ \ │\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек} \DoxyCodeLine{│\ \ \ │\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы} \DoxyCodeLine{│\ \ \ │\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам} -\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ evolve\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)} +\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)} \DoxyCodeLine{│\ \ \ │\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки} \DoxyCodeLine{│\ \ \ │\ \ \ └──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование} \DoxyCodeLine{│\ \ \ └──\ src/} diff --git a/Doc/latex/mainpage_8h_source.tex b/Doc/latex/mainpage_8h_source.tex index df9df03..194c8be 100644 --- a/Doc/latex/mainpage_8h_source.tex +++ b/Doc/latex/mainpage_8h_source.tex @@ -17,7 +17,7 @@ \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00014}00014\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ (@ref\ MYLIBS\_DEFINES)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00015}00015\ \textcolor{comment}{-\/\ Макросы\ для\ задержек\ и\ утилит\ (@ref\ DELAYS\_DEFINES\ и\ @ref\ UTILS\_DEFINES)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00016}00016\ \textcolor{comment}{-\/\ Трекеры\ для\ статистики\ и\ отладки\ \ (@ref\ TRACKERS\ и\ @ref\ TRACE)}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00017}00017\ \textcolor{comment}{-\/\ Эволюционный\ алгоритм\ для\ оптимизации\ параметров\ \ (@ref\ EVOLVE\_OPTIMIZER)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00017}00017\ \textcolor{comment}{-\/\ Эволюционный\ алгоритм\ для\ оптимизации\ параметров\ \ (@ref\ GEN\_OPTIMIZER)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00018}00018\ \textcolor{comment}{-\/\ Битовый\ доступ\ к\ регистрам\ через\ union\ \ (@ref\ BIT\_ACCESS\_DEFINES)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00019}00019\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00020}00020\ \textcolor{comment}{@subsubsection\ trace\_module\ Трассировка\ @ref\ TRACE}} @@ -53,7 +53,7 @@ \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00050}00050\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00051}00051\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00052}00052\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ evolve\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00054}00054\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00055}00055\ \textcolor{comment}{│\ \ \ │\ \ \ └──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00056}00056\ \textcolor{comment}{│\ \ \ └──\ src/}} diff --git a/Doc/latex/mylibs__config_8h.tex b/Doc/latex/mylibs__config_8h.tex index dceb968..373df53 100644 --- a/Doc/latex/mylibs__config_8h.tex +++ b/Doc/latex/mylibs__config_8h.tex @@ -57,15 +57,19 @@ 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}} +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE}} \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 +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+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 +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100 \begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{BENCH\+\_\+\+TIME\+\_\+\+ENABLE}} +\begin{DoxyCompactList}\small\item\em Включить бенч времени \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS}}~16 +\begin{DoxyCompactList}\small\item\em Максимальное количество каналов измерения \end{DoxyCompactList}\item \#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}() \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}} +\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}{INCLUDE\+\_\+\+GEN\+\_\+\+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 diff --git a/Doc/latex/mylibs__config_8h__dep__incl.md5 b/Doc/latex/mylibs__config_8h__dep__incl.md5 index 2b33d81..1088441 100644 --- a/Doc/latex/mylibs__config_8h__dep__incl.md5 +++ b/Doc/latex/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -549ad4f84281da5919a8182a1cfa8419 \ No newline at end of file +26252fa1f097da1581d5603686501d37 \ 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 ca5df57..c6a3764 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 bb3dab5..8d7ea2c 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 ae9b037..13d6468 100644 --- a/Doc/latex/mylibs__config_8h_source.tex +++ b/Doc/latex/mylibs__config_8h_source.tex @@ -59,44 +59,61 @@ \DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00055}00055\ } \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_l00058}00058\ \textcolor{comment}{\ \ *\ @addtogroup\ GEN\_CONFIG\ \ \ Genetic\ 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_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_l00064}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{00064}}\ \textcolor{preprocessor}{\#define\ GEN\_OPTIMIZATION\_ENABLE\ \ \ \ \ \ \ }\textcolor{comment}{///<\ Включить\ оптимизацию\ параметров}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00065}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{00065}}\ \textcolor{preprocessor}{\#define\ GEN\_MAX\_PARAMS\ \ \ \ \ \ \ 20\ \ \ \ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ параметров}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00066}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{00066}}\ \textcolor{preprocessor}{\#define\ GEN\_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_l00068}00068\ \textcolor{comment}{/**\ GEN\_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_l00074}00074\ \textcolor{comment}{\ \ *\ @addtogroup\ GEN\_CONFIG\ \ \ Genetic\ 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_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_ga9c853b02c22f26023c34d1d404b6d653}{00080}}\ \textcolor{preprocessor}{\#define\ local\_time()\ \ \ \ \ \ uwTick\ \ \ \ \ \ }\textcolor{comment}{///<\ Локальное\ время}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00081}00081\ } -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00082}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{00082}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_EVOLVE\_OPTIMIZER\ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ для\ оптимизации\ параметров}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00083}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{00083}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_BIT\_ACCESS\_LIB\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ typedef\ с\ битовыми\ полями}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00084}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{00084}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACKERS\_LIB\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трекерами}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00085}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}{00085}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACE\_LIB\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трейсами}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00086}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}{00086}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GENERAL\_PERIPH\_LIBS\ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ периферией}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00087}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga57c369737d5c0cfdb7baeecba0a4b151}{00087}}\ \textcolor{preprocessor}{\#define\ FREERTOS\_DELAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Использовать\ FreeRTOS\ задержку,\ вместо\ HAL}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00088}00088\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00089}00089\ \textcolor{comment}{/**\ LIBS\_CONFIG}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00091}00091\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00092}00092\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00093}00093\ \textcolor{comment}{/**\ MYLIBS\_CONFIG}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00080}00080\ } +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00081}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{00081}}\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_ENABLE\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Включить\ бенч\ времени}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00082}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{00082}}\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_MAX\_CHANNELS\ 16\ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ каналов\ измерения}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00083}00083\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00084}00084\ \textcolor{comment}{/**\ GEN\_CONFIG}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00085}00085\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00086}00086\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00087}00087\ } +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00088}00088\ } +\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}{\ \ *\ @addtogroup\ LIBS\_CONFIG\ \ \ Libraries\ configs}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_CONFIG}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00093}00093\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Подключение\ различных\ модулей\ библиотеки}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ @\{}} \DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00095}00095\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_CONFIG\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00096}00096\ } +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00097}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{00097}}\ \textcolor{preprocessor}{\#define\ local\_time()\ \ \ \ \ \ uwTick\ \ \ \ \ \ }\textcolor{comment}{///<\ Локальное\ время}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00098}00098\ } +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00099}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}{00099}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GEN\_OPTIMIZER\ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ для\ оптимизации\ параметров}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00100}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{00100}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_BIT\_ACCESS\_LIB\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ typedef\ с\ битовыми\ полями}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00101}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{00101}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACKERS\_LIB\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трекерами}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00102}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}{00102}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACE\_LIB\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трейсами}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00103}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}{00103}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GENERAL\_PERIPH\_LIBS\ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ периферией}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00104}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga57c369737d5c0cfdb7baeecba0a4b151}{00104}}\ \textcolor{preprocessor}{\#define\ FREERTOS\_DELAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Использовать\ FreeRTOS\ задержку,\ вместо\ HAL}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00105}00105\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00106}00106\ \textcolor{comment}{/**\ LIBS\_CONFIG}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00107}00107\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00108}00108\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00109}00109\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00110}00110\ \textcolor{comment}{/**\ MYLIBS\_CONFIG}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00111}00111\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00112}00112\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_CONFIG\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.md5 b/Doc/latex/mylibs__defs_8h__dep__incl.md5 index ceb12cf..186de66 100644 --- a/Doc/latex/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/latex/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -cdcbb90c558ed039bffebd441292f445 \ No newline at end of file +69bb9960f1fbfb4580bf7e3b97eade6b \ 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 a81b136..ab88f79 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 e00671b..9d08a7f 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 5261bae..dceb954 100644 --- a/Doc/latex/mylibs__defs_8h_source.tex +++ b/Doc/latex/mylibs__defs_8h_source.tex @@ -141,60 +141,60 @@ \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}{*******************************UTIL\_DEFINES********************************/}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}} -\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}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}00151\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}00154\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00155}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}00162\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}} -\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}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00166}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}00173\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00174}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}00181\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00182}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{comment}{/**\ UTILS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00185}00185\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00186}00186\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00187}00187\ \ \ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00188}00188\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00189}00189\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00190}00190\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00191}00191\ \textcolor{comment}{\ *\ @cond\ LIBS\_INTERNAL}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00192}00192\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00193}00193\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{*******************************UTIL\_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\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00188}00188\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00189}00189\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00190}00190\ \textcolor{comment}{\ *\ @cond\ LIBS\_INTERNAL}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00191}00191\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00192}00192\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00193}00193\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\ \textcolor{comment}{//\ переменная\ которой\ присваиваются\ значения,\ которые\ некуда\ присвоить}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00194}00194\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00195}00195\ \textcolor{comment}{/**\ \ }} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00196}00196\ \textcolor{comment}{\ \ *\ @brief\ \ Аналог\ HAL\ макроса\ для\ привязки\ DMA\ к\ UART.}} diff --git a/Doc/latex/mylibs__include_8h.tex b/Doc/latex/mylibs__include_8h.tex index c1ec186..13645be 100644 --- a/Doc/latex/mylibs__include_8h.tex +++ b/Doc/latex/mylibs__include_8h.tex @@ -10,7 +10,7 @@ {\ttfamily \#include "{}bit\+\_\+access.\+h"{}}\newline {\ttfamily \#include "{}trackers.\+h"{}}\newline {\ttfamily \#include "{}trace.\+h"{}}\newline -{\ttfamily \#include "{}evolve\+\_\+optimizer.\+h"{}}\newline +{\ttfamily \#include "{}gen\+\_\+optimizer.\+h"{}}\newline {\ttfamily \#include "{}\+\_\+\+\_\+general\+\_\+flash.\+h"{}}\newline {\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline Include dependency graph for mylibs\+\_\+include.\+h\+: @@ -21,6 +21,27 @@ Include dependency graph for mylibs\+\_\+include.\+h\+: \includegraphics[width=350pt]{mylibs__include_8h__incl} \end{center} \end{figure} +\doxysubsubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{mylibs__include_8h_a31b9f2267c562f3ceb533606daf0b789}{Bench\+Time\+\_\+\+Init}}() +\item +\#define \mbox{\hyperlink{mylibs__include_8h_a89ff6c06fc21fb2bbfbf8cbf863316f1}{Bench\+Time\+\_\+\+Start}}(channel, ticks, tick\+\_\+period) +\item +\#define \mbox{\hyperlink{mylibs__include_8h_adddc120d43a10fad50fbdeeab8d086b5}{Bench\+Time\+\_\+\+End}}(channel, ticks) +\item +\#define \mbox{\hyperlink{mylibs__include_8h_a91e352219014c7ea5507bbbe4b15912d}{Bench\+Time\+\_\+\+Get\+Min}}(channel) +\item +\#define \mbox{\hyperlink{mylibs__include_8h_ab8103362e89bad95d965ac668284065c}{Bench\+Time\+\_\+\+Get\+Max}}(channel) +\item +\#define \mbox{\hyperlink{mylibs__include_8h_a9f82f5ed8cfae31292dc3dca41471dd5}{Bench\+Time\+\_\+\+Get\+Average}}(channel) +\item +\#define \mbox{\hyperlink{mylibs__include_8h_aafbca7155cfc97b68428da2b0b1200ef}{Bench\+Time\+\_\+\+Get\+Count}}(channel) +\item +\#define \mbox{\hyperlink{mylibs__include_8h_a9911aa13a8fa67c35a261d1cb3dc11e7}{Bench\+Time\+\_\+\+Get\+Last}}(channel) +\item +\#define \mbox{\hyperlink{mylibs__include_8h_a09b9a6ef9b60605fc0015f6b379d8420}{Bench\+Time\+\_\+\+Reset\+Stats}}(channel) +\end{DoxyCompactItemize} \doxysubsection{Detailed Description} @@ -30,3 +51,133 @@ Include dependency graph for mylibs\+\_\+include.\+h\+: Definition in file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + + +\label{doc-define-members} +\Hypertarget{mylibs__include_8h_doc-define-members} +\doxysubsection{Macro Definition Documentation} +\Hypertarget{mylibs__include_8h_a31b9f2267c562f3ceb533606daf0b789}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_Init@{BenchTime\_Init}} +\index{BenchTime\_Init@{BenchTime\_Init}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_Init}{BenchTime\_Init}} +{\footnotesize\ttfamily \label{mylibs__include_8h_a31b9f2267c562f3ceb533606daf0b789} +\#define Bench\+Time\+\_\+\+Init(\begin{DoxyParamCaption}\item[{}]{void}{}\end{DoxyParamCaption})} + + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00104}{104}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_a89ff6c06fc21fb2bbfbf8cbf863316f1}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_Start@{BenchTime\_Start}} +\index{BenchTime\_Start@{BenchTime\_Start}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_Start}{BenchTime\_Start}} +{\footnotesize\ttfamily \label{mylibs__include_8h_a89ff6c06fc21fb2bbfbf8cbf863316f1} +\#define Bench\+Time\+\_\+\+Start(\begin{DoxyParamCaption}\item[{}]{channel}{, }\item[{}]{ticks}{, }\item[{}]{tick\+\_\+period}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{0} + +\end{DoxyCode} + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00105}{105}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_adddc120d43a10fad50fbdeeab8d086b5}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_End@{BenchTime\_End}} +\index{BenchTime\_End@{BenchTime\_End}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_End}{BenchTime\_End}} +{\footnotesize\ttfamily \label{mylibs__include_8h_adddc120d43a10fad50fbdeeab8d086b5} +\#define Bench\+Time\+\_\+\+End(\begin{DoxyParamCaption}\item[{}]{channel}{, }\item[{}]{ticks}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{0} + +\end{DoxyCode} + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00106}{106}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_a91e352219014c7ea5507bbbe4b15912d}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetMin@{BenchTime\_GetMin}} +\index{BenchTime\_GetMin@{BenchTime\_GetMin}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_GetMin}{BenchTime\_GetMin}} +{\footnotesize\ttfamily \label{mylibs__include_8h_a91e352219014c7ea5507bbbe4b15912d} +\#define Bench\+Time\+\_\+\+Get\+Min(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{0} + +\end{DoxyCode} + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00107}{107}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_ab8103362e89bad95d965ac668284065c}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetMax@{BenchTime\_GetMax}} +\index{BenchTime\_GetMax@{BenchTime\_GetMax}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_GetMax}{BenchTime\_GetMax}} +{\footnotesize\ttfamily \label{mylibs__include_8h_ab8103362e89bad95d965ac668284065c} +\#define Bench\+Time\+\_\+\+Get\+Max(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{0} + +\end{DoxyCode} + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00108}{108}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_a9f82f5ed8cfae31292dc3dca41471dd5}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetAverage@{BenchTime\_GetAverage}} +\index{BenchTime\_GetAverage@{BenchTime\_GetAverage}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_GetAverage}{BenchTime\_GetAverage}} +{\footnotesize\ttfamily \label{mylibs__include_8h_a9f82f5ed8cfae31292dc3dca41471dd5} +\#define Bench\+Time\+\_\+\+Get\+Average(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{0} + +\end{DoxyCode} + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00109}{109}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_aafbca7155cfc97b68428da2b0b1200ef}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetCount@{BenchTime\_GetCount}} +\index{BenchTime\_GetCount@{BenchTime\_GetCount}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_GetCount}{BenchTime\_GetCount}} +{\footnotesize\ttfamily \label{mylibs__include_8h_aafbca7155cfc97b68428da2b0b1200ef} +\#define Bench\+Time\+\_\+\+Get\+Count(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{0} + +\end{DoxyCode} + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00110}{110}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_a9911aa13a8fa67c35a261d1cb3dc11e7}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetLast@{BenchTime\_GetLast}} +\index{BenchTime\_GetLast@{BenchTime\_GetLast}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_GetLast}{BenchTime\_GetLast}} +{\footnotesize\ttfamily \label{mylibs__include_8h_a9911aa13a8fa67c35a261d1cb3dc11e7} +\#define Bench\+Time\+\_\+\+Get\+Last(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{0} + +\end{DoxyCode} + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00111}{111}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + +\Hypertarget{mylibs__include_8h_a09b9a6ef9b60605fc0015f6b379d8420}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_ResetStats@{BenchTime\_ResetStats}} +\index{BenchTime\_ResetStats@{BenchTime\_ResetStats}!mylibs\_include.h@{mylibs\_include.h}} +\doxysubsubsection{\texorpdfstring{BenchTime\_ResetStats}{BenchTime\_ResetStats}} +{\footnotesize\ttfamily \label{mylibs__include_8h_a09b9a6ef9b60605fc0015f6b379d8420} +\#define Bench\+Time\+\_\+\+Reset\+Stats(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})} + + + +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00112}{112}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. + diff --git a/Doc/latex/mylibs__include_8h__incl.md5 b/Doc/latex/mylibs__include_8h__incl.md5 index a515c46..0123200 100644 --- a/Doc/latex/mylibs__include_8h__incl.md5 +++ b/Doc/latex/mylibs__include_8h__incl.md5 @@ -1 +1 @@ -817f7e940e65c096c687de633dbb8802 \ No newline at end of file +64f981d795a52476ad96388f8545ab10 \ 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 09d7e8f..f28f26d 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 027aafd..87fb93e 100644 --- a/Doc/latex/mylibs__include_8h_source.tex +++ b/Doc/latex/mylibs__include_8h_source.tex @@ -83,8 +83,8 @@ \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_l00082}00082\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GEN\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{gen__optimizer_8h}{gen\_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;\ } @@ -93,39 +93,55 @@ \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_l00092}00092\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{preprocessor}{\#define\ GenOptimizer\_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_l00099}00099\ } \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\ "{}\mbox{\hyperlink{general__spi_8h}{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\ "{}\mbox{\hyperlink{general__uart_8h}{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_l00101}00101\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BENCH\_TEST}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bench__time_8h}{bench\_time.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}} \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\_}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{preprocessor}{\#include\ "{}\_\_general\_flash.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__spi_8h}{general\_spi.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__uart_8h}{general\_uart.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00126}00126\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00127}00127\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00128}00128\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00129}00129\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00130}00130\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00131}00131\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00132}00132\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00133}00133\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00134}00134\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00135}00135\ \textcolor{comment}{//\ user\ includes}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00136}00136\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00137}00137\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00138}00138\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00139}00139\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00140}00140\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00141}00141\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/refman.tex b/Doc/latex/refman.tex index 1737da7..e4588e0 100644 --- a/Doc/latex/refman.tex +++ b/Doc/latex/refman.tex @@ -243,7 +243,10 @@ \chapter{Topic Documentation} \input{group___m_y_l_i_b_s___a_l_l} \chapter{Class Documentation} -\input{struct_evolve_optimizer__t} +\input{struct_bench_time__t} +\input{struct_bench_time_channel__t} +\input{struct_bench_time_stats__t} +\input{struct_gen_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} @@ -258,10 +261,12 @@ \input{unionuint8___bit_type_def} \chapter{File Documentation} \input{mainpage_8h_source} +\input{bench__time_8h} +\input{bench__time_8h_source} \input{bit__access_8h} \input{bit__access_8h_source} -\input{evolve__optimizer_8h} -\input{evolve__optimizer_8h_source} +\input{gen__optimizer_8h} +\input{gen__optimizer_8h_source} \input{mylibs__config_8h} \input{mylibs__config_8h_source} \input{mylibs__defs_8h} diff --git a/Doc/latex/struct_bench_time__t.tex b/Doc/latex/struct_bench_time__t.tex new file mode 100644 index 0000000..5d68a53 --- /dev/null +++ b/Doc/latex/struct_bench_time__t.tex @@ -0,0 +1,57 @@ +\doxysection{Bench\+Time\+\_\+t Struct Reference} +\hypertarget{struct_bench_time__t}{}\label{struct_bench_time__t}\index{BenchTime\_t@{BenchTime\_t}} + + +Основная структура менеджера измерений + + + + +{\ttfamily \#include $<$bench\+\_\+time.\+h$>$} + + + +Collaboration diagram for Bench\+Time\+\_\+t\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=190pt]{struct_bench_time__t__coll__graph} +\end{center} +\end{figure} +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} \mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{channels}} \mbox{[}16\mbox{]} +\begin{DoxyCompactList}\small\item\em Каналы измерения \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Основная структура менеджера измерений + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00102}{102}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_bench_time__t_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}\index{BenchTime\_t@{BenchTime\_t}!channels@{channels}} +\index{channels@{channels}!BenchTime\_t@{BenchTime\_t}} +\doxysubsubsection{\texorpdfstring{channels}{channels}} +{\footnotesize\ttfamily \label{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6} +\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} Bench\+Time\+\_\+t\+::channels\mbox{[}16\mbox{]}} + + + +Каналы измерения + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00103}{103}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_bench_time__t__coll__graph.md5 b/Doc/latex/struct_bench_time__t__coll__graph.md5 new file mode 100644 index 0000000..33c3634 --- /dev/null +++ b/Doc/latex/struct_bench_time__t__coll__graph.md5 @@ -0,0 +1 @@ +99de2aa6d22284dc8ac4dd052cd3054b \ No newline at end of file diff --git a/Doc/latex/struct_bench_time__t__coll__graph.pdf b/Doc/latex/struct_bench_time__t__coll__graph.pdf new file mode 100644 index 0000000..c2acde1 Binary files /dev/null and b/Doc/latex/struct_bench_time__t__coll__graph.pdf differ diff --git a/Doc/latex/struct_bench_time_channel__t.tex b/Doc/latex/struct_bench_time_channel__t.tex new file mode 100644 index 0000000..67de03b --- /dev/null +++ b/Doc/latex/struct_bench_time_channel__t.tex @@ -0,0 +1,105 @@ +\doxysection{Bench\+Time\+Channel\+\_\+t Struct Reference} +\hypertarget{struct_bench_time_channel__t}{}\label{struct_bench_time_channel__t}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}} + + +Структура канала измерения + + + + +{\ttfamily \#include $<$bench\+\_\+time.\+h$>$} + + + +Collaboration diagram for Bench\+Time\+Channel\+\_\+t\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=190pt]{struct_bench_time_channel__t__coll__graph} +\end{center} +\end{figure} +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{start\+\_\+tick}} +\begin{DoxyCompactList}\small\item\em Время старта в тиках \end{DoxyCompactList}\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{tick\+\_\+period}} +\begin{DoxyCompactList}\small\item\em Период тиков для переполнения \end{DoxyCompactList}\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{is\+\_\+running}} +\begin{DoxyCompactList}\small\item\em Флаг активного измерения \end{DoxyCompactList}\item +\mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} \mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{stats}} +\begin{DoxyCompactList}\small\item\em Статистика измерений \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Структура канала измерения + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00092}{92}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_bench_time_channel__t_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!start\_tick@{start\_tick}} +\index{start\_tick@{start\_tick}!BenchTimeChannel\_t@{BenchTimeChannel\_t}} +\doxysubsubsection{\texorpdfstring{start\_tick}{start\_tick}} +{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928} +uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::start\+\_\+tick} + + + +Время старта в тиках + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00093}{93}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!tick\_period@{tick\_period}} +\index{tick\_period@{tick\_period}!BenchTimeChannel\_t@{BenchTimeChannel\_t}} +\doxysubsubsection{\texorpdfstring{tick\_period}{tick\_period}} +{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd} +uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::tick\+\_\+period} + + + +Период тиков для переполнения + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00094}{94}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!is\_running@{is\_running}} +\index{is\_running@{is\_running}!BenchTimeChannel\_t@{BenchTimeChannel\_t}} +\doxysubsubsection{\texorpdfstring{is\_running}{is\_running}} +{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9} +uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::is\+\_\+running} + + + +Флаг активного измерения + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00095}{95}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!stats@{stats}} +\index{stats@{stats}!BenchTimeChannel\_t@{BenchTimeChannel\_t}} +\doxysubsubsection{\texorpdfstring{stats}{stats}} +{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c} +\mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} Bench\+Time\+Channel\+\_\+t\+::stats} + + + +Статистика измерений + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00096}{96}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_bench_time_channel__t__coll__graph.md5 b/Doc/latex/struct_bench_time_channel__t__coll__graph.md5 new file mode 100644 index 0000000..851c636 --- /dev/null +++ b/Doc/latex/struct_bench_time_channel__t__coll__graph.md5 @@ -0,0 +1 @@ +47051da0ae1727593c14401e5b86376e \ No newline at end of file diff --git a/Doc/latex/struct_bench_time_channel__t__coll__graph.pdf b/Doc/latex/struct_bench_time_channel__t__coll__graph.pdf new file mode 100644 index 0000000..8b375d5 Binary files /dev/null and b/Doc/latex/struct_bench_time_channel__t__coll__graph.pdf differ diff --git a/Doc/latex/struct_bench_time_stats__t.tex b/Doc/latex/struct_bench_time_stats__t.tex new file mode 100644 index 0000000..3a6d468 --- /dev/null +++ b/Doc/latex/struct_bench_time_stats__t.tex @@ -0,0 +1,111 @@ +\doxysection{Bench\+Time\+Stats\+\_\+t Struct Reference} +\hypertarget{struct_bench_time_stats__t}{}\label{struct_bench_time_stats__t}\index{BenchTimeStats\_t@{BenchTimeStats\_t}} + + +Структура статистики измерений + + + + +{\ttfamily \#include $<$bench\+\_\+time.\+h$>$} + +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\+\_\+ticks}} +\begin{DoxyCompactList}\small\item\em Минимальное время в тиках \end{DoxyCompactList}\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\+\_\+ticks}} +\begin{DoxyCompactList}\small\item\em Максимальное время в тиках \end{DoxyCompactList}\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\+\_\+ticks}} +\begin{DoxyCompactList}\small\item\em Суммарное время в тиках \end{DoxyCompactList}\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}} +\begin{DoxyCompactList}\small\item\em Количество измерений \end{DoxyCompactList}\item +uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\+\_\+ticks}} +\begin{DoxyCompactList}\small\item\em Последнее измеренное время \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Структура статистики измерений + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00081}{81}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_bench_time_stats__t_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!min\_ticks@{min\_ticks}} +\index{min\_ticks@{min\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}} +\doxysubsubsection{\texorpdfstring{min\_ticks}{min\_ticks}} +{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8} +uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::min\+\_\+ticks} + + + +Минимальное время в тиках + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00082}{82}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!max\_ticks@{max\_ticks}} +\index{max\_ticks@{max\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}} +\doxysubsubsection{\texorpdfstring{max\_ticks}{max\_ticks}} +{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c} +uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::max\+\_\+ticks} + + + +Максимальное время в тиках + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00083}{83}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!total\_ticks@{total\_ticks}} +\index{total\_ticks@{total\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}} +\doxysubsubsection{\texorpdfstring{total\_ticks}{total\_ticks}} +{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec} +uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::total\+\_\+ticks} + + + +Суммарное время в тиках + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00084}{84}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!count@{count}} +\index{count@{count}!BenchTimeStats\_t@{BenchTimeStats\_t}} +\doxysubsubsection{\texorpdfstring{count}{count}} +{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71} +uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::count} + + + +Количество измерений + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00085}{85}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + +\Hypertarget{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!last\_ticks@{last\_ticks}} +\index{last\_ticks@{last\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}} +\doxysubsubsection{\texorpdfstring{last\_ticks}{last\_ticks}} +{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0} +uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::last\+\_\+ticks} + + + +Последнее измеренное время + + + +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00086}{86}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_evolve_optimizer__t.tex b/Doc/latex/struct_evolve_optimizer__t.tex deleted file mode 100644 index d261b31..0000000 --- a/Doc/latex/struct_evolve_optimizer__t.tex +++ /dev/null @@ -1,207 +0,0 @@ -\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 -float \mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}} -\begin{DoxyCompactList}\small\item\em Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\+\_\+cand}) \end{DoxyCompactList}\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 -float \mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\+\_\+amp}} -\begin{DoxyCompactList}\small\item\em Амплитуда мутации (0..1) \end{DoxyCompactList}\item -uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\+\_\+index}} -\begin{DoxyCompactList}\small\item\em Индекс кандидата для обработки \end{DoxyCompactList}\item -uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\+\_\+index}} -\begin{DoxyCompactList}\small\item\em Индекс популяции \end{DoxyCompactList}\item -float \mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{gen\+\_\+mut}} -\begin{DoxyCompactList}\small\item\em Амплитуда мутации у текущей популяции \end{DoxyCompactList}\item -float \mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}} \mbox{[}100\mbox{]} -\begin{DoxyCompactList}\small\item\em Loss для каждого кандидата \end{DoxyCompactList}\item -float \mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}} \mbox{[}100\mbox{]}\mbox{[}20\mbox{]} -\begin{DoxyCompactList}\small\item\em Параметры кандидатов \end{DoxyCompactList}\item -uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\+\_\+idx}} \mbox{[}100\mbox{]} -\begin{DoxyCompactList}\small\item\em Индексы отсортированных кандидатов \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Структура эволюционного оптимизатора - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00102}{102}} 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_a80eb0b8525b6bb838484f5922b9d8f7c}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!stability@{stability}} -\index{stability@{stability}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} -\doxysubsubsection{\texorpdfstring{stability}{stability}} -{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c} -float Evolve\+Optimizer\+\_\+t\+::stability} - - - -Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\+\_\+cand}) - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00103}{103}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\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_l00105}{105}} 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_l00106}{106}} 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_l00107}{107}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\Hypertarget{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!mutation\_amp@{mutation\_amp}} -\index{mutation\_amp@{mutation\_amp}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} -\doxysubsubsection{\texorpdfstring{mutation\_amp}{mutation\_amp}} -{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8} -float Evolve\+Optimizer\+\_\+t\+::mutation\+\_\+amp} - - - -Амплитуда мутации (0..1) - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00108}{108}} 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_l00110}{110}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\Hypertarget{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!gen\_index@{gen\_index}} -\index{gen\_index@{gen\_index}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} -\doxysubsubsection{\texorpdfstring{gen\_index}{gen\_index}} -{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108} -uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::gen\+\_\+index} - - - -Индекс популяции - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00111}{111}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\Hypertarget{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!gen\_mut@{gen\_mut}} -\index{gen\_mut@{gen\_mut}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} -\doxysubsubsection{\texorpdfstring{gen\_mut}{gen\_mut}} -{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727} -float Evolve\+Optimizer\+\_\+t\+::gen\+\_\+mut} - - - -Амплитуда мутации у текущей популяции - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00114}{114}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\Hypertarget{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}\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_a93f628397c2f8d4027f2906752b650df} -float Evolve\+Optimizer\+\_\+t\+::loss\mbox{[}100\mbox{]}} - - - -Loss для каждого кандидата - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00116}{116}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\Hypertarget{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}\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_aec67667fd1f1533e693e41c79bc28da4} -float Evolve\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}} - - - -Параметры кандидатов - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00117}{117}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\Hypertarget{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!sorted\_idx@{sorted\_idx}} -\index{sorted\_idx@{sorted\_idx}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} -\doxysubsubsection{\texorpdfstring{sorted\_idx}{sorted\_idx}} -{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a} -uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::sorted\+\_\+idx\mbox{[}100\mbox{]}} - - - -Индексы отсортированных кандидатов - - - -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00118}{118}} 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/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_gen_optimizer__t.tex b/Doc/latex/struct_gen_optimizer__t.tex new file mode 100644 index 0000000..4e88d5e --- /dev/null +++ b/Doc/latex/struct_gen_optimizer__t.tex @@ -0,0 +1,207 @@ +\doxysection{Gen\+Optimizer\+\_\+t Struct Reference} +\hypertarget{struct_gen_optimizer__t}{}\label{struct_gen_optimizer__t}\index{GenOptimizer\_t@{GenOptimizer\_t}} + + +Структура эволюционного оптимизатора + + + + +{\ttfamily \#include $<$gen\+\_\+optimizer.\+h$>$} + +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +float \mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}} +\begin{DoxyCompactList}\small\item\em Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\+\_\+cand}) \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\+\_\+params}} +\begin{DoxyCompactList}\small\item\em Количество параметров \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\+\_\+cand}} +\begin{DoxyCompactList}\small\item\em Количество кандидатов в популяции \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\+\_\+best}} +\begin{DoxyCompactList}\small\item\em Количество лучших, усредняемых \end{DoxyCompactList}\item +float \mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\+\_\+amp}} +\begin{DoxyCompactList}\small\item\em Амплитуда мутации (0..1) \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\+\_\+index}} +\begin{DoxyCompactList}\small\item\em Индекс текущего кандидата \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\+\_\+index}} +\begin{DoxyCompactList}\small\item\em Индекс популяции \end{DoxyCompactList}\item +float \mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\+\_\+mut}} +\begin{DoxyCompactList}\small\item\em Амплитуда мутации у текущей популяции \end{DoxyCompactList}\item +float \mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}} \mbox{[}100\mbox{]} +\begin{DoxyCompactList}\small\item\em Loss для каждого кандидата \end{DoxyCompactList}\item +float \mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}} \mbox{[}100\mbox{]}\mbox{[}20\mbox{]} +\begin{DoxyCompactList}\small\item\em Параметры кандидатов \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\+\_\+idx}} \mbox{[}100\mbox{]} +\begin{DoxyCompactList}\small\item\em Индексы отсортированных кандидатов \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Структура эволюционного оптимизатора + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00102}{102}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_gen_optimizer__t_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}\index{GenOptimizer\_t@{GenOptimizer\_t}!stability@{stability}} +\index{stability@{stability}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{stability}{stability}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192} +float Gen\+Optimizer\+\_\+t\+::stability} + + + +Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\+\_\+cand}) + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00103}{103}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_params@{n\_params}} +\index{n\_params@{n\_params}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{n\_params}{n\_params}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5} +uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+params} + + + +Количество параметров + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00105}{105}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_cand@{n\_cand}} +\index{n\_cand@{n\_cand}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{n\_cand}{n\_cand}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9} +uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+cand} + + + +Количество кандидатов в популяции + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00106}{106}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_best@{n\_best}} +\index{n\_best@{n\_best}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{n\_best}{n\_best}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9} +uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+best} + + + +Количество лучших, усредняемых + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00107}{107}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}\index{GenOptimizer\_t@{GenOptimizer\_t}!mutation\_amp@{mutation\_amp}} +\index{mutation\_amp@{mutation\_amp}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{mutation\_amp}{mutation\_amp}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c} +float Gen\+Optimizer\+\_\+t\+::mutation\+\_\+amp} + + + +Амплитуда мутации (0..1) + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00108}{108}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}\index{GenOptimizer\_t@{GenOptimizer\_t}!cand\_index@{cand\_index}} +\index{cand\_index@{cand\_index}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{cand\_index}{cand\_index}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc} +uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::cand\+\_\+index} + + + +Индекс текущего кандидата + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00110}{110}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}\index{GenOptimizer\_t@{GenOptimizer\_t}!gen\_index@{gen\_index}} +\index{gen\_index@{gen\_index}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{gen\_index}{gen\_index}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c} +uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::gen\+\_\+index} + + + +Индекс популяции + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00111}{111}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}\index{GenOptimizer\_t@{GenOptimizer\_t}!gen\_mut@{gen\_mut}} +\index{gen\_mut@{gen\_mut}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{gen\_mut}{gen\_mut}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1} +float Gen\+Optimizer\+\_\+t\+::gen\+\_\+mut} + + + +Амплитуда мутации у текущей популяции + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00114}{114}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}\index{GenOptimizer\_t@{GenOptimizer\_t}!loss@{loss}} +\index{loss@{loss}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{loss}{loss}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73} +float Gen\+Optimizer\+\_\+t\+::loss\mbox{[}100\mbox{]}} + + + +Loss для каждого кандидата + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00116}{116}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}\index{GenOptimizer\_t@{GenOptimizer\_t}!candidates@{candidates}} +\index{candidates@{candidates}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{candidates}{candidates}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df} +float Gen\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}} + + + +Параметры кандидатов + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00117}{117}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}\index{GenOptimizer\_t@{GenOptimizer\_t}!sorted\_idx@{sorted\_idx}} +\index{sorted\_idx@{sorted\_idx}!GenOptimizer\_t@{GenOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{sorted\_idx}{sorted\_idx}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12} +uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::sorted\+\_\+idx\mbox{[}100\mbox{]}} + + + +Индексы отсортированных кандидатов + + + +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00118}{118}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}}\end{DoxyCompactItemize} 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 d7d2e72..5e47cee 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 3fddd5c..a81c542 100644 --- a/Doc/latex/topics.tex +++ b/Doc/latex/topics.tex @@ -5,13 +5,14 @@ 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}{Genetic configs}{\pageref{group___g_e_n___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 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}{Time measurement}{\pageref{group___b_e_n_c_h___t_i_m_e}}{} +\item \contentsline{section}{Genetic optimizer}{\pageref{group___g_e_n___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 05c62d3..553c277 100644 --- a/Doc/latex/trace_8h.tex +++ b/Doc/latex/trace_8h.tex @@ -57,6 +57,15 @@ struct \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\ \begin{DoxyCompactList}\small\item\em Проверка и вывод последнего Hard\+Fault-\/трейса из Flash. \end{DoxyCompactList}\item \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{HF\+\_\+\+Handle\+Fault}} (void) \begin{DoxyCompactList}\small\item\em Обработчик Hard\+Fault. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsection*{Variables} +\begin{DoxyCompactItemize} +\item +static \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}{stack\+\_\+frame}} +\item +static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}{stack\+\_\+dump}} \mbox{[}32\mbox{]} +\item +static void \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}{ret\+\_\+adr}} \mbox{[}10\mbox{]} = \{0\} +\end{DoxyCompactItemize} \doxysubsection{Detailed Description} diff --git a/Doc/latex/trace_8h__dep__incl.pdf b/Doc/latex/trace_8h__dep__incl.pdf index 8e9aaf3..3f47bd3 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 728db5a..e68b762 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__dep__incl.pdf b/Doc/latex/trackers_8h__dep__incl.pdf index 897c9d3..fb8b130 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 47dd049..754e36b 100644 Binary files a/Doc/latex/trackers_8h__incl.pdf and b/Doc/latex/trackers_8h__incl.pdf differ diff --git a/MyLibs/Inc/bench_time.h b/MyLibs/Inc/bench_time.h new file mode 100644 index 0000000..1704b3e --- /dev/null +++ b/MyLibs/Inc/bench_time.h @@ -0,0 +1,258 @@ +/** +****************************************************************************** +* @file bench_time.h +* @brief Заголовочный файл для измерения времени между событиями +****************************************************************************** +* @addtogroup BENCH_TIME Time measurement +* @ingroup MYLIBS_DEFINES +* @brief Библиотека для измерения времени/тиков между событиями +* @details +Поддерживает: +- Многоканальные измерения (несколько независимых таймеров) +- Платформонезависимый интерфейс +- Измерение в тиках или временных единицах +- Статистику измерений (мин/макс/среднее) +- Настраиваемый размер тиков для каждого канала + +Параметры для конфигурации: +- @ref BENCH_TIME_ENABLE - Включить бенч времени +- @ref BENCH_TIME_MAX_CHANNELS - Максимальное количество каналов измерения (по умолчанию 8) + +@par Пример использования: +@code +#include "bench_time.h" + +// Инициализация +BenchTime_Init(); + +// Измерение с SysTick +BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF); +some_function(); +uint32_t time = BenchTime_End(0, HAL_GetTick); + +// Измерение с TIM2 (16-бит) +BenchTime_Start(1, TIM2->CNT, 0xFFFF); +fast_function(); +uint32_t time2 = BenchTime_End(1, TIM2->CNT); + +// Измерение с DWT цикловым счетчиком +BenchTime_Start(2, DWT->CYCCNT, 0xFFFFFFFF); +critical_function(); +uint32_t cycles = BenchTime_End(2, DWT->CYCCNT); + +// Многоканальное измерение +BenchTime_Start(0, HAL_GetTick, 1000); // общее время +BenchTime_Start(1, TIM3->CNT, 500); // часть 1 + +// ... код 1 + +uint32_t part1 = BenchTime_End(1, TIM3->CNT); +BenchTime_Start(2, TIM4->CNT, 200); // часть 2 + +// ... код 2 + +uint32_t part2 = BenchTime_End(2, TIM4->CNT); +uint32_t total = BenchTime_End(0, HAL_GetTick); // общее время + +// Статистика +uint32_t min_time = BenchTime_GetMin(0); +uint32_t max_time = BenchTime_GetMax(0); +uint32_t avg_time = BenchTime_GetAverage(0); +uint32_t count = BenchTime_GetCount(0); +@endcode +* @{ +*****************************************************************************/ +#ifndef __BENCH_TIME_H_ +#define __BENCH_TIME_H_ + +#include "mylibs_defs.h" +#include + +#ifdef BENCH_TIME_ENABLE + +// Конфигурация библиотеки +#ifndef BENCH_TIME_MAX_CHANNELS +#define BENCH_TIME_MAX_CHANNELS 8 ///< Максимальное количество каналов измерения +#endif + +/** + * @brief Структура статистики измерений + */ +typedef struct { + uint32_t min_ticks; ///< Минимальное время в тиках + uint32_t max_ticks; ///< Максимальное время в тиках + uint32_t total_ticks; ///< Суммарное время в тиках + uint32_t count; ///< Количество измерений + uint32_t last_ticks; ///< Последнее измеренное время +} BenchTimeStats_t; + +/** + * @brief Структура канала измерения + */ +typedef struct { + uint32_t start_tick; ///< Время старта в тиках + uint32_t tick_period; ///< Период тиков для переполнения + uint32_t is_running; ///< Флаг активного измерения + BenchTimeStats_t stats; ///< Статистика измерений +} BenchTimeChannel_t; + +/** + * @brief Основная структура менеджера измерений + */ +typedef struct { + BenchTimeChannel_t channels[BENCH_TIME_MAX_CHANNELS]; ///< Каналы измерения +} BenchTime_t; + +static BenchTime_t hbt = {0}; ///< Внутренний экземпляр + +/** + * @brief Инициализация системы измерения времени + */ +static inline void BenchTime_Init(void) { + for (int i = 0; i < BENCH_TIME_MAX_CHANNELS; i++) { + hbt.channels[i].start_tick = 0; + hbt.channels[i].tick_period = 0xFFFFFFFF; + hbt.channels[i].is_running = 0; + hbt.channels[i].stats.min_ticks = 0xFFFFFFFF; + hbt.channels[i].stats.max_ticks = 0; + hbt.channels[i].stats.total_ticks = 0; + hbt.channels[i].stats.count = 0; + hbt.channels[i].stats.last_ticks = 0; + } +} + +/** + * @brief Начало измерения на указанном канале + * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1) + * @param ticks Источник тиков (например: HAL_GetTick(), TIM2->CNT, DWT->CYCCNT) + * @param tick_period Период тиков для переполнения + * @return 1 - успех, 0 - ошибка + */ +static inline uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return 0; + if (hbt.channels[channel].is_running) return 0; + + hbt.channels[channel].start_tick = ticks; + hbt.channels[channel].tick_period = tick_period; + hbt.channels[channel].is_running = 1; + return 1; +} + +/** + * @brief Окончание измерения на указанном канале + * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1) + * @param ticks Источник тиков (должен быть тот же что в Start) + * @return Измеренное время в тиках, 0 - в случае ошибки + */ +static inline uint32_t BenchTime_End(uint8_t channel, uint32_t ticks) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return 0; + if (!hbt.channels[channel].is_running) return 0; + + uint32_t end_tick = ticks; + uint32_t start_tick = hbt.channels[channel].start_tick; + uint32_t tick_period = hbt.channels[channel].tick_period; + uint32_t elapsed_ticks; + + if (end_tick >= start_tick) { + elapsed_ticks = end_tick - start_tick; + } else { + elapsed_ticks = (tick_period - start_tick) + end_tick + 1; + } + + if (elapsed_ticks > tick_period) { + elapsed_ticks = tick_period; + } + + hbt.channels[channel].is_running = 0; + + // Обновление статистики + BenchTimeStats_t* stats = &hbt.channels[channel].stats; + stats->last_ticks = elapsed_ticks; + + if (elapsed_ticks < stats->min_ticks) { + stats->min_ticks = elapsed_ticks; + } + + if (elapsed_ticks > stats->max_ticks) { + stats->max_ticks = elapsed_ticks; + } + + stats->total_ticks += elapsed_ticks; + stats->count++; + + return elapsed_ticks; +} + +/** + * @brief Получение минимального времени измерения + */ +static inline uint32_t BenchTime_GetMin(uint8_t channel) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return 0; + return hbt.channels[channel].stats.min_ticks; +} + +/** + * @brief Получение максимального времени измерения + */ +static inline uint32_t BenchTime_GetMax(uint8_t channel) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return 0; + return hbt.channels[channel].stats.max_ticks; +} + +/** + * @brief Получение среднего времени измерения + */ +static inline uint32_t BenchTime_GetAverage(uint8_t channel) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return 0; + BenchTimeStats_t* stats = &hbt.channels[channel].stats; + if (stats->count == 0) return 0; + return stats->total_ticks / stats->count; +} + +/** + * @brief Получение количества измерений + */ +static inline uint32_t BenchTime_GetCount(uint8_t channel) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return 0; + return hbt.channels[channel].stats.count; +} + +/** + * @brief Получение последнего измеренного времени + */ +static inline uint32_t BenchTime_GetLast(uint8_t channel) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return 0; + return hbt.channels[channel].stats.last_ticks; +} + +/** + * @brief Сброс статистики для канала + */ +static inline void BenchTime_ResetStats(uint8_t channel) { + if (channel >= BENCH_TIME_MAX_CHANNELS) return; + BenchTimeStats_t* stats = &hbt.channels[channel].stats; + stats->min_ticks = 0xFFFFFFFF; + stats->max_ticks = 0; + stats->total_ticks = 0; + stats->count = 0; + stats->last_ticks = 0; +} +#else //BENCH_TIME_ENABLE + +#define BenchTime_Init() +#define BenchTime_Start(channel, ticks, tick_period) 0 +#define BenchTime_End(channel, ticks) 0 +#define BenchTime_GetMin(channel) 0 +#define BenchTime_GetMax(channel) 0 +#define BenchTime_GetAverage(channel) 0 +#define BenchTime_GetCount(channel) 0 +#define BenchTime_GetLast(channel) 0 +#define BenchTime_ResetStats(channel) + +#endif //BENCH_TIME_ENABLE + +#endif // __BENCH_TIME_H_ + +/** BENCH_TIME + * @} + */ \ No newline at end of file diff --git a/MyLibs/Inc/evolve_optimizer.h b/MyLibs/Inc/gen_optimizer.h similarity index 82% rename from MyLibs/Inc/evolve_optimizer.h rename to MyLibs/Inc/gen_optimizer.h index 150186b..9a3b332 100644 --- a/MyLibs/Inc/evolve_optimizer.h +++ b/MyLibs/Inc/gen_optimizer.h @@ -1,9 +1,9 @@ /** ****************************************************************************** -* @file evolve_optimizer.h +* @file gen_optimizer.h * @brief Заголовочный файл для адаптивного подбора параметров ****************************************************************************** -* @addtogroup EVOLVE_OPTIMIZER Evolve optimizer +* @addtogroup GEN_OPTIMIZER Genetic optimizer * @ingroup MYLIBS_DEFINES * @brief Библиотека для эволюционного подбора параметров * @details @@ -15,24 +15,24 @@ Параметры для конфигурации: -- @ref ENABLE_EVOLVE_OPTIMIZATION - Включить оптимизацию параметров - Если библиотека отключена @ref ENABLE_EVOLVE_OPTIMIZATION, то вставляются +- @ref GEN_OPTIMIZATION_ENABLE - Включить оптимизацию параметров + Если библиотека отключена @ref GEN_OPTIMIZATION_ENABLE, то вставляются заглушки, никак не влияющие на параметры и остальную программу -- @ref EVOLVE_MAX_PARAMS - Максимальное количество параметров -- @ref EVOLVE_MAX_CANDIDATES - Максимальное количество кандидатов для обучения -- (опционально) @ref EVOLVE_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%) -- (опционально) @ref EVOLVE_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%) +- @ref GEN_MAX_PARAMS - Максимальное количество параметров +- @ref GEN_MAX_CANDIDATES - Максимальное количество кандидатов для обучения +- (опционально) @ref GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%) +- (опционально) @ref GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%) - (опционально) @ref ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений @par Пример использования: @code -#include "evolve_optimizer.h" +#include "gen_optimizer.h" #define N_PARAMS 4 #define N_CANDIDATES 100 #define N_BEST 10 #define MUTATION 0.1f float params[N_PARAMS]; -EvolveOptimizer_t optimizer; +GenOptimizer_t optimizer; // Формирование параметров uint16_t param_u16 = 800; @@ -45,11 +45,11 @@ params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f); params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f); // Инициалиазция -EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params); +GenOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params); // Шаг эволюции float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1) -EvolveOptimizer_Step(&optimizer, params, loss); +GenOptimizer_Step(&optimizer, params, loss); // Взятие следующих для эволюции параметров param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f); @@ -59,14 +59,14 @@ param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f); @endcode * @{ *****************************************************************************/ -#ifndef __EVOLVE_OPTIMIZER_H_ -#define __EVOLVE_OPTIMIZER_H_ +#ifndef __GEN_OPTIMIZER_H_ +#define __GEN_OPTIMIZER_H_ #include "mylibs_defs.h" #include #include -#ifdef ENABLE_EVOLVE_OPTIMIZATION +#ifdef GEN_OPTIMIZATION_ENABLE /** * @brief Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1) */ @@ -85,11 +85,11 @@ param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f); -#ifndef EVOLVE_MUTATION_MIN_PCT -#define EVOLVE_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss) +#ifndef GEN_MUTATION_MIN_PCT +#define GEN_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss) #endif -#ifndef EVOLVE_MUTATION_MAX_PCT -#define EVOLVE_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss) +#ifndef GEN_MUTATION_MAX_PCT +#define GEN_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss) #endif #ifndef ELOVLE_N_ELITE_CANDIDATE #define ELOVLE_N_ELITE_CANDIDATE 2 ///< Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) @@ -113,19 +113,19 @@ typedef struct { //INTERNAL float gen_mut; ///< Амплитуда мутации у текущей популяции - float loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата - float candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов - uint16_t sorted_idx[EVOLVE_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов -} EvolveOptimizer_t; + float loss[GEN_MAX_CANDIDATES]; ///< Loss для каждого кандидата + float candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]; ///< Параметры кандидатов + uint16_t sorted_idx[GEN_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов +} GenOptimizer_t; /** - * @cond EVOLVE_INTERNAL + * @cond GEN_INTERNAL */ // Вспомогательный указатель для сортировки -static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор +static GenOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор // функция условия сортировки static int cmp_idx(const void *a, const void *b) { @@ -152,7 +152,7 @@ static int cmp_idx(const void *a, const void *b) { * @return 0 — если окей, * -1 — если ошибка */ -__STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt, +static int GenOptimizer_Init(GenOptimizer_t* opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, @@ -162,15 +162,15 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt, if((opt == NULL) || (start_params == NULL)) return -1; - if(n_params > EVOLVE_MAX_PARAMS) + if(n_params > GEN_MAX_PARAMS) return -1; opt->n_params = n_params; - if(n_cand > EVOLVE_MAX_CANDIDATES) + if(n_cand > GEN_MAX_CANDIDATES) return -1; opt->n_cand = n_cand; - if(n_best > EVOLVE_MAX_CANDIDATES/2) + if(n_best > GEN_MAX_CANDIDATES/2) return -1; opt->n_best = n_best; @@ -222,7 +222,7 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt, * @note Функция использует глобальную внутреннюю переменную для сортировки. * Надо убедится что только один экземпляр функции запущен в момент времени */ -__STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt, +static int GenOptimizer_Step(GenOptimizer_t* opt, float* params, float loss) { @@ -230,15 +230,15 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt, return -1; uint16_t n_params = opt->n_params; - if(n_params > EVOLVE_MAX_PARAMS) + if(n_params > GEN_MAX_PARAMS) return -1; uint16_t n_cand = opt->n_cand; - if(n_cand > EVOLVE_MAX_CANDIDATES) + if(n_cand > GEN_MAX_CANDIDATES) return -1; uint16_t n_best = opt->n_best; - if(n_best > EVOLVE_MAX_CANDIDATES/2) + if(n_best > GEN_MAX_CANDIDATES/2) return -1; float mut = opt->mutation_amp; @@ -280,8 +280,8 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt, if(opt->stability < 0.0f) opt->stability = 0.0f; if(opt->stability > 1.0f) opt->stability = 1.0f; - float mut_pct = EVOLVE_MUTATION_MIN_PCT + - (EVOLVE_MUTATION_MAX_PCT - EVOLVE_MUTATION_MIN_PCT) * loss_ratio; + float mut_pct = GEN_MUTATION_MIN_PCT + + (GEN_MUTATION_MAX_PCT - GEN_MUTATION_MIN_PCT) * loss_ratio; float adaptive_mut = mut * (mut_pct / 100.0f); if (adaptive_mut < 0.0001f) adaptive_mut = 0.0001f; opt->gen_mut = adaptive_mut; @@ -315,7 +315,7 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt, return 0; } -#else // ENABLE_EVOLVE_OPTIMIZATION +#else // GEN_OPTIMIZATION_ENABLE //заглушки typedef struct { uint16_t n_params; @@ -324,15 +324,15 @@ typedef struct { float mutation_amp; float loss[0]; float candidates[0][0]; -} EvolveOptimizer_t; -#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params) -#define EvolveOptimizer_Step(opt, params, LossFunc) +} GenOptimizer_t; +#define GenOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params) +#define GenOptimizer_Step(opt, params, LossFunc) #define PARAM_SCALE(x, min_val, max_val) (x) #define PARAM_UNSCALE(val, min_val, max_val) (val) -#endif // ENABLE_EVOLVE_OPTIMIZATION +#endif // GEN_OPTIMIZATION_ENABLE -#endif // __EVOLVE_OPTIMIZER_H_ +#endif // __GEN_OPTIMIZER_H_ -/** EVOLVE_OPTIMIZER +/** GEN_OPTIMIZER * @} */ diff --git a/MyLibs/Inc/mylibs_config.h b/MyLibs/Inc/mylibs_config.h index 68208d2..5e56f3d 100644 --- a/MyLibs/Inc/mylibs_config.h +++ b/MyLibs/Inc/mylibs_config.h @@ -55,21 +55,38 @@ /** - * @addtogroup EVOLVE_CONFIG Evolve configs + * @addtogroup GEN_CONFIG Genetic configs * @ingroup MYLIBS_CONFIG - * @brief Конфигурация однослойного персептрона и алгоритма обучения + * @brief Конфигурация генетического алгоритма обучения * @{ */ -#define ENABLE_EVOLVE_OPTIMIZATION ///< Включить оптимизацию параметров -#define EVOLVE_MAX_PARAMS 20 ///< Максимальное количество параметров -#define EVOLVE_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения +#define GEN_OPTIMIZATION_ENABLE ///< Включить оптимизацию параметров +#define GEN_MAX_PARAMS 20 ///< Максимальное количество параметров +#define GEN_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения -/** EVOLVE_CONFIG +/** GEN_CONFIG * @} */ +/** + * @addtogroup GEN_CONFIG Genetic configs + * @ingroup MYLIBS_CONFIG + * @brief Конфигурация генетического алгоритма обучения + * @{ + */ + + +#define BENCH_TIME_ENABLE ///< Включить бенч времени +#define BENCH_TIME_MAX_CHANNELS 16 ///< Максимальное количество каналов измерения + +/** GEN_CONFIG + * @} + */ + + + /** * @addtogroup LIBS_CONFIG Libraries configs * @ingroup MYLIBS_CONFIG @@ -79,7 +96,7 @@ #define local_time() uwTick ///< Локальное время -#define INCLUDE_EVOLVE_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров +#define INCLUDE_GEN_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров #define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями #define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами #define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами diff --git a/MyLibs/Inc/mylibs_include.h b/MyLibs/Inc/mylibs_include.h index e9acba2..6f12c6c 100644 --- a/MyLibs/Inc/mylibs_include.h +++ b/MyLibs/Inc/mylibs_include.h @@ -79,8 +79,8 @@ #define HF_HandleFault(...) #endif -#ifdef INCLUDE_EVOLVE_OPTIMIZER -#include "evolve_optimizer.h" +#ifdef INCLUDE_GEN_OPTIMIZER +#include "gen_optimizer.h" #else typedef struct { uint16_t n_params; @@ -89,13 +89,29 @@ typedef struct { 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) +} GenOptimizer_t; +#define GenOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params) +#define GenOptimizer_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_BENCH_TEST +#include "bench_time.h" +#else //BENCH_TIME_ENABLE +#define BenchTime_Init() +#define BenchTime_Start(channel, ticks, tick_period) 0 +#define BenchTime_End(channel, ticks) 0 +#define BenchTime_GetMin(channel) 0 +#define BenchTime_GetMax(channel) 0 +#define BenchTime_GetAverage(channel) 0 +#define BenchTime_GetCount(channel) 0 +#define BenchTime_GetLast(channel) 0 +#define BenchTime_ResetStats(channel) +#endif //BENCH_TIME_ENABLE + #ifdef INCLUDE_GENERAL_PERIPH_LIBS #include "__general_flash.h" diff --git a/mainpage.h b/mainpage.h index 7b4af51..bfb5b30 100644 --- a/mainpage.h +++ b/mainpage.h @@ -14,7 +14,7 @@ MyLibs - это набор библиотек для удобной работы @subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES) - Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES) - Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE) -- Эволюционный алгоритм для оптимизации параметров (@ref EVOLVE_OPTIMIZER) +- Эволюционный алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER) - Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES) @subsubsection trace_module Трассировка @ref TRACE @@ -50,7 +50,7 @@ ProjectRoot/ │ │ ├── mylibs_config.h # Конфигурация библиотек │ │ ├── mylibs_defs.h # Общие определения и макросы │ │ ├── bit_access.h # Битовый доступ к регистрам -│ │ ├── evolve_optimizer.h # Оптимизатор (генетический алгоритм) +│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм) │ │ ├── trackers.h # Трекеры для отладки │ │ └── trace.h # Трассировка и логирование │ └── src/