From caf08ca619126d88bac3511d88a4716582230cdd Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Sun, 19 Oct 2025 16:51:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BE=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D1=8D=D0=B2=D0=BE=D0=BB=D1=8E?= =?UTF-8?q?=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D0=BE=D0=BC=D1=83=20=D0=B0=D0=BB?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D0=B8=D1=82=D0=BC=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Doc/Doxyfile | 2 +- Doc/html/annotated.html | 25 +- Doc/html/annotated_dup.js | 1 + Doc/html/classes.html | 15 +- .../dir_9e11e9a41112194af3eee6cc728f9515.html | 4 + .../dir_9e11e9a41112194af3eee6cc728f9515.js | 3 +- .../dir_eb423fea8a9c4b9b32b922020ec391e1.html | 2 + .../dir_eb423fea8a9c4b9b32b922020ec391e1.js | 1 + Doc/html/doxygen_crawl.html | 22 ++ Doc/html/evolve__optimizer_8h.html | 183 +++++++++ Doc/html/evolve__optimizer_8h.js | 7 + Doc/html/evolve__optimizer_8h__dep__incl.map | 5 + Doc/html/evolve__optimizer_8h__dep__incl.md5 | 1 + Doc/html/evolve__optimizer_8h__dep__incl.png | Bin 0 -> 2962 bytes Doc/html/evolve__optimizer_8h__incl.map | 13 + Doc/html/evolve__optimizer_8h__incl.md5 | 1 + Doc/html/evolve__optimizer_8h__incl.png | Bin 0 -> 6256 bytes Doc/html/evolve__optimizer_8h_source.html | 356 +++++++++++++++++ Doc/html/files.html | 28 +- Doc/html/functions.html | 19 + Doc/html/functions_vars.html | 19 + Doc/html/globals.html | 16 + Doc/html/globals_defs.html | 14 + Doc/html/globals_func.html | 6 + ...__b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html | 6 +- ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map | 4 +- ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 | 2 +- ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png | Bin 1167 -> 1124 bytes .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html | 18 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.map | 4 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 | 2 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.png | Bin 1155 -> 1091 bytes ...r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html | 6 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map | 4 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 | 2 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png | Bin 1156 -> 1114 bytes .../group___e_v_o_l_v_e___c_o_n_f_i_g.html | 200 ++++++++++ Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.js | 6 + .../group___e_v_o_l_v_e___c_o_n_f_i_g.map | 4 + .../group___e_v_o_l_v_e___c_o_n_f_i_g.md5 | 1 + .../group___e_v_o_l_v_e___c_o_n_f_i_g.png | Bin 0 -> 1033 bytes ...oup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html | 359 ++++++++++++++++++ ...group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js | 16 + ...roup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.map | 4 + ...roup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 | 1 + ...roup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.png | Bin 0 -> 1110 bytes Doc/html/group___l_i_b_s___c_o_n_f_i_g.html | 28 +- Doc/html/group___l_i_b_s___c_o_n_f_i_g.js | 1 + Doc/html/group___m_y_l_i_b_s___a_l_l.html | 8 +- Doc/html/group___m_y_l_i_b_s___a_l_l.js | 2 +- Doc/html/group___m_y_l_i_b_s___a_l_l.map | 6 +- Doc/html/group___m_y_l_i_b_s___a_l_l.md5 | 2 +- Doc/html/group___m_y_l_i_b_s___a_l_l.png | Bin 2804 -> 2675 bytes .../group___m_y_l_i_b_s___c_o_n_f_i_g.html | 11 +- Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js | 1 + .../group___m_y_l_i_b_s___c_o_n_f_i_g.map | 9 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.md5 | 2 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.png | Bin 2610 -> 3423 bytes .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html | 25 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.js | 1 + .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.map | 19 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 | 2 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.png | Bin 9417 -> 10469 bytes Doc/html/group___t_r_a_c_e.html | 14 +- Doc/html/group___t_r_a_c_e.map | 12 +- Doc/html/group___t_r_a_c_e.md5 | 2 +- Doc/html/group___t_r_a_c_e.png | Bin 6036 -> 5961 bytes Doc/html/group___t_r_a_c_e___g_p_i_o.html | 2 +- ...group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html | 2 +- ...group___t_r_a_c_e___r_t_t___f_l_a_s_h.html | 2 +- Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html | 2 +- Doc/html/group___t_r_a_c_k_e_r_s.html | 6 +- Doc/html/group___t_r_a_c_k_e_r_s.map | 4 +- Doc/html/group___t_r_a_c_k_e_r_s.md5 | 2 +- Doc/html/group___t_r_a_c_k_e_r_s.png | Bin 1162 -> 1118 bytes .../group___u_t_i_l_s___d_e_f_i_n_e_s.html | 14 +- .../group___u_t_i_l_s___d_e_f_i_n_e_s.map | 4 +- .../group___u_t_i_l_s___d_e_f_i_n_e_s.md5 | 2 +- .../group___u_t_i_l_s___d_e_f_i_n_e_s.png | Bin 1097 -> 1056 bytes Doc/html/index.html | 34 +- Doc/html/mainpage_8h_source.html | 218 +++++++++++ Doc/html/menudata.js | 11 + Doc/html/mylibs__config_8h.html | 75 ++-- Doc/html/mylibs__config_8h.js | 4 + Doc/html/mylibs__config_8h__dep__incl.map | 67 ++-- Doc/html/mylibs__config_8h__dep__incl.md5 | 2 +- Doc/html/mylibs__config_8h__dep__incl.png | Bin 63407 -> 70866 bytes Doc/html/mylibs__config_8h_source.html | 62 +-- Doc/html/mylibs__defs_8h.html | 63 +-- Doc/html/mylibs__defs_8h__dep__incl.map | 63 +-- Doc/html/mylibs__defs_8h__dep__incl.md5 | 2 +- Doc/html/mylibs__defs_8h__dep__incl.png | Bin 59930 -> 67656 bytes Doc/html/mylibs__defs_8h_source.html | 259 +++++++------ Doc/html/mylibs__include_8h.html | 69 ++-- Doc/html/mylibs__include_8h__incl.map | 67 ++-- Doc/html/mylibs__include_8h__incl.md5 | 2 +- Doc/html/mylibs__include_8h__incl.png | Bin 29292 -> 44344 bytes Doc/html/mylibs__include_8h_source.html | 245 +++++------- Doc/html/navtreedata.js | 4 +- Doc/html/navtreeindex0.js | 208 +++++----- Doc/html/navtreeindex1.js | 27 +- Doc/html/search/all_10.js | 2 +- Doc/html/search/all_16.js | 2 +- Doc/html/search/all_1b.js | 2 +- Doc/html/search/all_2.js | 20 +- Doc/html/search/all_3.js | 9 +- Doc/html/search/all_4.js | 17 +- Doc/html/search/all_6.js | 2 +- Doc/html/search/all_8.js | 10 +- Doc/html/search/all_9.js | 3 +- Doc/html/search/all_a.js | 2 +- Doc/html/search/all_b.js | 5 +- Doc/html/search/all_c.js | 3 +- Doc/html/search/all_d.js | 10 +- Doc/html/search/classes_0.js | 3 +- Doc/html/search/classes_1.js | 3 +- Doc/html/search/classes_2.js | 2 +- Doc/html/search/classes_3.js | 2 +- Doc/html/search/classes_4.js | 3 +- Doc/html/search/classes_5.js | 7 +- Doc/html/search/classes_6.js | 8 + Doc/html/search/files_1.js | 5 +- Doc/html/search/files_2.js | 7 +- Doc/html/search/files_3.js | 5 +- Doc/html/search/files_4.js | 5 + Doc/html/search/functions_0.js | 12 +- Doc/html/search/functions_1.js | 12 +- Doc/html/search/functions_2.js | 6 +- Doc/html/search/functions_3.js | 15 +- Doc/html/search/functions_4.js | 14 + Doc/html/search/groups_2.js | 2 +- Doc/html/search/groups_3.js | 7 +- Doc/html/search/groups_4.js | 4 +- Doc/html/search/groups_6.js | 2 +- Doc/html/search/groups_b.js | 3 +- Doc/html/search/groups_f.js | 2 +- Doc/html/search/pages_1.js | 2 +- Doc/html/search/pages_7.js | 2 +- Doc/html/search/pages_c.js | 2 +- Doc/html/search/searchdata.js | 8 +- Doc/html/search/variables_0.js | 3 +- Doc/html/search/variables_1.js | 3 +- Doc/html/search/variables_2.js | 6 +- Doc/html/search/variables_3.js | 5 +- Doc/html/search/variables_4.js | 6 +- Doc/html/search/variables_5.js | 3 +- Doc/html/search/variables_6.js | 11 +- Doc/html/search/variables_7.js | 21 +- Doc/html/search/variables_8.js | 3 +- Doc/html/search/variables_9.js | 8 + Doc/html/search/variables_a.js | 21 + Doc/html/search/variables_b.js | 4 + .../struct_evolve_optimizer__t-members.html | 123 ++++++ Doc/html/struct_evolve_optimizer__t.html | 278 ++++++++++++++ Doc/html/struct_evolve_optimizer__t.js | 10 + Doc/html/struct_h_f___stack_frame__t.html | 2 +- Doc/html/struct_r_t_t___flash_header__t.html | 2 +- Doc/html/topics.html | 26 +- Doc/html/trackers_8h_source.html | 46 ++- Doc/html/unionuint16___bit_type_def.html | 2 +- Doc/html/unionuint32___bit_type_def.html | 2 +- Doc/html/unionuint64___bit_type_def.html | 2 +- Doc/html/unionuint8___bit_type_def.html | 2 +- Doc/latex/annotated.tex | 1 + Doc/latex/bit__access_8h.tex | 6 +- Doc/latex/bit__access_8h__dep__incl.pdf | Bin 20657 -> 20659 bytes Doc/latex/bit__access_8h__incl.pdf | Bin 22135 -> 22134 bytes Doc/latex/evolve__optimizer_8h.tex | 52 +++ Doc/latex/evolve__optimizer_8h__dep__incl.md5 | 1 + Doc/latex/evolve__optimizer_8h__dep__incl.pdf | Bin 0 -> 22284 bytes Doc/latex/evolve__optimizer_8h__incl.md5 | 1 + Doc/latex/evolve__optimizer_8h__incl.pdf | Bin 0 -> 23565 bytes Doc/latex/evolve__optimizer_8h_source.tex | 224 +++++++++++ Doc/latex/files.tex | 2 + Doc/latex/general__gpio_8c.tex | 3 +- Doc/latex/general__gpio_8c__incl.pdf | Bin 22451 -> 22451 bytes Doc/latex/general__gpio_8h.tex | 6 +- Doc/latex/general__gpio_8h__dep__incl.pdf | Bin 22848 -> 22847 bytes Doc/latex/general__gpio_8h__incl.pdf | Bin 22499 -> 22498 bytes Doc/latex/general__tim_8c.tex | 3 +- Doc/latex/general__tim_8c__incl.pdf | Bin 22734 -> 22735 bytes Doc/latex/general__tim_8h.tex | 6 +- Doc/latex/general__tim_8h__dep__incl.pdf | Bin 21347 -> 21347 bytes Doc/latex/general__tim_8h__incl.pdf | Bin 22786 -> 22787 bytes ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 | 2 +- ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf | Bin 13916 -> 14243 bytes ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex | 5 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 | 2 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf | Bin 13445 -> 14043 bytes .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex | 13 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 | 2 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf | Bin 13599 -> 13525 bytes ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex | 5 +- .../group___e_v_o_l_v_e___c_o_n_f_i_g.md5 | 1 + .../group___e_v_o_l_v_e___c_o_n_f_i_g.pdf | Bin 0 -> 13071 bytes .../group___e_v_o_l_v_e___c_o_n_f_i_g.tex | 75 ++++ ...roup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 | 1 + ...roup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf | Bin 0 -> 14651 bytes ...roup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex | 187 +++++++++ Doc/latex/group___g_p_i_o___i_n_i_t.pdf | Bin 13404 -> 13405 bytes Doc/latex/group___g_p_i_o___i_n_i_t.tex | 3 +- Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf | Bin 13696 -> 13695 bytes Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex | 27 +- Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf | Bin 17211 -> 17211 bytes Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex | 3 +- Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf | Bin 18332 -> 18332 bytes Doc/latex/group___m_y___l_i_b_s___t_i_m.tex | 3 +- Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 | 2 +- Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf | Bin 16589 -> 16525 bytes Doc/latex/group___m_y_l_i_b_s___a_l_l.tex | 7 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.md5 | 2 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.pdf | Bin 15443 -> 16404 bytes .../group___m_y_l_i_b_s___c_o_n_f_i_g.tex | 6 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 | 2 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf | Bin 18496 -> 20382 bytes .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex | 10 +- ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf | Bin 14292 -> 14292 bytes ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex | 3 +- ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf | Bin 11871 -> 11871 bytes ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex | 3 +- ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf | Bin 14065 -> 14065 bytes ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex | 3 +- ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf | Bin 15516 -> 15516 bytes ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex | 3 +- ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf | Bin 13109 -> 13109 bytes ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex | 3 +- ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf | Bin 13140 -> 13138 bytes ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex | 3 +- ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf | Bin 14377 -> 14377 bytes ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex | 3 +- .../group___m_y_l_i_b_s___t_i_m___o_c.pdf | Bin 14476 -> 14476 bytes .../group___m_y_l_i_b_s___t_i_m___o_c.tex | 3 +- Doc/latex/group___t_i_m___i_n_i_t.pdf | Bin 13418 -> 13418 bytes Doc/latex/group___t_i_m___i_n_i_t.tex | 3 +- Doc/latex/group___t_r_a_c_e.md5 | 2 +- Doc/latex/group___t_r_a_c_e.pdf | Bin 17677 -> 17814 bytes Doc/latex/group___t_r_a_c_e.tex | 3 +- Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf | Bin 13334 -> 13333 bytes Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex | 3 +- Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf | Bin 13991 -> 13991 bytes Doc/latex/group___t_r_a_c_e___g_p_i_o.tex | 3 +- .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf | Bin 13602 -> 13602 bytes .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex | 3 +- .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf | Bin 14391 -> 14391 bytes .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex | 3 +- Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf | Bin 13663 -> 13663 bytes Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex | 3 +- Doc/latex/group___t_r_a_c_k_e_r_s.md5 | 2 +- Doc/latex/group___t_r_a_c_k_e_r_s.pdf | Bin 13999 -> 14103 bytes Doc/latex/group___t_r_a_c_k_e_r_s.tex | 5 +- .../group___u_t_i_l_s___d_e_f_i_n_e_s.md5 | 2 +- .../group___u_t_i_l_s___d_e_f_i_n_e_s.pdf | Bin 13375 -> 13679 bytes .../group___u_t_i_l_s___d_e_f_i_n_e_s.tex | 13 +- Doc/latex/index.tex | 34 +- Doc/latex/mainpage_8h_source.tex | 110 ++++++ Doc/latex/mylibs__config_8h.tex | 14 +- Doc/latex/mylibs__config_8h__dep__incl.md5 | 2 +- Doc/latex/mylibs__config_8h__dep__incl.pdf | Bin 25362 -> 26500 bytes Doc/latex/mylibs__config_8h__incl.pdf | Bin 21708 -> 21708 bytes Doc/latex/mylibs__config_8h_source.tex | 62 +-- Doc/latex/mylibs__defs_8h.tex | 6 +- Doc/latex/mylibs__defs_8h__dep__incl.md5 | 2 +- Doc/latex/mylibs__defs_8h__dep__incl.pdf | Bin 25220 -> 26365 bytes Doc/latex/mylibs__defs_8h__incl.pdf | Bin 22009 -> 22009 bytes Doc/latex/mylibs__defs_8h_source.tex | 259 +++++++------ Doc/latex/mylibs__include_8h.tex | 5 +- Doc/latex/mylibs__include_8h__incl.md5 | 2 +- Doc/latex/mylibs__include_8h__incl.pdf | Bin 24983 -> 26467 bytes Doc/latex/mylibs__include_8h_source.tex | 243 +++++------- Doc/latex/refman.tex | 4 + Doc/latex/struct_evolve_optimizer__t.tex | 143 +++++++ Doc/latex/struct_t_i_m___encoder_type_def.tex | 3 +- ..._t_i_m___encoder_type_def__coll__graph.pdf | Bin 17027 -> 17028 bytes Doc/latex/topics.tex | 4 +- Doc/latex/trace_8h.tex | 6 +- Doc/latex/trace_8h__dep__incl.pdf | Bin 20650 -> 20652 bytes Doc/latex/trace_8h__incl.pdf | Bin 22340 -> 22340 bytes Doc/latex/trackers_8h.tex | 6 +- Doc/latex/trackers_8h__dep__incl.pdf | Bin 21171 -> 21172 bytes Doc/latex/trackers_8h__incl.pdf | Bin 22652 -> 22651 bytes Doc/latex/trackers_8h_source.tex | 46 ++- MyLibsGeneral/Inc/evolve_optimizer.h | 273 +++++++++++++ MyLibsGeneral/Inc/mylibs_config.h | 16 + MyLibsGeneral/Inc/mylibs_defs.h | 9 +- MyLibsGeneral/Inc/mylibs_include.h | 161 +++----- MyLibsGeneral/Inc/trackers.h | 14 +- MyLibsGeneral/mainpage.h | 104 +++++ 288 files changed, 4616 insertions(+), 1513 deletions(-) create mode 100644 .gitignore create mode 100644 Doc/html/evolve__optimizer_8h.html create mode 100644 Doc/html/evolve__optimizer_8h.js create mode 100644 Doc/html/evolve__optimizer_8h__dep__incl.map create mode 100644 Doc/html/evolve__optimizer_8h__dep__incl.md5 create mode 100644 Doc/html/evolve__optimizer_8h__dep__incl.png create mode 100644 Doc/html/evolve__optimizer_8h__incl.map create mode 100644 Doc/html/evolve__optimizer_8h__incl.md5 create mode 100644 Doc/html/evolve__optimizer_8h__incl.png create mode 100644 Doc/html/evolve__optimizer_8h_source.html create mode 100644 Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.html create mode 100644 Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.js create mode 100644 Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.map create mode 100644 Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 create mode 100644 Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.png create mode 100644 Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html create mode 100644 Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js create mode 100644 Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.map create mode 100644 Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 create mode 100644 Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.png create mode 100644 Doc/html/mainpage_8h_source.html create mode 100644 Doc/html/search/classes_6.js create mode 100644 Doc/html/search/files_4.js create mode 100644 Doc/html/search/functions_4.js create mode 100644 Doc/html/search/variables_9.js create mode 100644 Doc/html/search/variables_a.js create mode 100644 Doc/html/search/variables_b.js create mode 100644 Doc/html/struct_evolve_optimizer__t-members.html create mode 100644 Doc/html/struct_evolve_optimizer__t.html create mode 100644 Doc/html/struct_evolve_optimizer__t.js create mode 100644 Doc/latex/evolve__optimizer_8h.tex create mode 100644 Doc/latex/evolve__optimizer_8h__dep__incl.md5 create mode 100644 Doc/latex/evolve__optimizer_8h__dep__incl.pdf create mode 100644 Doc/latex/evolve__optimizer_8h__incl.md5 create mode 100644 Doc/latex/evolve__optimizer_8h__incl.pdf create mode 100644 Doc/latex/evolve__optimizer_8h_source.tex create mode 100644 Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 create mode 100644 Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf create mode 100644 Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex create mode 100644 Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 create mode 100644 Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf create mode 100644 Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex create mode 100644 Doc/latex/mainpage_8h_source.tex create mode 100644 Doc/latex/struct_evolve_optimizer__t.tex create mode 100644 MyLibsGeneral/Inc/evolve_optimizer.h create mode 100644 MyLibsGeneral/mainpage.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f83ae28 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/MyLibsGeneral/.vscode/ diff --git a/Doc/Doxyfile b/Doc/Doxyfile index ba9121b..bf9845b 100644 --- a/Doc/Doxyfile +++ b/Doc/Doxyfile @@ -1119,7 +1119,7 @@ EXCLUDE_PATTERNS = # wildcard * is used, a substring. Examples: ANamespace, AClass, # ANamespace::AClass, ANamespace::*Test -EXCLUDE_SYMBOLS = +EXCLUDE_SYMBOLS = Q16_MUL # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include diff --git a/Doc/html/annotated.html b/Doc/html/annotated.html index a2c2e40..17dc897 100644 --- a/Doc/html/annotated.html +++ b/Doc/html/annotated.html @@ -102,18 +102,19 @@ $(function(){initNavTree('annotated.html','',''); });
Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - + + + + + + + + + + + + +
 CGPIO_LEDTypeDefСтруктура светодиода
 CGPIO_SwitchTypeDefСтруктура кнопки
 CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSPI_SettingsTypeDef
 CTIM_EncoderTypeDefСтруктура инициализации енкодера
 CTIM_SettingsTypeDefСтруктура инициализации таймера
 CUART_SettingsTypeDef
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
 CEvolveOptimizer_tСтруктура эволюционного оптимизатора
 CGPIO_LEDTypeDefСтруктура светодиода
 CGPIO_SwitchTypeDefСтруктура кнопки
 CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSPI_SettingsTypeDef
 CTIM_EncoderTypeDefСтруктура инициализации енкодера
 CTIM_SettingsTypeDefСтруктура инициализации таймера
 CUART_SettingsTypeDef
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
diff --git a/Doc/html/annotated_dup.js b/Doc/html/annotated_dup.js index 555ef5f..74f25da 100644 --- a/Doc/html/annotated_dup.js +++ b/Doc/html/annotated_dup.js @@ -1,5 +1,6 @@ var annotated_dup = [ + [ "EvolveOptimizer_t", "struct_evolve_optimizer__t.html", "struct_evolve_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/classes.html b/Doc/html/classes.html index 6035bf4..29c6937 100644 --- a/Doc/html/classes.html +++ b/Doc/html/classes.html @@ -100,24 +100,27 @@ $(function(){initNavTree('classes.html','',''); });
Class Index
-
G | H | R | S | T | U
+
E | G | H | R | S | T | U
diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html index 28e8558..480c66b 100644 --- a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html +++ b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html @@ -118,6 +118,10 @@ $(function(){initNavTree('dir_9e11e9a41112194af3eee6cc728f9515.html','',''); }); Directories
 Inc
 Src + + +

+Files

 
mainpage.h
diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.js b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.js index c8b3f9e..7596784 100644 --- a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.js +++ b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.js @@ -1,5 +1,6 @@ var dir_9e11e9a41112194af3eee6cc728f9515 = [ [ "Inc", "dir_eb423fea8a9c4b9b32b922020ec391e1.html", "dir_eb423fea8a9c4b9b32b922020ec391e1" ], - [ "Src", "dir_9c80311a018e1f8cfb6659b73d634be4.html", "dir_9c80311a018e1f8cfb6659b73d634be4" ] + [ "Src", "dir_9c80311a018e1f8cfb6659b73d634be4.html", "dir_9c80311a018e1f8cfb6659b73d634be4" ], + [ "mainpage.h", "mainpage_8h_source.html", null ] ]; \ No newline at end of file diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html index f6e79a3..62931e7 100644 --- a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html @@ -118,6 +118,8 @@ Files
 __general_uart.h
 bit_access.h  Заголочный файл для дефайнов битового доступа.
+
 evolve_optimizer.h + Заголовочный файл для адаптивного подбора параметров
 general_gpio.h  Заголовочный файл для модуля инициализации портов и работы с ними.
 general_tim.h diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js index 9316149..68cf10b 100644 --- a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js @@ -4,6 +4,7 @@ var dir_eb423fea8a9c4b9b32b922020ec391e1 = [ "__general_spi.h", "____general__spi_8h_source.html", null ], [ "__general_uart.h", "____general__uart_8h_source.html", null ], [ "bit_access.h", "bit__access_8h.html", "bit__access_8h" ], + [ "evolve_optimizer.h", "evolve__optimizer_8h.html", "evolve__optimizer_8h" ], [ "general_gpio.h", "general__gpio_8h.html", "general__gpio_8h" ], [ "general_tim.h", "general__tim_8h.html", "general__tim_8h" ], [ "mylibs_config.h", "mylibs__config_8h.html", "mylibs__config_8h" ], diff --git a/Doc/html/doxygen_crawl.html b/Doc/html/doxygen_crawl.html index a4b8d18..41c0090 100644 --- a/Doc/html/doxygen_crawl.html +++ b/Doc/html/doxygen_crawl.html @@ -23,6 +23,8 @@ + + @@ -57,6 +59,15 @@ + + + + + + + + + @@ -67,6 +78,7 @@ + @@ -204,12 +216,22 @@ + + + + + + + + + + diff --git a/Doc/html/evolve__optimizer_8h.html b/Doc/html/evolve__optimizer_8h.html new file mode 100644 index 0000000..42c96c5 --- /dev/null +++ b/Doc/html/evolve__optimizer_8h.html @@ -0,0 +1,183 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h File Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
evolve_optimizer.h File Reference
+
+
+ +

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

+
#include "mylibs_defs.h"
+#include <stdint.h>
+#include <stdlib.h>
+
Include dependency graph for evolve_optimizer.h:
+
+
+ +
This graph shows which files directly or indirectly include this file:
+
+
+ +
+

Go to the source code of this file.

+ + + + +

+Classes

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

+Macros

#define PARAM_SCALE_Q16(x, min_val, max_val)
 Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val)
 Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val].
+ + + + + +

+Functions

__STATIC_INLINE void EvolveOptimizer_Init (EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
 Инициализация эволюционного оптимизатора.
__STATIC_INLINE void EvolveOptimizer_Step (EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
 Один шаг эволюционного оптимизатора.
+

Detailed Description

+

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

+ +

Definition in file evolve_optimizer.h.

+
+
+ +
+ + + + diff --git a/Doc/html/evolve__optimizer_8h.js b/Doc/html/evolve__optimizer_8h.js new file mode 100644 index 0000000..46d46b4 --- /dev/null +++ b/Doc/html/evolve__optimizer_8h.js @@ -0,0 +1,7 @@ +var evolve__optimizer_8h = +[ + [ "PARAM_SCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc", null ], + [ "PARAM_UNSCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba", null ], + [ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9", null ], + [ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563", null ] +]; \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__dep__incl.map b/Doc/html/evolve__optimizer_8h__dep__incl.map new file mode 100644 index 0000000..2741c58 --- /dev/null +++ b/Doc/html/evolve__optimizer_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/Doc/html/evolve__optimizer_8h__dep__incl.md5 b/Doc/html/evolve__optimizer_8h__dep__incl.md5 new file mode 100644 index 0000000..4ae7408 --- /dev/null +++ b/Doc/html/evolve__optimizer_8h__dep__incl.md5 @@ -0,0 +1 @@ +41a81c5527cb10d478e05e49562aedc3 \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..02dd10484d1dab494e853af970ea4f13c2640266 GIT binary patch literal 2962 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 + + + + + + + + + + + + diff --git a/Doc/html/evolve__optimizer_8h__incl.md5 b/Doc/html/evolve__optimizer_8h__incl.md5 new file mode 100644 index 0000000..29bbece --- /dev/null +++ b/Doc/html/evolve__optimizer_8h__incl.md5 @@ -0,0 +1 @@ +4993f7378dc2ed7a2e950385e8313f89 \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__incl.png b/Doc/html/evolve__optimizer_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..09857dc982af6b57fa35d714b2e78eea0d20295d GIT binary patch literal 6256 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 ZP32$n>>Hg=yZVIyXsPRgQL0vm{{U@**NgxF literal 0 HcmV?d00001 diff --git a/Doc/html/evolve__optimizer_8h_source.html b/Doc/html/evolve__optimizer_8h_source.html new file mode 100644 index 0000000..70acfe3 --- /dev/null +++ b/Doc/html/evolve__optimizer_8h_source.html @@ -0,0 +1,356 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
evolve_optimizer.h
+
+
+Go to the documentation of this file.
1/**
+
2******************************************************************************
+
3* @file evolve_optimizer.h
+
4* @brief Заголовочный файл для адаптивного подбора параметров
+
5******************************************************************************
+
6* @addtogroup EVOLVE_OPTIMIZER Evolve optimizer
+
7* @ingroup MYLIBS_DEFINES
+
8* @brief Библиотека для эволюционного подбора параметров
+
9* @details
+
10Поддерживает:
+
11- Любое количество параметров
+
12- Генерацию новых параметров на основе лучших кандидатов
+
13- Мутацию для поиска оптимальных параметров
+
14- Несколько независимых оптимизаторов в одной программе
+
15
+
16Если библиотека отключена @ref ENABLE_EVOLVE_OPTIMIZATION, то вставляются
+
17заглушки, никак не влияющие на параметры и остальную программу
+
18
+
19@par Пример использования:
+
20@code
+
21#include "evolve_optimizer.h"
+
22#define N_PARAMS 4
+
23#define N_CANDIDATES 100
+
24#define N_BEST 10
+
25#define IQ_MUTATION 655
+
26int32_t params[N_PARAMS];
+
27EvolveOptimizer_t optimizer;
+
28
+
29// Формирование параметров
+
30uint16_t param_u16 = 800;
+
31float param_f = 0.01f;
+
32uint8_t param_u8 = 40;
+
33int16_t param_i16 = 1600;
+
34params[0] = PARAM_SCALE_Q16(param_u16, 0, 1000);
+
35params[1] = PARAM_SCALE_Q16(param_f, 0.001f, 0.1f);
+
36params[2] = PARAM_SCALE_Q16(param_u8, 10, 100);
+
37params[3] = PARAM_SCALE_Q16(param_i16, 500, 5000);
+
38
+
39// Инициалиазция
+
40EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, IQ_MUTATION, params);
+
41
+
42// Шаг эволюции
+
43int32_t loss = calc_iq_loss(); // расчет эффективности параметров
+
44EvolveOptimizer_Step(&optimizer, params, loss);
+
45
+
46// Взятие следующих для эволюции параметров
+
47param_u16 = PARAM_UNSCALE_Q16(params[0], 0, 1000);
+
48param_f = PARAM_UNSCALE_Q16(params[1], 0.001f, 0.1f);
+
49param_u8 = PARAM_UNSCALE_Q16(params[2], 10, 100);
+
50param_i16 = PARAM_UNSCALE_Q16(params[3], 500, 5000);
+
51@endcode
+
52* @{
+
53*****************************************************************************/
+
54#ifndef __EVOLVE_OPTIMIZER_H_
+
55#define __EVOLVE_OPTIMIZER_H_
+
56
+
57#include "mylibs_defs.h"
+
58#include <stdint.h>
+
59#include <stdlib.h>
+
60
+
61#ifdef ENABLE_EVOLVE_OPTIMIZATION
+
62
+
63#define Q16_MUL(a,b) ((int32_t)(((int64_t)(a) * (int64_t)(b)) >> 16))
+
64
+
65/**
+
66 * @brief Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
+
67 */
+
+
68#define PARAM_SCALE_Q16(x, min_val, max_val) \
+
69((int32_t)((((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val))) * 65536.0f))
+
+
70
+
71/**
+
72 * @brief Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val]
+
73 */
+
+
74#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) \
+
75(((float)(q16_val) / 65536.0f) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
+
+
76
+
77
+
78/**
+
79 * @brief Структура эволюционного оптимизатора
+
80 */
+
+
81typedef struct {
+
82 uint16_t n_params; ///< Количество параметров
+
83 uint16_t n_cand; ///< Количество кандидатов
+
84 uint16_t n_best; ///< Количество лучших, усредняемых
+
85 uint16_t iq_mutation; ///< Амплитуда мутации в Q16.16
+
86 uint16_t cand_index; ///< Индекс кандидата для обработки
+
87 int32_t loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата
+
88 int32_t candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов
+ +
+
90
+
91
+
92/**
+
93 * @brief Инициализация эволюционного оптимизатора.
+
94 * @param opt Указатель на структуру оптимизатора
+
95 * @param n_params Количество параметров в одном кандидате
+
96 * @param n_cand Количество кандидатов
+
97 * @param n_best Количество лучших, усредняемых
+
98 * @param iq_mutation Амплитуда мутации в Q16.16
+
99 * @param start_params Начальные параметры (Q16.16)
+
100 */
+
+
101__STATIC_INLINE void EvolveOptimizer_Init(EvolveOptimizer_t* opt,
+
102 uint16_t n_params,
+
103 uint16_t n_cand,
+
104 uint16_t n_best,
+
105 uint16_t iq_mutation,
+
106 int32_t* start_params)
+
107{
+
108 if(check_null_ptr_2(opt, start_params))
+
109 return;
+
110
+
111 opt->n_params = n_params;
+
112 opt->n_cand = n_cand;
+
113 opt->n_best = n_best;
+
114 opt->iq_mutation = iq_mutation;
+
115
+
116 for (uint16_t i = 0; i < n_cand; i++) {
+
117 for (uint16_t j = 0; j < n_params; j++) {
+
118 opt->candidates[i][j] = start_params[j];
+
119 }
+
120 opt->loss[i] = 0;
+
121 }
+
122}
+
+
123
+
124
+
125/**
+
126 * @brief Один шаг эволюционного оптимизатора.
+
127 * @param opt Указатель на структуру оптимизатора
+
128 * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры)
+
129 * @param loss Loss текущего кандидата (Q16.16)
+
130 * @details
+
131 * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата.
+
132 * Если накоплено n_cand кандидатов, генерируется новое поколение.
+
133 * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.
+
134 *
+
135 * На выходе params содержит параметры следующего кандидата для измерений.
+
136 */
+
+
137__STATIC_INLINE void EvolveOptimizer_Step(EvolveOptimizer_t* opt,
+
138 int32_t* params,
+
139 int32_t loss)
+
140{
+
141 if(check_null_ptr_2(opt, params))
+
142 return;
+
143
+
144 uint16_t n_params = opt->n_params;
+
145 uint16_t n_cand = opt->n_cand;
+
146 uint16_t n_best = opt->n_best;
+
147 uint16_t mut = opt->iq_mutation;
+
148
+
149 // 1. Сохраняем loss текущего кандидата
+
150 opt->loss[opt->cand_index] = loss;
+
151
+
152 opt->cand_index++;
+
153
+
154 if (opt->cand_index >= n_cand) {
+
155 // 2. Сортируем текущее поколение по loss
+
156 for (uint16_t i = 0; i < n_cand - 1; i++) {
+
157 for (uint16_t j = i + 1; j < n_cand; j++) {
+
158 if (opt->loss[j] < opt->loss[i]) {
+
159 int32_t tmp_loss = opt->loss[i];
+
160 opt->loss[i] = opt->loss[j];
+
161 opt->loss[j] = tmp_loss;
+
162
+
163 for (uint16_t k = 0; k < n_params; k++) {
+
164 int32_t tmp = opt->candidates[i][k];
+
165 opt->candidates[i][k] = opt->candidates[j][k];
+
166 opt->candidates[j][k] = tmp;
+
167 }
+
168 }
+
169 }
+
170 }
+
171
+
172 // 3. Генерируем новое поколение: каждый кандидат берется случайно из лучших с мутацией
+
173 uint16_t n_elite = 2; // количество элитных кандидатов, которые сохраняем без изменений
+
174 for (uint16_t c = 0; c < n_cand; c++) {
+
175 if (c < n_elite) {
+
176 // Копируем лучших кандидатов напрямую без мутации
+
177 for (uint16_t i = 0; i < n_params; i++) {
+
178 opt->candidates[c][i] = opt->candidates[c][i]; // просто сохраняем параметры
+
179 }
+
180 opt->loss[c] = 0;
+
181 } else {
+
182 // Остальные кандидаты формируются с кроссовером и мутацией
+
183 for (uint16_t i = 0; i < n_params; i++) {
+
184 int32_t noise = (rand() % (2 * mut)) - mut;
+
185 uint16_t parent = rand() % n_best; // каждый параметр из случайного лучшего
+
186 opt->candidates[c][i] = opt->candidates[parent][i] + noise;
+
187 }
+
188 opt->loss[c] = 0;
+
189 }
+
190 }
+
191 opt->cand_index = 0;
+
192 }
+
193
+
194 // 4. Возвращаем параметры следующего кандидата
+
195 for (uint16_t i = 0; i < opt->n_params; i++)
+
196 params[i] = opt->candidates[opt->cand_index][i];
+
197}
+
+
198#else // ENABLE_EVOLVE_OPTIMIZATION
+
199//заглушки
+
200typedef struct {
+
201 uint16_t n_params;
+
202 uint16_t n_cand;
+
203 uint16_t n_best;
+
204 uint16_t iq_mutation;
+
205 int32_t loss[0];
+
206 int32_t candidates[0][0];
+ +
208#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
+
209#define EvolveOptimizer_Step(opt, params, LossFunc)
+
210#define PARAM_SCALE_Q16(x, min_val, max_val) (x)
+
211#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val) (q16_val)
+
212#endif // ENABLE_EVOLVE_OPTIMIZATION
+
213
+
214#endif // __EVOLVE_OPTIMIZER_H_
+
215
+
216/** EVOLVE_OPTIMIZER
+
217 * @}
+
218 */
+
#define check_null_ptr_2(p1, p2)
Проверить два указателя на NULL.
Definition mylibs_defs.h:41
+
#define EVOLVE_MAX_CANDIDATES
Максимальное количество кандидатов для обучения
+
#define EVOLVE_MAX_PARAMS
Максимальное количество параметров
+
__STATIC_INLINE void EvolveOptimizer_Step(EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
Один шаг эволюционного оптимизатора.
+
__STATIC_INLINE void EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
Инициализация эволюционного оптимизатора.
+
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
+
Структура эволюционного оптимизатора
+
uint16_t cand_index
Индекс кандидата для обработки
+
uint16_t n_params
Количество параметров
+
uint16_t iq_mutation
Амплитуда мутации в Q16.16.
+
int32_t candidates[100][20]
Параметры кандидатов
+
uint16_t n_best
Количество лучших, усредняемых
+
uint16_t n_cand
Количество кандидатов
+
int32_t loss[100]
Loss для каждого кандидата
+
+
+
+ + + + diff --git a/Doc/html/files.html b/Doc/html/files.html index be04d52..4b8cceb 100644 --- a/Doc/html/files.html +++ b/Doc/html/files.html @@ -108,19 +108,21 @@ $(function(){initNavTree('files.html','',''); });  
__general_spi.h  
__general_uart.h  
bit_access.hЗаголочный файл для дефайнов битового доступа - 
general_gpio.hЗаголовочный файл для модуля инициализации портов и работы с ними - 
general_tim.hЗаголовочный файл для модуля инициализации таймеров и работы с ними - 
mylibs_config.hКонфигурации для библиотек MyLibs - 
mylibs_defs.hЗаголочный файл для дефайнов библиотеки MyLibsGeneral - 
mylibs_include.hЗаголочный файл для всех библиотек - 
trace.hЗаголочный файл для работы с трассировкой - 
trackers.hЗаголочный файл для работы с трекерами Trackers defines - 
Src - 
__general_flash.c - 
__general_spi.c - 
__general_uart.c - 
general_gpio.cМодуль для инициализации портов и работы с ними - 
general_tim.cМодуль для инициализации таймеров и работы с ними + 
evolve_optimizer.hЗаголовочный файл для адаптивного подбора параметров + 
general_gpio.hЗаголовочный файл для модуля инициализации портов и работы с ними + 
general_tim.hЗаголовочный файл для модуля инициализации таймеров и работы с ними + 
mylibs_config.hКонфигурации для библиотек MyLibs + 
mylibs_defs.hЗаголочный файл для дефайнов библиотеки MyLibsGeneral + 
mylibs_include.hЗаголочный файл для всех библиотек + 
trace.hЗаголочный файл для работы с трассировкой + 
trackers.hЗаголочный файл для работы с трекерами Trackers defines + 
Src + 
__general_flash.c + 
__general_spi.c + 
__general_uart.c + 
general_gpio.cМодуль для инициализации портов и работы с ними + 
general_tim.cМодуль для инициализации таймеров и работы с ними + 
mainpage.h diff --git a/Doc/html/functions.html b/Doc/html/functions.html index 1411471..4793d9d 100644 --- a/Doc/html/functions.html +++ b/Doc/html/functions.html @@ -99,6 +99,12 @@ $(function(){initNavTree('functions.html','',''); });
Here is a list of all documented class members with links to the class documentation for each member:
+

- c -

+ +

- d -

@@ -123,15 +129,28 @@ $(function(){initNavTree('functions.html','',''); }); +

- i -

+ +

- l -

+

- n -

+ +

- p -

  • pc : HF_StackFrame_t
  • psr : HF_StackFrame_t
  • diff --git a/Doc/html/functions_vars.html b/Doc/html/functions_vars.html index fc684f6..f6e42da 100644 --- a/Doc/html/functions_vars.html +++ b/Doc/html/functions_vars.html @@ -99,6 +99,12 @@ $(function(){initNavTree('functions_vars.html','',''); });
    Here is a list of all documented variables with links to the class documentation for each member:
    +

    - c -

    + +

    - d -

    @@ -123,15 +129,28 @@ $(function(){initNavTree('functions_vars.html','',''); });
+

- i -

+ +

- l -

+

- n -

+ +

- p -

  • pc : HF_StackFrame_t
  • psr : HF_StackFrame_t
  • diff --git a/Doc/html/globals.html b/Doc/html/globals.html index e430e85..d7147e1 100644 --- a/Doc/html/globals.html +++ b/Doc/html/globals.html @@ -125,6 +125,15 @@ $(function(){initNavTree('globals.html','',''); });
+

- e -

+ +

- g -

  • GPIO_Clock_Enable() : general_gpio.h, general_gpio.c
  • GPIO_LED_Blink_Start() : general_gpio.h, general_gpio.c
  • @@ -157,6 +166,7 @@ $(function(){initNavTree('globals.html','',''); });

    - i -

    +

    - p -

    + +

    - r -

    • RTT_EraseFlash() : trace.h
    • RTT_FLASH_BUFFER_SIZE : mylibs_config.h
    • diff --git a/Doc/html/globals_defs.html b/Doc/html/globals_defs.html index df9d5c8..372247d 100644 --- a/Doc/html/globals_defs.html +++ b/Doc/html/globals_defs.html @@ -125,6 +125,13 @@ $(function(){initNavTree('globals_defs.html','',''); });
    +

    - e -

    + +

    - g -

    • GPIO_TIM_Alternate_Mapping : general_gpio.h
    • GPIO_TRACE_ENABLE : mylibs_config.h
    • @@ -144,6 +151,7 @@ $(function(){initNavTree('globals_defs.html','',''); });

      - i -

      +

      - p -

      + +

      - r -

      • RTT_FLASH_BUFFER_SIZE : mylibs_config.h
      • RTT_FLASH_SECTOR : mylibs_config.h
      • diff --git a/Doc/html/globals_func.html b/Doc/html/globals_func.html index 7489c79..908c490 100644 --- a/Doc/html/globals_func.html +++ b/Doc/html/globals_func.html @@ -99,6 +99,12 @@ $(function(){initNavTree('globals_func.html','',''); });
        Here is a list of all documented functions with links to the documentation:
        +

        - e -

        + +

        - g -

        • GPIO_Clock_Enable() : general_gpio.h, general_gpio.c
        • GPIO_LED_Blink_Start() : general_gpio.h, general_gpio.c
        • diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html index 8d7ec65..91e6dff 100644 --- a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html','','
        -
        Bit access defines
        +
        Bit access defines
        @@ -109,8 +109,8 @@ $(function(){initNavTree('group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html','',' diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map index 3e0bb0e..b06dfee 100644 --- a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 index aab75c0..d0764fb 100644 --- a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -58861c427738147326054c740ac5c202 \ No newline at end of file +56d577ae2ce4b45bacd111b61cb7554f \ No newline at end of file diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png index 3f10226e433e9ff5ad4c0d7ab85279c7622ff4eb..2a04bf73dab5b387c3822d22715f989838e30e6f 100644 GIT binary patch delta 1120 zcmV-m1fTnl3FHVNiBL{Q4GJ0x0000DNk~Le0003X0000b2nGNE0OC0`hmj!_e;G+c zK~#90?cGmn+(sD3@$ZNvO>5}E7hjsRdkH1!!O%k>rx55NfgD?YSCDJ|U`%{z4=pwY_vV8k2GjJ+-idND}qmf6u`}=@lS0ibj6+6$) zBWc$lA|fIpA|fIpv(BU!tgo+se`1We<|7!%7sv6l&CSife8*v<+wHFSjzRnjg5V&E zqUXtFXVNPfW3Cxv9-m%VQqn5$#CH%j^nMb6e!ss3+(|AQOF$!06g3`@loN)b?+|M1 zbUG|9F8U5bJlWgZ+V1B<}Fz*(;miA>A?7nuxoKMiP+i$!Oa_ncQv~$~~JHcXxL$0WW~7siv|?=SAgC z9ogUCr_4;?#L?;*Q2Nt8spzUxkt*BS_R*ANX*qgc z)$;Q4@7vqk-!izOf3*gD4!i+AD7lLtfIljC?7-5}lJ{@%H}QquqN{azbD`|BHe^K9M<8o1gP4Fx5J%cjq z27`Nm?l8Cq=zl!Sbn7a65<0nlUVHkgPr8(_DVLgPD~fwko2&CWr%^g4jg8K3x4UAD zdEDlkm*!0ve}=?yyxQyas+>zX58PyMU(hY!I-W|fjg5_1KS(y;hCfKQ)$8@j{UV}F zy}yB9hJPOe?Y}%Ib4LkiKD_oFfJhd78(u`bQ34VXZ!``H$&jKAfDKWG){|KtT{3^!xp-ot>S=gOc)sHXu0g9fPenj<=4Fk9~(Bo&`bh meDYc%A|fIpA|fI(Yu*C1pIe)~p?QJ;00006qo99=!}R1q zSn1XOKz8Y&AO%4RJ*@R)l?s&}R3;u~qUkeFGRc$YnP<{|UNA6|CwcNsn0)y@$;dlQE(+IJMh_t5UB_f@q#)(rR?XPj@+46lb~W8D zUtYGZFSh>kWo8`a`=-aYsI7%Nz(>F*z%xt}R{njs(upgtF7n~gqUx(S6gAgdrM9xT z%PLW`AKUq`y)Wz6SKM_4PhLf46;t)O?0u8%Y@b6NL!Bzk<@h`wf6vQIE3A)!7l6O` ze`vVW??Onn`(CySrp`Sbv%T!Xj@?!jw|PFw`e}MTLd4xfkT0z3jeFONvMcwQe8lF` z$Nv8QtH9^LD@M~z%j!0d8}HPUqoX5wy^TH zrBGyhs#iyo?OgW}f3yFxK8r)m{Bu*Ao0~rz9v*(p^vU6U;6*N1U5k7Q{MLBK9&BuE zME^C65P#fW^;EQMh*j0*YyWMy98()hA1e5$uBzCES-yp+?yCCqG;I6{_+s|D!}RAx z`oMF*-&Eh{`VRQnWv6Yet*yn_?SE`T9v|vfR8>#^+6=!!e>_EWJtkLP9)X+HL9Wg{ zAQyGFYn!<0B#O{gSfDEMN8n4~Ht-to74Qd;F->G*u_$p>wbyNP?W2v*RamIFy;WYe z1ZH0Nu0xe~k?CfOvF~aL@_G5&5d+Y#2Y*cxPNGBB002ovPDHLkV1mR3N@oB7 diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html index b32f9a6..d0f6ddf 100644 --- a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___d_e_l_a_y_s___d_e_f_i_n_e_s.html','',''); });
        -
        Delays defines
        +
        Delays defines
        @@ -109,8 +109,8 @@ $(function(){initNavTree('group___d_e_l_a_y_s___d_e_f_i_n_e_s.html','',''); });
        @@ -159,7 +159,7 @@ Macros
        Note
        Использует HAL_Delay или osDelay в зависимости от FREERTOS_DELAY.
        -

        Definition at line 86 of file mylibs_defs.h.

        +

        Definition at line 82 of file mylibs_defs.h.

        @@ -189,7 +189,7 @@ Macros

        После вызова этого макроса переменная pvar содержит текущее количество миллисекунд с момента запуска системы (HAL_GetTick).

        Используется для реализации неблокирующих задержек.

        -

        Definition at line 98 of file mylibs_defs.h.

        +

        Definition at line 94 of file mylibs_defs.h.

        @@ -231,9 +231,9 @@ Macros

        Возвращает true, пока время задержки не истекло. Используется в проверках, когда нужно действовать, пока задержка выполняется. Пример:

        while(msDelayWhileActive(1000, &tick)) {
        // выполняем другие задачи, задержка не блокирует поток
        }
        -
        #define msDelayWhileActive(_ms_, _pvar_)
        Проверяет, активна ли задержка.
        +
        #define msDelayWhileActive(_ms_, _pvar_)
        Проверяет, активна ли задержка.
        -

        Definition at line 115 of file mylibs_defs.h.

        +

        Definition at line 111 of file mylibs_defs.h.

        @@ -275,9 +275,9 @@ Macros

        Возвращает true, когда задержка уже завершена. Используется в проверках, когда нужно выполнить действие только после окончания задержки. Пример:

        if(msDelayWaitDone(1000, &tick)) {
        // выполняем действие после завершения задержки
        }
        -
        #define msDelayWaitDone(_ms_, _pvar_)
        Проверяет, завершилась ли задержка.
        +
        #define msDelayWaitDone(_ms_, _pvar_)
        Проверяет, завершилась ли задержка.
        -

        Definition at line 132 of file mylibs_defs.h.

        +

        Definition at line 128 of file mylibs_defs.h.

        diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map index b015f63..8bd8a8e 100644 --- a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 index c96e50e..286061b 100644 --- a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -591a0b98d98294b7a16c22b9669d8b64 \ No newline at end of file +c52cb47284eaa7377e976a0f04f0002e \ No newline at end of file diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.png b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.png index 263c49ab708d0dfca0984b25694e12bb1348c716..fb859234ed42e799e5cddf252f68c026bc1e7068 100644 GIT binary patch delta 1088 zcmV-G1i$-(3Bw2>iBL{Q4GJ0x0000DNk~Le0003C0000b2nGNE09Ay{pphXIe*^eQ zL_t(|obBB|Z`(!~$MNs6O*%APJO^mpZgnzd$xt9m*S09)04a)gu*~-nAVE45=t{_M zAc4m&ZMO{0ceJAVp0SH(}^7s(eJ-j4>OCX>l7@Ss>Wmn>$oEE_x^ag(NL=nxjRzP`@d+FIx^ z#KGa=Atxs%bLB~ZSVUwADOre!6D11~aiU})B2JVnM8t`bg@`!mHCY&Ae=aPssfwu_ zb6@dCa{eCy-!gqZM$ML%a?? z0PX{im_AfiS=6cOe{EE)njwYd#-Nx$ny$)q+m)~ERj*y@FK%14T~$5Bp+~W-{C8cwO|f-}+tsDMp~^jwrq^|U zciFG%b)PZ29;@e=ZUWx{-vf7nbKrWu?pobWS5aF-@4DS0`;{BHe@i{HM9`Mxni5Id zc3sZ5%^-I}d?yNh8&Gk-WtemDiSgjz;1=)_cnkc>G*Q6&MA7DVz=l{t|4*74O7Y6w z)~H+?T%Yp}ebg0o&!T)4E%Kei=(1mI^CacD8=uCrv9a-HZ*T7r(@&rN2;AXfucFNp z;C1H%_rMr4*r#P(f9ElL<~z#sB#Shg+S_qDvpw_R)K2Qq|>;K~KYwcfc?C za*Ju=*akl1;(SGwm%txB2aTEUaKfklMY{7t+~siX1w}Ossk`gZ)+mPVWyF#w28!bi z@H6l^a2t3E{FSdeAL4)^xxC?Bl0elqb#n(p-F+FlmoZe_f4%iAsuD&yQTTSpyX;rK zqq1m2Z92AVTzw2fS{&rdW2O&Z&4w$V0RORs6QAWbd{v@w?QWOvD7ZGJF5UU2dWRSm zG}SrOFl4SJjYgwQW6blI9}ZbHX_{iKeK;PEyNvy>179({Yw|Vl4S|Ls+uPeV_AkG= zst&i delta 1152 zcmV-`1b_R(2!jbBiBL{Q4GJ0x0000DNk~Le0003R0000b2nGNE0G;S2c99_ze*`#5 zL_t(|obBDsYa~S&$MJ9Vir`_91Qi7pLXLaWOIY;eMRC#7?&3Qune<;EcoF{$X(uP~ zvP*8>_AG7=iI=FioFXVhj1tH}W!l5cke;4?sjlvt>fZc5&@j_eUHx>JdZwznW&$E2 zA|fIpA|eu+$?w?S-hR;-b2CIRf8s})ra$cN?*1A&4i}@*=uYSuq?ss+PLd>fl->74 zzK}8IrZMLJ>cWy0xC=Z89fS+L7l&sund||#v-_43&0LZs-UAZ<;y4Z+LTeiv8?3Ld zhYmw593LNZc6PS3KMD|wh+HvBG$P`i5{-y>r$i$n-YL#KXMg;#-(f%k!Dfd9CBKV0kTBz=}mK2^PevU2$zMbUGc`m<$=$`#d<9WG_} z*5|ZyhgVZ`Vmx*9J6{d66z+bE#v0fBzNW zr`h%;(}crp3-HBky8(Ozdd3)|z`e2%a{P)&$iE)uATV+c!$gP#-P^Fz;a_LN;0-Xg#4Ww+lJU=2vSwA zkD*LeoxX-ne@m@!G#cG8#@z4o;vcaW$1!P|-W`v}P3AhT1Mf0jxc3IrIh`Owr=6Xh zwC_KB^|&qwbTRwktG)4fyzmQqgZs3Sl{g2!1>OW+0R9Xcjtt$ET00?5{s}lvEBHk&{h=_MeG$P`i5{-y>r+*+PR=sz6dRq8T$)tZSE-ni9FD05N zicThz$=>1Nq4%I
        -
        Error Handler defines
        +
        Error Handler defines
        @@ -109,8 +109,8 @@ $(function(){initNavTree('group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html
        diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map index f3bc919..bee5f9c 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 index 7cefaa5..2db04ea 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -e4a53f66d0e2072179f4dedfeba20d50 \ No newline at end of file +d5db8daac36cb4cc1a3fac830c6bfd88 \ No newline at end of file diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png index e5f8ee4ff3c07f31585476f2e17e426a60e665ea..2986d82c6e46c784114a4176442d12db81b3d379 100644 GIT binary patch delta 1110 zcmV-c1gZOk3EBuDiBL{Q4GJ0x0000DNk~Le0003m0000b2nGNE024BA3Xvfde-BAS zK~#90?cG0btm#{m%$ z5fKp)5fPD_#grH9?d`o~jM?cTe;BEj=lO332M2$59Y-6(;c&O>7$j~2x{kwA9wYA0O z=4RJnNQ91$k2yO#yS6;(AQlmkl_`0NNR*VkL?lW|ULq1DB`*<)l9HE*e?-Y^@-oI; znfk^SQ#oc|@%QBTZvmeIW8l4xV{w+IY2~!8{+lfK+21<)aM^aTeV=dBsl3mtDPs(I zo-bY2H^um3h}Xde@B#1u_zZYszWj&IB5FbR8FnL0(<`ripMMWtl2_G9pXd2aNeD5x z2Rvk!wB7{%!{djONZ$m%f97QyjoHew#e7xC=Ca?iZQH7A&$X{W<@7tiH^863Q{WM^ z#057zah1y&TbWZ;Zu%^VT>7x}<5~u$66iKqOt zkM`^KwIx1VJ6V=Fy)Mg+smZ!k1W8`y(S_@Y+V+Gl?iWLe+9t-MqoX^(ufPshp9bQZ zuzqgbsVA40myP#vd2^SyX>vj=+t#+eoCMmmVcVwdXvFn+SLvf|pP}1;K*_5-$|!1E zHZ|F=C*SnFw7B+Hf1Gb>dwctj$z<|?+0!MyWL7d3M_tQ&3p{Jwu?K^}Aj+p$w=f3u7AcYtl+d*Gk>x)&ij zlxpj^A1c;SSg5$Yjl66Ltem*omQPLgD{fnrRGX;l+chp9W#bahfXBes!28T@m)Hev zGrMJ?Zba5gE*I?Ugeq04`e<@p$#vURj-jrP5U)*Lo1uOe*Us$WaJXxXdD7>b(_S@c znv&=F{n2RDf8^TH0QeC20{9sCh>ps}{r&x14E9`94fNR z#l?kn`L*PgB+1EiIvpP#9tICe+$BkJ(sc}N<#|3nEI&W*It+z5oCK07*qoM6N<$g7{@Er~m)} delta 1152 zcmV-`1b_S52!shCiBL{Q4GJ0x0000DNk~Le0003#0000b2nGNE0NY-L+>s#_e>q7+ zK~#90?cG0b>;8Ub5S@F&$Z=sJ*SpaMY-4umMOF)slL3Q9ynZEfDb zp-A@*uDnY@st5{Dio4K7QHn^Bjz4RP-AIlz_KwFh>-G8fkyeWB@yz4R`O!SK&jAq; z5fKp)5fKsTGgDr%y}kXiG3HJef5Au`d7eMo-QE4G>o|Oj$K$Q8V~~DJlH@qcvd6`B zH_DBSF?WnH_m>xzEWusim#%~Gp?{0g)^s}E13oRTyO#JaWmy(IAc-$c)2>5kZ8RFO zv9Zy07}7&WM@O8Uon2d>bP$V(NT-zeL}YN3_(WuIl=wtsaFqB&WN?)De?(+(f+jv= z%$3iosf(!`yKnr(eOK{2Xy8R=&ptf>Zg(7uvouXBKg$}w$@-AvEn^IqwwLW!`BAFM z=lGg3#*pXv!gZ^xZT#i-eLD8J8^HU(J>X;D)_na>okiq9&!BcAP17si{VM++f+W7G z1d-=??~-3p-{WuKHt-eje15$zpkED-m7xThulbTmMyY z*tR!0zD3(wcnkOecnbUqe8Vj1!E>JU%B7gCG^;9+LzZzaW7x)VE#2E3L){p*eyhGi z+xEI+YP!u=uu|7WdG=JdT=jF4{cOvzj=^Pi=yQC5kLMNOBVZeNe;fE4SetKKtJjXe;KcS~cm^%0~0sy;7glEvkwHa9o_+~42-4EUVc zwY)cgXTVLzF1`o;XgqKL>+9>ie5;I$*mpfw;Vy66KFf)Br4wJB5VN{Ew$d=P7_-W{ zJ_D7yPkXMd4qufH?9vGE$SYkfZhC-ZIp#u!klE#rB&zRvz)#T{(M zXG?zNq~Tk(HQBG&wkjc4ak(}bqV#OiXN>VmegnP*z60I`z5qS}UIPB3gQ}n{mzx`P zVwG1_V>G#rf9Be@%`w!C5#zh5>oeBx;#yW1kH=fanER{z@S(U%)08~V?@lI@CfCYt z0v|9-f*%6!(NU?pv$K=yMWo_u{vy)7$z^{i!5?+abaD5E%7Bu zay*?*_YMvYq6a0*ktE4+*D?6Y^L+38Tu;=9za&XIdH7yLL_|bHL_|bH;`tw*O)nv1 SKAH0X0000 + + + + + + +MyLibs: Evolve configs + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        MyLibs 1.0 +
        +
        Расширенные библиотеки для STM32
        +
        +
        + + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Evolve configs
+
+
+ +

Конфигурация однослойного персептрона и алгоритма обучения +More...

+
Collaboration diagram for Evolve configs:
+
+
+ + + + + + + + + +

+Macros

#define ENABLE_EVOLVE_OPTIMIZATION
 Включить оптимизацию параметров
#define EVOLVE_MAX_PARAMS   20
 Максимальное количество параметров
#define EVOLVE_MAX_CANDIDATES   100
 Максимальное количество кандидатов для обучения
+

Detailed Description

+

Конфигурация однослойного персептрона и алгоритма обучения

+

Macro Definition Documentation

+ +

◆ ENABLE_EVOLVE_OPTIMIZATION

+ +
+
+ + + + +
#define ENABLE_EVOLVE_OPTIMIZATION
+
+ +

Включить оптимизацию параметров

+ +

Definition at line 64 of file mylibs_config.h.

+ +
+
+ +

◆ EVOLVE_MAX_PARAMS

+ +
+
+ + + + +
#define EVOLVE_MAX_PARAMS   20
+
+ +

Максимальное количество параметров

+ +

Definition at line 65 of file mylibs_config.h.

+ +
+
+ +

◆ EVOLVE_MAX_CANDIDATES

+ +
+
+ + + + +
#define EVOLVE_MAX_CANDIDATES   100
+
+ +

Максимальное количество кандидатов для обучения

+ +

Definition at line 66 of file mylibs_config.h.

+ +
+
+
+
+ +
+ + + + diff --git a/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.js b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.js new file mode 100644 index 0000000..1e10ab2 --- /dev/null +++ b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.js @@ -0,0 +1,6 @@ +var group___e_v_o_l_v_e___c_o_n_f_i_g = +[ + [ "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 ] +]; \ No newline at end of file diff --git a/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.map b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.map new file mode 100644 index 0000000..491aa34 --- /dev/null +++ b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 new file mode 100644 index 0000000..53dee98 --- /dev/null +++ b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 @@ -0,0 +1 @@ +0e28d80dcd04448aed641d64d20b3125 \ No newline at end of file diff --git a/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.png b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2b43fdc4789878b8a6ea6fe9bb6cfcf7e829b1 GIT binary patch literal 1033 zcmV+k1or!hP)@fIYMKm=QMJnU||KAD}JAJ4PTGx76+ zh31)Ozw;%XZ{|DC>@0|gh=_=Yh%AS(2e!7h){HS5A(Dwvp69>r?Cks*I*%s${r+a? z9HhD=Nsh8CdptXK#hzr0*)YaDSYBGuy9@jhI*BIq|JW^~(P#*KHam8qK&P@S^PW)b z(lia7LTkNVkJZ)H&}qm5hlhupoSa-3PXgp3A{D7XMIxpG6^WP%R3u_5P?3nKKt&=p z_clut#=QL8L!Rd@L!Zaa^BiN0^Z1Uv4txUK1HJF*)S zvfz0;D^R;=To#cXE7Ib;27Cm30o(yzos54UETaaxQbfMk1sVGH;iN!|im@YSy0#Kv z1K0$<1l|B%;J7o9|1YoCphd-Lj5&YVdEpeKr=PzF|s?MFaZThplZFamY-=cYS^R8;C2h*Z9c=qS%zZac}?f2B#UrjfF z&w)Ph4)7efI@xxuY0%irJGiQ}dUku**qq_AB6B;2)}=HNR!t3NPK-+FB={!s+5e3UtvCrsI?4Hobwi* z9Q&Q|0@2%y+uommzb4yW_}F1gT(qWjV$?aCF7wP=WwFZzXJ^nV?WBvAvn*y&e4ihl z0QM%YZ-5UO-vj*=cnufG%7a#+V0P zZ8Kb+xzjWy&-1&3!Jy8y+;!j_<%qy?)LU}t_QaLakw(%@<0^*LZHnvRX3lyR&O1Z?Aed*Wv z7FXmlQ-O*^Oa&?uF%_st#Pr40m)!C3ap4ytOI*&*&I-pb6ljtpN2AebxVN|GJ*h58 zlH@3K4o&5GK0G}=4V{KmlqAXH#j`|2L_|bHMEv*{m7%>YjQPfo00000NkvXXu0mjf DCJ+EZ literal 0 HcmV?d00001 diff --git a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html new file mode 100644 index 0000000..c418edc --- /dev/null +++ b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html @@ -0,0 +1,359 @@ + + + + + + + +MyLibs: Evolve optimizer + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Evolve optimizer
+
+
+ +

Библиотека для эволюционного подбора параметров +More...

+
Collaboration diagram for Evolve optimizer:
+
+
+ + + + + +

+Classes

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

+Macros

#define PARAM_SCALE_Q16(x, min_val, max_val)
 Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val)
 Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val].
+ + + + + +

+Functions

__STATIC_INLINE void EvolveOptimizer_Init (EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
 Инициализация эволюционного оптимизатора.
__STATIC_INLINE void EvolveOptimizer_Step (EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
 Один шаг эволюционного оптимизатора.
+

Detailed Description

+

Библиотека для эволюционного подбора параметров

+

Поддерживает:

    +
  • Любое количество параметров
  • +
  • Генерацию новых параметров на основе лучших кандидатов
  • +
  • Мутацию для поиска оптимальных параметров
  • +
  • Несколько независимых оптимизаторов в одной программе
  • +
+

Если библиотека отключена ENABLE_EVOLVE_OPTIMIZATION, то вставляются заглушки, никак не влияющие на параметры и остальную программу

+
Пример использования:
+
#define N_PARAMS 4
+
#define N_CANDIDATES 100
+
#define N_BEST 10
+
#define IQ_MUTATION 655
+
int32_t params[N_PARAMS];
+ +
+
// Формирование параметров
+
uint16_t param_u16 = 800;
+
float param_f = 0.01f;
+
uint8_t param_u8 = 40;
+
int16_t param_i16 = 1600;
+
params[0] = PARAM_SCALE_Q16(param_u16, 0, 1000);
+
params[1] = PARAM_SCALE_Q16(param_f, 0.001f, 0.1f);
+
params[2] = PARAM_SCALE_Q16(param_u8, 10, 100);
+
params[3] = PARAM_SCALE_Q16(param_i16, 500, 5000);
+
+
// Инициалиазция
+
EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, IQ_MUTATION, params);
+
+
// Шаг эволюции
+
int32_t loss = calc_iq_loss(); // расчет эффективности параметров
+
EvolveOptimizer_Step(&optimizer, params, loss);
+
+
// Взятие следующих для эволюции параметров
+
param_u16 = PARAM_UNSCALE_Q16(params[0], 0, 1000);
+
param_f = PARAM_UNSCALE_Q16(params[1], 0.001f, 0.1f);
+
param_u8 = PARAM_UNSCALE_Q16(params[2], 10, 100);
+
param_i16 = PARAM_UNSCALE_Q16(params[3], 500, 5000);
+
Заголовочный файл для адаптивного подбора параметров
+
__STATIC_INLINE void EvolveOptimizer_Step(EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
Один шаг эволюционного оптимизатора.
+
#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val)
Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val].
+
__STATIC_INLINE void EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
Инициализация эволюционного оптимизатора.
+
#define PARAM_SCALE_Q16(x, min_val, max_val)
Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
+
Структура эволюционного оптимизатора
+
+

Macro Definition Documentation

+ +

◆ PARAM_SCALE_Q16

+ +
+
+ + + + + + + + + + + + + + + + +
#define PARAM_SCALE_Q16( x,
min_val,
max_val )
+
+Value:
((int32_t)((((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val))) * 65536.0f))
+
+

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

+ +

Definition at line 68 of file evolve_optimizer.h.

+ +
+
+ +

◆ PARAM_UNSCALE_Q16

+ +
+
+ + + + + + + + + + + + + + + + +
#define PARAM_UNSCALE_Q16( q16_val,
min_val,
max_val )
+
+Value:
(((float)(q16_val) / 65536.0f) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
+
+

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

+ +

Definition at line 74 of file evolve_optimizer.h.

+ +
+
+

Function Documentation

+ +

◆ EvolveOptimizer_Init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
__STATIC_INLINE void EvolveOptimizer_Init (EvolveOptimizer_t * opt,
uint16_t n_params,
uint16_t n_cand,
uint16_t n_best,
uint16_t iq_mutation,
int32_t * start_params )
+
+ +

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

+
Parameters
+ + + + + + + +
optУказатель на структуру оптимизатора
n_paramsКоличество параметров в одном кандидате
n_candКоличество кандидатов
n_bestКоличество лучших, усредняемых
iq_mutationАмплитуда мутации в Q16.16
start_paramsНачальные параметры (Q16.16)
+
+
+ +

Definition at line 101 of file evolve_optimizer.h.

+ +
+
+ +

◆ EvolveOptimizer_Step()

+ +
+
+ + + + + + + + + + + + + + + + +
__STATIC_INLINE void EvolveOptimizer_Step (EvolveOptimizer_t * opt,
int32_t * params,
int32_t loss )
+
+ +

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

+
Parameters
+ + + + +
optУказатель на структуру оптимизатора
paramsМассив параметров, которые будут обновлены (на выходе — новые параметры)
lossLoss текущего кандидата (Q16.16)
+
+
+

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

+

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

+ +

Definition at line 137 of file evolve_optimizer.h.

+ +
+
+
+
+ +
+ + + + diff --git a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js new file mode 100644 index 0000000..70ed915 --- /dev/null +++ b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js @@ -0,0 +1,16 @@ +var group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r = +[ + [ "EvolveOptimizer_t", "struct_evolve_optimizer__t.html", [ + [ "n_params", "struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8", null ], + [ "n_cand", "struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1", null ], + [ "n_best", "struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6", null ], + [ "iq_mutation", "struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5", null ], + [ "cand_index", "struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae", null ], + [ "loss", "struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d", null ], + [ "candidates", "struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d", null ] + ] ], + [ "PARAM_SCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc", null ], + [ "PARAM_UNSCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba", null ], + [ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9", null ], + [ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563", 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___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.map new file mode 100644 index 0000000..60c0efb --- /dev/null +++ b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 new file mode 100644 index 0000000..b136329 --- /dev/null +++ b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 @@ -0,0 +1 @@ +222e7e00155a235ae6b55b58801480e4 \ No newline at end of file diff --git a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.png b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.png new file mode 100644 index 0000000000000000000000000000000000000000..d5cec842773c012ec1f24d7a43618269b2e9626d GIT binary patch literal 1110 zcmV-c1gZOpP)b30O`{ zFfMf3yo5lSkS6I;FQ+%)An+?lYdgpyDr6Tnf)Ke=A&5Za@ixWXh4tJ%@9fR)>Gy#H z?ZeFcPu%=(W_IrmL_|bHL_|bHq$*?Y*xcNF-57J#M=+8tj^q2=+uP55$5F>{INb0Z zgR~2J*i{sd3^^F;0=3=sAPHGZ=T3a5x3S0+12fhV<@f%J#d6&?e-s%vB zVP|ibs2f|?o|ChrlGR~5(6MqQ}EXy!y(v z5Wr<;9+iBkSCv zIGb|1rc%Tnwd8GQ{avM8+P2G>%eLh>rZ<33fFYBl@)vM%dhB9Wp}xs_ahDnD+tZ3V zYYtWFC^|Q}J^MR~qQbcBa==_Ywz6?leU4SMl2qz0*w*c6$#Q*|YSoExe}DgN;34q7 zb*OA2d04qoM-C1S7z_rL%H+MclO3{dM{rR`m9|`zYkTd)RsF3b75iN|sqXN#^g%QZQwHSC-8E~D!vAuRc_dUwY9Zge!9BPALPtRl#6&y z3!VOeo6$&~w5diHIGX`3c?1WNx8c?NN^4zRsS4CdiW#e)&{VDJm_=?FC=R+pa7h*XucHS8-~e5phaMMMRv^kBP}b93LO2{_vFa z*V)-w>i)T;5(L4~cs$

Macros

+#define INCLUDE_EVOLVE_OPTIMIZER + Подключить библиотеку для оптимизации параметров
#define INCLUDE_BIT_ACCESS_LIB  Подключить библиотеку с typedef с битовыми полями
#define INCLUDE_TRACKERS_LIB @@ -128,6 +130,24 @@ Macros

Detailed Description

Подключение различных модулей библиотеки

Macro Definition Documentation

+ +

◆ INCLUDE_EVOLVE_OPTIMIZER

+ +
+
+ + + + +
#define INCLUDE_EVOLVE_OPTIMIZER
+
+ +

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

+ +

Definition at line 80 of file mylibs_config.h.

+ +
+

◆ INCLUDE_BIT_ACCESS_LIB

@@ -142,7 +162,7 @@ Macros

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

-

Definition at line 65 of file mylibs_config.h.

+

Definition at line 81 of file mylibs_config.h.

@@ -160,7 +180,7 @@ Macros

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

-

Definition at line 66 of file mylibs_config.h.

+

Definition at line 82 of file mylibs_config.h.

@@ -178,7 +198,7 @@ Macros

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

-

Definition at line 67 of file mylibs_config.h.

+

Definition at line 83 of file mylibs_config.h.

@@ -196,7 +216,7 @@ Macros

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

-

Definition at line 68 of file mylibs_config.h.

+

Definition at line 84 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 4c6d0ce..7938549 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,5 +1,6 @@ var group___l_i_b_s___c_o_n_f_i_g = [ + [ "INCLUDE_EVOLVE_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66", null ], [ "INCLUDE_BIT_ACCESS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be", null ], [ "INCLUDE_TRACKERS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32", null ], [ "INCLUDE_TRACE_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7", null ], diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.html b/Doc/html/group___m_y_l_i_b_s___a_l_l.html index 53bf563..2edb3f9 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.html +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.html @@ -110,9 +110,9 @@ $(function(){initNavTree('group___m_y_l_i_b_s___a_l_l.html','',''); });
- - - + + + @@ -120,7 +120,7 @@ $(function(){initNavTree('group___m_y_l_i_b_s___a_l_l.html','',''); }); Topics - + diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.js b/Doc/html/group___m_y_l_i_b_s___a_l_l.js index 59889a3..54a84ed 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.js +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.js @@ -1,6 +1,6 @@ var group___m_y_l_i_b_s___a_l_l = [ [ "Configs", "group___m_y_l_i_b_s___c_o_n_f_i_g.html", "group___m_y_l_i_b_s___c_o_n_f_i_g" ], - [ "General Defines", "group___m_y_l_i_b_s___d_e_f_i_n_e_s.html", "group___m_y_l_i_b_s___d_e_f_i_n_e_s" ], + [ "General Tools", "group___m_y_l_i_b_s___d_e_f_i_n_e_s.html", "group___m_y_l_i_b_s___d_e_f_i_n_e_s" ], [ "Peripheral", "group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html", "group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l" ] ]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.map b/Doc/html/group___m_y_l_i_b_s___a_l_l.map index c9782eb..3343382 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.map +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.map @@ -1,6 +1,6 @@ - - - + + + diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 b/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 index 81f0885..4e0e91b 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 @@ -1 +1 @@ -1691ab8f633ae5af69d18398681fcba8 \ No newline at end of file +52c11e57bdabafd5d7af3828f403f995 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.png b/Doc/html/group___m_y_l_i_b_s___a_l_l.png index 71949d508c85d6401ba697aa029057531880d23a..bbe49fcac04e572e97cb9e352f8624f94b314ec8 100644 GIT binary patch literal 2675 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 XrD#q}dG%{9jRlyQSQ*z{$3FfK29jl5 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 a7ac5d3..04d29e3 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,10 +109,11 @@ $(function(){initNavTree('group___m_y_l_i_b_s___c_o_n_f_i_g.html','',''); });
 Configs
 Конфигурации для библиотек MyLibs.
 General Defines
 General Tools
 Общие макросы и typedef'ы, используемые по всему проекту
 Peripheral
 Модули для управления периферией
@@ -120,6 +121,8 @@ $(function(){initNavTree('group___m_y_l_i_b_s___c_o_n_f_i_g.html','',''); }); Topics + +
 Trace configs
 Конфигурация трекеров и трассировки
 Evolve configs
 Конфигурация однослойного персептрона и алгоритма обучения
 Libraries configs
 Подключение различных модулей библиотеки
diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js index 6dc81df..06b8a2b 100644 --- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js +++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js @@ -1,5 +1,6 @@ var group___m_y_l_i_b_s___c_o_n_f_i_g = [ [ "Trace configs", "group___t_r_a_c_e___c_o_n_f_i_g.html", "group___t_r_a_c_e___c_o_n_f_i_g" ], + [ "Evolve configs", "group___e_v_o_l_v_e___c_o_n_f_i_g.html", "group___e_v_o_l_v_e___c_o_n_f_i_g" ], [ "Libraries configs", "group___l_i_b_s___c_o_n_f_i_g.html", "group___l_i_b_s___c_o_n_f_i_g" ] ]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map index 737cfde..d5531ea 100644 --- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map +++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map @@ -1,6 +1,7 @@ - - - - + + + + + diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 index a4575c4..3f02def 100644 --- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 +++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 @@ -1 +1 @@ -e912e48de31ed02538c355498d1a7e66 \ No newline at end of file +e39777f4e691429c305a230cb7233db5 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.png b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.png index 253e0284e7fef51d1a4dc6c4233c1e90871f007a..d0783d67a5f4579b13e8bc4174ec532c4732ae44 100644 GIT binary patch literal 3423 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 AIsgCw diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html index 6e2a896..093beb8 100644 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html @@ -5,7 +5,7 @@ -MyLibs: General Defines +MyLibs: General Tools @@ -97,26 +97,27 @@ $(function(){initNavTree('group___m_y_l_i_b_s___d_e_f_i_n_e_s.html','',''); });
-
General Defines
+
General Tools

Общие макросы и typedef'ы, используемые по всему проекту More...

-
Collaboration diagram for General Defines:
+
Collaboration diagram for General Tools:
@@ -124,6 +125,8 @@ $(function(){initNavTree('group___m_y_l_i_b_s___d_e_f_i_n_e_s.html','',''); }); Topics + + diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js index 2a15720..3161a87 100644 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js +++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js @@ -1,6 +1,7 @@ var group___m_y_l_i_b_s___d_e_f_i_n_e_s = [ [ "Bit access defines", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s" ], + [ "Evolve optimizer", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r" ], [ "Error Handler defines", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s" ], [ "Delays defines", "group___d_e_l_a_y_s___d_e_f_i_n_e_s.html", "group___d_e_l_a_y_s___d_e_f_i_n_e_s" ], [ "Utils defines", "group___u_t_i_l_s___d_e_f_i_n_e_s.html", "group___u_t_i_l_s___d_e_f_i_n_e_s" ], diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map index 2a3961c..0281dad 100644 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map +++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map @@ -1,10 +1,11 @@ - - - - - - - - - + + + + + + + + + + diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 index 45245e0..21a4273 100644 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -cd205bbe89e6c9feea836cb8938585ac \ No newline at end of file +e21133381fcfb6b51ca1c555273b8ce6 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png index 611987b8d147d8116124c6cb22bc6a1825f8c951..742664d87535f779e38291bf4315a7fdfe341b22 100644 GIT binary patch literal 10469 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�f|-zcP0q=B!=TrFk8dqRV(}K$4m@y@ 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 literal 9417 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 diff --git a/Doc/html/group___t_r_a_c_e.html b/Doc/html/group___t_r_a_c_e.html index 2be89a9..6941ffc 100644 --- a/Doc/html/group___t_r_a_c_e.html +++ b/Doc/html/group___t_r_a_c_e.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e.html','',''); });
-
Trace defines
+
Trace defines
@@ -109,12 +109,12 @@ $(function(){initNavTree('group___t_r_a_c_e.html','',''); });
 Bit access defines
 Макросы и typedef'ы для работы с битами в unsigned типах.
 Evolve optimizer
 Библиотека для эволюционного подбора параметров
 Error Handler defines
 Дефайны для обработки ошибок
 Delays defines
diff --git a/Doc/html/group___t_r_a_c_e.map b/Doc/html/group___t_r_a_c_e.map index 0c4f8df..cf0579e 100644 --- a/Doc/html/group___t_r_a_c_e.map +++ b/Doc/html/group___t_r_a_c_e.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/Doc/html/group___t_r_a_c_e.md5 b/Doc/html/group___t_r_a_c_e.md5 index 8707b6e..940cd9f 100644 --- a/Doc/html/group___t_r_a_c_e.md5 +++ b/Doc/html/group___t_r_a_c_e.md5 @@ -1 +1 @@ -af53452e0ed934b43a42a30e5eaddc2c \ No newline at end of file +231806d9df0ebec28cd371e85eb1e78c \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e.png b/Doc/html/group___t_r_a_c_e.png index 3b9e235438155dc4f697526c0bfb989d131a290a..3da1dc440ffbe6701c101d69164bc33cd54ef165 100644 GIT binary patch literal 5961 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 literal 6036 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 diff --git a/Doc/html/group___t_r_a_c_e___g_p_i_o.html b/Doc/html/group___t_r_a_c_e___g_p_i_o.html index ebe37bc..750167e 100644 --- a/Doc/html/group___t_r_a_c_e___g_p_i_o.html +++ b/Doc/html/group___t_r_a_c_e___g_p_i_o.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___g_p_i_o.html','',''); });
-
GPIO trace defines
+
GPIO trace defines
diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html index 069857a..4a44208 100644 --- a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html +++ b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html','',''); })
-
Hardfault trace defines
+
Hardfault trace defines
diff --git a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html index d1626ca..8cbfe53 100644 --- a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html +++ b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___r_t_t___f_l_a_s_h.html','',''); })
-
Flash RTT Buffer
+
Flash RTT Buffer
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 8a13055..136bbf1 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 @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___s_e_r_i_a_l.html','',''); });
-
Serial trace defines
+
Serial trace defines
diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.html b/Doc/html/group___t_r_a_c_k_e_r_s.html index 9b3c87b..70836c7 100644 --- a/Doc/html/group___t_r_a_c_k_e_r_s.html +++ b/Doc/html/group___t_r_a_c_k_e_r_s.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_k_e_r_s.html','',''); });
-
Trackers defines
+
Trackers defines
@@ -109,8 +109,8 @@ $(function(){initNavTree('group___t_r_a_c_k_e_r_s.html','',''); });
diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.map b/Doc/html/group___t_r_a_c_k_e_r_s.map index 27e2e01..bf5f146 100644 --- a/Doc/html/group___t_r_a_c_k_e_r_s.map +++ b/Doc/html/group___t_r_a_c_k_e_r_s.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.md5 b/Doc/html/group___t_r_a_c_k_e_r_s.md5 index 3069cfa..d924fcc 100644 --- a/Doc/html/group___t_r_a_c_k_e_r_s.md5 +++ b/Doc/html/group___t_r_a_c_k_e_r_s.md5 @@ -1 +1 @@ -648d2934940db23a5223abb744a436e6 \ No newline at end of file +a7565b03babdeb6094e59ffacae9c523 \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.png b/Doc/html/group___t_r_a_c_k_e_r_s.png index 6e5931456604f55bef3b75ef689abbb03bfb8437..64eb57527153829fff5deb0e1db9e71cf2f380f5 100644 GIT binary patch delta 1114 zcmV-g1f~0m3El`HiBL{Q4GJ0x0000DNk~Le0003M0000b2nGNE0BqxZ`;j3Pe-lYW zK~#90?cGglBt;y@@ozQj`fxCivr%&qQ4axcdlJEef`=70t0IesOxl+qco8pp(`z$% z11kYvfme5z7|bDhPy%YaWZD6ou`a3H)4d5e`a}}f3vr@_gm~7eGCSJ?bsP4j3h};vn;z;UU#j! zlQHIoG3M_4Vu_{Oz?ZQ@^r63})ioN8_JLdFbyG!UBFnPify7Rlrm-W;Y;$vy_4W1G zF~p;jlM~L*&!^TW5weKL3R6)L5wBEKM8qo<6%p}DMMXrsQc)2RuNvP{f9}JWhwr7! z^W10iGc(3aWvXT_nD_?${z?`86+t}kz|vN^76-@e+~vptvZOk*zs z9|OMv-vS>{6ckwDf-)Hfl!r=bn*RT&+rMdBUAtY!xt_l%PusR?+jZxw+wS`NyX3az zbxx&Awb#A_kmx4FDMEM*cX!f zKpx|9e0=Qu`*!I&zhF~P`nKbm$LG9=kG6c}3DQ%kzABgX?f$zQ=Xr=Rv&r02dD+$0 z*4B>)2M2FcypwYWe|R4F6L{3JiI0GvoKNh*#>PhQPgnQtzPBA`+vcPvQC{vV#D_OmQ#~0gP)j|z_s;|ToT^CR2Udy5slt4Ltf1sG8eHM5L_#8MJZ~G_2 z373KEWUP;NLwz+x=w3^x+}?UBb%mu`Q2Gu7T#hU6+f?jaw4K{Fmyh93hwp(8DTX+& zQrx3*i{c)Ye~Hi|ou_g)zOGAe)5Wh&hPn(5X4$uIJGR=|3^n|jy5a_d!L~8x?jqk@ zbJe72N}lJpe}}`N%iP3c!0QzEt-JxeLZso(?(S}`FKJpm<1cC29}b6h-~1*^?+@Us z@#9H~cVa|>Q&G7ZevchMt`2=lSwy^2Q4tZZR8&O7D-{(H@k&KSM7+{J6O*|(J3FiW z$5XPrE-x=@*H0CdBuP$3qtX81;bHJlVlPRO)7TmMFv|0M|Kj2zb_@w1Ns@crdx?mM gh=_=Yh)9?J07-!@-wmT};{X5v07*qoM6N<$g5)?PZ~y=R delta 1158 zcmV;11bO@32#N_IiBL{Q4GJ0x0000DNk~Le0003b0000b2nGNE0PE6}{gELRe?Lh? zK~#90?cGmnBt;m<@o%-Rpn{PgcyJBmyhrii2EmIUq9BO7_-~OllYR#xcqn)1ao~oLv>F(Lz2L>|z=jo@1^fUF;bS5Ao zA|fIpA|fKv%#;^wZ*N~U#$0bBe;J7*%d#JLcXxkjI}aa&!Qe*QIY=BylAH{O!w1D> zPnI__##}eX+*w{)vIIAQyKN`oL%)lwYdjwB0Us2X%@m}m;cyr|A&D+9=nry&6yA0Kmeb~dv-X(1O8kxD8^BGMTuNFvf1Do7&I87fF3(itj9e1#6_4m**1onQs2>f-C$1-WSctI{JI1wNOc!(-$x03f6w326ToZ0E#M>I8DKnFF0xe7=a8yK9n(j7d2xN2&3^N? z4W%l6T^?2IUCwXbx&^!fd;>fJ?g5_x&ytUZR<;;TTbE*cm!|1|kE-qK)>Xxwx1a0r z>+)$@SB_nEysGuC=kJoYt)O#A^OQ#$P0#CocG<7$d8~7=8BO_|e_!D9xkf%8bQ^dX z_zQSyvhGUVPOGNa!j#(?+jVvET%X$>qiR2!9Bk%{>hcMdw~Htvq~bfe%e%Voh1QpO zn-IDA#Ms~8e-$_a9s*yJ7bEz;7|ru5khSqRJUnzh-+6rJQ*4TnZyeWrLe2w)h!rZI zC?lluJ9?3C+u^cbf2>w5X8gLC(~(#4xvQDL(fV;}5CpVusASXsIn5gc$`jscLaTi!lmoiW#V7dkB0r zd0YcN1wIE}0REx*ci{)%H=lzpYHe*TYW%9!!&Y7UQe5W}f2S^%Pn=L}M{}KO*~;(Y zQ#NxdK5X|}v>4f3{IN$%kw$wz1789!06{DNq@&UU>~?nT!)Ao>+4}+kCtNP z9c+YDRg}sXvv2$1vR`rAxMm^)p*c}nc1X-bx5H%Ft9%UsNJ zzRbU(mLCCSTCDHyVvDePiTGzx#=|KY;InH-VRc^LEpb$Hmeo zwWW6+wVi-GJ~ToSk
-
Utils defines
+
Utils defines
@@ -109,8 +109,8 @@ $(function(){initNavTree('group___u_t_i_l_s___d_e_f_i_n_e_s.html','',''); });
@@ -153,7 +153,7 @@ Macros

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

-

Definition at line 154 of file mylibs_defs.h.

+

Definition at line 151 of file mylibs_defs.h.

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

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

-

Definition at line 165 of file mylibs_defs.h.

+

Definition at line 162 of file mylibs_defs.h.

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

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

-

Definition at line 173 of file mylibs_defs.h.

+

Definition at line 170 of file mylibs_defs.h.

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

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

-

Definition at line 181 of file mylibs_defs.h.

+

Definition at line 178 of file mylibs_defs.h.

diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map index f176eba..f130ade 100644 --- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map +++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 index 9687ecf..ead6af3 100644 --- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -a22e11e67b1cc3135ba7e3b5e903043c \ No newline at end of file +e4f09128a7c7fea7dcaa8c425861feae \ No newline at end of file diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.png b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.png index 25fc9b1e83c1f05cf09537aa2f3d22c01d362683..74a98f98ac408bfbe71620dddee4dd390df67b00 100644 GIT binary patch delta 1051 zcmV+$1mye42%rcdiBL{Q4GJ0x0000DNk~Le0002}0000b2nGNE0Et-dzL6mnf7MAu zK~#90?cFO-V(KuCg{A0_h+< z(iN#roG8*nP;P;OkRU~hND;czttq^lbG&|xy)!%B`1g@4tzYB+YWMH?d%O=25fKp) z5fPDfWQq&+_V!*g#@q@Kj8se0fArUbgM+_9$I-=TG};Xv!%#(0bebf|qx`bxiyIkZ zZW&|luP!XHbO-n;bP!$W{S?l0Iz0qF$uC<-`ne=Yyayz9;y4Z+!qT?4x7pm>3?0Ux zOePb~&(9Z@M*(6Hk${x+A_JqO7a15Oy~w~Q=|u)cNiQ-mPLtjkb8YIIf3ld0F}sSt zC(r){;6vbh;G@8?SgX24*>vkNzuwht&Nl7DaeTFXpKr5P-luQN7(<$-jm!EbAKyB} zYas&O2R@xmFVB|$5-cK5;yAwcd6JNyE$LG%O`IfsRkEaMdQ%c<9lSyI$*V7b*MY~t zi?ell0pyDJYx=U@zpQ+of6rHy);9Y!ZQE5{d$z~&blI~7db@Nq^+w501?=oiFV>yoL72spC z9{nBQDbHTV8=dHRNs=s-)K!Yx)$NyGS4_03c5GrPwp;eN&AMfHf9dJF4v2M4g#3Q% za4FFx#>r&zD)0dK7f672$-X6NbK*9@4`gNj%BPc)lh)7IC)>nvd0pFJBT zT3*-kw#|M$89Bc)AKS>!x3#mg^Y_uw(OqB{xC^`mJi)GaPl0>D!`26OU~6kD=(hvs zJ#l`%D<7lsRc*SAe>-ob3yWa*rCp!V;2ky%J2K?OR zpv&6W*a&ghYh0DdK1Sv1+U#w4U+l@|n%>;Ld;Pv7yr(!$f$xB~fj5C~fj?*K9{V`p zsuX)TSndt)>z=vqUf);T&U*T?#4jd%*D|-we)(;yPDX9ie;wO4E*Ir}gFj}|H^6&j z_vb$&8}xfZfQoKewxzAj$)HV{Tz10g(vGdVHhq=%3mGvQjdqPO_xt?ef}x4ym^4lA zjK||P*T&BQACM*gZQx7bM<4Mu+27w!^&=XqH~SHd!|`}*_sco5_MVcB_CFv?_?NAx^+Izc!| zt$%=WSA;;WI7kx|a)l7M6u}fK`&i7bH<_Iu&&)p0KC|ZYf`y%#XP)^^$b9Gf%*^hB zh=_=Yh=_>D@R{TV;q-Ciy(_jN0}OFwCv{?~rUx58_m!|2Kw zgSEDG-jFRCf4TiC?fcX#z(>G6;A7zB>HHU>MHEPyrq`Y|iuv5pkYZ`$C1KPZSk~H= zOBzM19>1dm*amjUD~emde?P!WF@us}3Vscv>a1N=@)yhas#4x%y|%W#RP|pMN7eE! z``5N?0q+9e0e=9$0AB&Gk$=AEf1NC{#mme?m-ImdyXh3x ztyf%DK1l2OafzkeZ`J!Q%N7x&!svVPufal4g z&2NB>@j5v<>Ab%oxgK;ruS59g%U3)>&MM_IV$mXZA40V4BSimoea1LvJL?7_yyM$}K)&MJW7bYCIve$@5pGw!0Lm!UqYh$dAf zyl)|@n5I5G4M|SOtBd>O*Dvk>yTAtR$>S&B_dXk4)Y{rwjLlx-tF#Ys_oJ!L!465v zXTcelF?}Dd>n)lrTn^6A)kdId=?U;H@Fws+kO3Fu!+^g-e{67B%4b$s>|hD?Oho8v zBUIepDvYY6Q9juEme*a@E4HmmWOdr&?;4A%ranV#uV4cFI(>ZudYipMG35^%-hNGIunMMxz~L%!466JRCUp-{q*HqT-QAj6?g ztBQy-B@7X9ri39P&Xh1j#F-L?h&a;^8Oh+CpPyI$sE&klbya;QeJ)`nNpd!sOb(8Y zj)Dgz%aJ6>S?n14veq74US7ry<3>u7U9l9z*_%GnGMA00000 LNkvXXu0mjfY#kVk diff --git a/Doc/html/index.html b/Doc/html/index.html index a233fa5..87e4bf6 100644 --- a/Doc/html/index.html +++ b/Doc/html/index.html @@ -106,37 +106,35 @@ $(function(){initNavTree('index.html','',''); });

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

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

+Общие утилиты (General Tools)
    -
  • Битовый доступ к регистрам через union
  • -
  • Трекеры для статистики и отладки
  • -
  • Макросы для задержек и утилит
  • -
  • Поддержка FreeRTOS
  • +
  • Макросы для задержек и утилит (Delays defines и Utils defines)
  • +
  • Трекеры для статистики и отладки (Trackers defines и Trace defines)
  • +
  • Эволюционный алгоритм для оптимизации параметров (Evolve optimizer)
  • +
  • Битовый доступ к регистрам через union (Bit access defines)

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

    -
  • Serial трассировка через SWO и RTT
  • -
  • GPIO трассировка для отладки
  • -
  • Сохранение логов в Flash память
  • -
  • Обработка HardFault с сохранением контекста
  • +
  • Serial трассировка через SWO и RTT (Serial trace defines)
  • +
  • GPIO трассировка для отладки (GPIO trace defines)
  • +
  • Сохранение логов в Flash память (Flash RTT Buffer)
  • +
  • Обработка HardFault с сохранением контекста (Hardfault trace defines)

Модуль GPIO GPIO Tools

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

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

    -
  • Базовая инициализация таймеров
  • -
  • Режимы прерываний
  • -
  • Формирование задержек (блокирующие и неблокирующие)
  • -
  • Работа с энкодерами (чтение положения, обработка кнопок)
  • -
  • Настройка ШИМ и Output Compare
  • +
  • Базовая инициализация таймеров (General tools)
  • +
  • Формирование задержек (блокирующие и неблокирующие) (Delay tools)
  • +
  • Работа с энкодерами (чтение положения, обработка кнопок) (Encoder tools)
  • +
  • Настройка ШИМ и Output Compare (PWM/OC Channels tools)

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

diff --git a/Doc/html/mainpage_8h_source.html b/Doc/html/mainpage_8h_source.html new file mode 100644 index 0000000..14c5a8d --- /dev/null +++ b/Doc/html/mainpage_8h_source.html @@ -0,0 +1,218 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/mainpage.h Source File + + + + + + + + + + + + + + + + + +
+
+
+ + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + + +
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
mainpage.h
+
+
+
1
+
2/**
+
3@mainpage
+
4
+
5@section overview Обзор
+
6MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32.
+
7
+
8@subsection features Основные возможности
+
9
+
10@subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES)
+
11- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES)
+
12- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE)
+
13- Эволюционный алгоритм для оптимизации параметров (@ref EVOLVE_OPTIMIZER)
+
14- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES)
+
15
+
16@subsubsection trace_module Трассировка @ref TRACE
+
17- Serial трассировка через SWO и RTT (@ref TRACE_SERIAL)
+
18- GPIO трассировка для отладки (@ref TRACE_GPIO)
+
19- Сохранение логов в Flash память (@ref TRACE_RTT_FLASH)
+
20- Обработка HardFault с сохранением контекста (@ref TRACE_HARDFAULT)
+
21
+
22@subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO
+
23- Инициализация портов и тактирования (@ref MYLIBS_GPIO_GENERAL)
+
24- Управление светодиодами (включение/выключение, моргание, плавное затухание) (@ref MYLIBS_GPIO_LEDS)
+
25- Работа с кнопками (чтение состояния, фильтрация дребезга) (@ref MYLIBS_GPIO_SWITCH)
+
26
+
27@subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM
+
28- Базовая инициализация таймеров (@ref MYLIBS_TIM_GENERAL)
+
29- Формирование задержек (блокирующие и неблокирующие) (@ref MYLIBS_TIM_DELAY)
+
30- Работа с энкодерами (чтение положения, обработка кнопок) (@ref MYLIBS_TIM_ENCODER)
+
31- Настройка ШИМ и Output Compare (@ref MYLIBS_TIM_OC)
+
32
+
33
+
34@subsection structure Структура проекта
+
35
+
36@code
+
37├── inc/ # Заголовочные файлы
+
38│ ├── mylibs_include.h # Главный include файл
+
39│ ├── mylibs_config.h # Конфигурация библиотек
+
40│ ├── mylibs_defs.h # Общие определения и макросы
+
41│ ├── bit_access.h # Битовый доступ к регистрам
+
42│ ├── trackers.h # Трекеры для отладки
+
43│ ├── trace.h # Трассировка и логирование
+
44│ ├── general_gpio.h # Работа с GPIO
+
45│ └── general_tim.h # Работа с таймерами
+
46└── src/ # Исходные файлы
+
47 ├── general_gpio.c # Реализация GPIO
+
48 └── general_tim.c # Реализация TIM
+
49@endcode
+
50
+
51@subsection usage_basic Использование
+
52
+
53Инструкция по подключению:
+
54
+
551. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h
+
56
+
572. Подключите главный заголовочный файл:
+
58@code
+
59#include "mylibs_include.h"
+
60@endcode
+
61
+
623. Используйте нужные модули в своем коде
+
63
+
64@subsubsection gpio_example Пример работы с GPIO
+
65
+
66@code
+
67// Инициализация светодиода
+
68MX_GPIO_Init();
+
69GPIO_LEDTypeDef led;
+
70GPIO_LED_Init(&led, GPIOA, GPIO_PIN_5, 1);
+
71
+
72// Включение светодиода
+
73GPIO_LED_On(&led);
+
74
+
75// Запуск моргания
+
76GPIO_LED_Blink_Start(&led, 500); // Период 500 мс
+
77
+
78// В основном цикле
+
79while (1) {
+
80GPIO_LED_Dynamic_Handle(&led);
+
81}
+
82@endcode
+
83
+
84@subsubsection tim_example Пример работы с таймером
+
85
+
86@code
+
87// Настройка таймера
+
88TIM_SettingsTypeDef tim_settings = {0};
+
89tim_settings.htim.Instance = TIM2;
+
90tim_settings.sTimAHBFreqMHz = SystemCoreClock;
+
91tim_settings.sTickBaseUS = TIM_TickBase_1MS;
+
92tim_settings.sTimFreqHz = 1000; // 1 кГц
+
93tim_settings.sTimMode = TIM_IT_CONF;
+
94
+
95TIM_Base_Init(&tim_settings);
+
96HAL_TIM_Base_Start(&tim_settings.htim);
+
97@endcode
+
98
+
99@subsection dependencies Зависимости
+
100
+
101- HAL библиотека STM32
+
102- SEGGER RTT (опционально, для RTT трассировки)
+
103- FreeRTOS (опционально, для FreeRTOS задержек)
+
104 */
+
+
+
+ + + + diff --git a/Doc/html/menudata.js b/Doc/html/menudata.js index 3561c54..7655322 100644 --- a/Doc/html/menudata.js +++ b/Doc/html/menudata.js @@ -30,21 +30,27 @@ var menudata={children:[ {text:"Class Index",url:"classes.html"}, {text:"Class Members",url:"functions.html",children:[ {text:"All",url:"functions.html",children:[ +{text:"c",url:"functions.html#index_c"}, {text:"d",url:"functions.html#index_d"}, {text:"e",url:"functions.html#index_e"}, {text:"g",url:"functions.html#index_g"}, {text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, {text:"l",url:"functions.html#index_l"}, +{text:"n",url:"functions.html#index_n"}, {text:"p",url:"functions.html#index_p"}, {text:"r",url:"functions.html#index_r"}, {text:"s",url:"functions.html#index_s"}, {text:"t",url:"functions.html#index_t"}]}, {text:"Variables",url:"functions_vars.html",children:[ +{text:"c",url:"functions_vars.html#index_c"}, {text:"d",url:"functions_vars.html#index_d"}, {text:"e",url:"functions_vars.html#index_e"}, {text:"g",url:"functions_vars.html#index_g"}, {text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, {text:"l",url:"functions_vars.html#index_l"}, +{text:"n",url:"functions_vars.html#index_n"}, {text:"p",url:"functions_vars.html#index_p"}, {text:"r",url:"functions_vars.html#index_r"}, {text:"s",url:"functions_vars.html#index_s"}, @@ -57,17 +63,20 @@ var menudata={children:[ {text:"b",url:"globals.html#index_b"}, {text:"c",url:"globals.html#index_c"}, {text:"d",url:"globals.html#index_d"}, +{text:"e",url:"globals.html#index_e"}, {text:"g",url:"globals.html#index_g"}, {text:"h",url:"globals.html#index_h"}, {text:"i",url:"globals.html#index_i"}, {text:"l",url:"globals.html#index_l"}, {text:"m",url:"globals.html#index_m"}, {text:"n",url:"globals.html#index_n"}, +{text:"p",url:"globals.html#index_p"}, {text:"r",url:"globals.html#index_r"}, {text:"s",url:"globals.html#index_s"}, {text:"t",url:"globals.html#index_t"}, {text:"u",url:"globals.html#index_u"}]}, {text:"Functions",url:"globals_func.html",children:[ +{text:"e",url:"globals_func.html#index_e"}, {text:"g",url:"globals_func.html#index_g"}, {text:"h",url:"globals_func.html#index_h"}, {text:"r",url:"globals_func.html#index_r"}, @@ -79,12 +88,14 @@ var menudata={children:[ {text:"b",url:"globals_defs.html#index_b"}, {text:"c",url:"globals_defs.html#index_c"}, {text:"d",url:"globals_defs.html#index_d"}, +{text:"e",url:"globals_defs.html#index_e"}, {text:"g",url:"globals_defs.html#index_g"}, {text:"h",url:"globals_defs.html#index_h"}, {text:"i",url:"globals_defs.html#index_i"}, {text:"l",url:"globals_defs.html#index_l"}, {text:"m",url:"globals_defs.html#index_m"}, {text:"n",url:"globals_defs.html#index_n"}, +{text:"p",url:"globals_defs.html#index_p"}, {text:"r",url:"globals_defs.html#index_r"}, {text:"s",url:"globals_defs.html#index_s"}, {text:"t",url:"globals_defs.html#index_t"}, diff --git a/Doc/html/mylibs__config_8h.html b/Doc/html/mylibs__config_8h.html index d0e7bd6..4c94c66 100644 --- a/Doc/html/mylibs__config_8h.html +++ b/Doc/html/mylibs__config_8h.html @@ -121,41 +121,44 @@ $(function(){initNavTree('mylibs__config_8h.html','',''); }); @@ -195,6 +198,14 @@ Macros  Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
#define GPIO_TRACE_ENABLE  Включить GPIO трассировку
+#define ENABLE_EVOLVE_OPTIMIZATION + Включить оптимизацию параметров
+#define EVOLVE_MAX_PARAMS   20 + Максимальное количество параметров
+#define EVOLVE_MAX_CANDIDATES   100 + Максимальное количество кандидатов для обучения
+#define INCLUDE_EVOLVE_OPTIMIZER + Подключить библиотеку для оптимизации параметров
#define INCLUDE_BIT_ACCESS_LIB  Подключить библиотеку с typedef с битовыми полями
#define INCLUDE_TRACKERS_LIB diff --git a/Doc/html/mylibs__config_8h.js b/Doc/html/mylibs__config_8h.js index 88d39b2..18173b2 100644 --- a/Doc/html/mylibs__config_8h.js +++ b/Doc/html/mylibs__config_8h.js @@ -16,6 +16,10 @@ var mylibs__config_8h = [ "HF_FLASH_ADDR", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63", null ], [ "HF_RAM_END", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051", null ], [ "GPIO_TRACE_ENABLE", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b", null ], + [ "ENABLE_EVOLVE_OPTIMIZATION", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47", null ], + [ "EVOLVE_MAX_PARAMS", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee", null ], + [ "EVOLVE_MAX_CANDIDATES", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971", null ], + [ "INCLUDE_EVOLVE_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66", null ], [ "INCLUDE_BIT_ACCESS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be", null ], [ "INCLUDE_TRACKERS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32", null ], [ "INCLUDE_TRACE_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7", null ], diff --git a/Doc/html/mylibs__config_8h__dep__incl.map b/Doc/html/mylibs__config_8h__dep__incl.map index cbc8c7e..64974ec 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.map +++ b/Doc/html/mylibs__config_8h__dep__incl.map @@ -1,37 +1,40 @@ - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__config_8h__dep__incl.md5 b/Doc/html/mylibs__config_8h__dep__incl.md5 index 191dedc..2f6fe17 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.md5 +++ b/Doc/html/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -1d30e7f7262a5810100c1f2c179cf017 \ No newline at end of file +29f3209273b7878fca69d464878bc9ff \ No newline at end of file diff --git a/Doc/html/mylibs__config_8h__dep__incl.png b/Doc/html/mylibs__config_8h__dep__incl.png index d59b97a5fb82a8f5f9e6c870cba91e423e12cdca..e12080c7f00fb9bd976eca41259bed00f4e2f807 100644 GIT binary patch literal 70866 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

j&kfOzF1;toTzQbQ4 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 literal 63407 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 ZOrgP*ZRpud(M$yVLDh6rOYXtK{txsc{t^HH diff --git a/Doc/html/mylibs__config_8h_source.html b/Doc/html/mylibs__config_8h_source.html index 3859a5d..8ba7606 100644 --- a/Doc/html/mylibs__config_8h_source.html +++ b/Doc/html/mylibs__config_8h_source.html @@ -155,29 +155,45 @@ $(function(){initNavTree('mylibs__config_8h_source.html','',''); });

53 * @}
54 */
55
-
56
-
57
-
58/**
-
59 * @addtogroup LIBS_CONFIG Libraries configs
-
60 * @ingroup MYLIBS_CONFIG
-
61 * @brief Подключение различных модулей библиотеки
-
62 * @{
-
63 */
-
64
-
65#define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями
-
66#define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами
-
67#define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами
-
68#define INCLUDE_GENERAL_PERIPH_LIBS ///< Подключить библиотеку с периферией
-
69//#define FREERTOS_DELAY ///< Использовать FreeRTOS задержку, вместо HAL
-
70
-
71/** LIBS_CONFIG
-
72 * @}
-
73 */
-
74
-
75/** MYLIBS_CONFIG
-
76 * @}
-
77 */
-
78#endif //__MYLIBS_CONFIG_H_
+
56
+
57/**
+
58 * @addtogroup EVOLVE_CONFIG Evolve configs
+
59 * @ingroup MYLIBS_CONFIG
+
60 * @brief Конфигурация однослойного персептрона и алгоритма обучения
+
61 * @{
+
62 */
+
63
+
64#define ENABLE_EVOLVE_OPTIMIZATION ///< Включить оптимизацию параметров
+
65#define EVOLVE_MAX_PARAMS 20 ///< Максимальное количество параметров
+
66#define EVOLVE_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения
+
67
+
68/** EVOLVE_CONFIG
+
69 * @}
+
70 */
+
71
+
72
+
73/**
+
74 * @addtogroup LIBS_CONFIG Libraries configs
+
75 * @ingroup MYLIBS_CONFIG
+
76 * @brief Подключение различных модулей библиотеки
+
77 * @{
+
78 */
+
79
+
80#define INCLUDE_EVOLVE_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров
+
81#define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями
+
82#define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами
+
83#define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами
+
84#define INCLUDE_GENERAL_PERIPH_LIBS ///< Подключить библиотеку с периферией
+
85//#define FREERTOS_DELAY ///< Использовать FreeRTOS задержку, вместо HAL
+
86
+
87/** LIBS_CONFIG
+
88 * @}
+
89 */
+
90
+
91/** MYLIBS_CONFIG
+
92 * @}
+
93 */
+
94#endif //__MYLIBS_CONFIG_H_
diff --git a/Doc/html/mylibs__defs_8h.html b/Doc/html/mylibs__defs_8h.html index b1f09da..639bfe0 100644 --- a/Doc/html/mylibs__defs_8h.html +++ b/Doc/html/mylibs__defs_8h.html @@ -123,39 +123,42 @@ $(function(){initNavTree('mylibs__defs_8h.html','',''); }); diff --git a/Doc/html/mylibs__defs_8h__dep__incl.map b/Doc/html/mylibs__defs_8h__dep__incl.map index 705a23a..a1ac985 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.map +++ b/Doc/html/mylibs__defs_8h__dep__incl.map @@ -1,35 +1,38 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__defs_8h__dep__incl.md5 b/Doc/html/mylibs__defs_8h__dep__incl.md5 index 6f2aaa0..77cf79b 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/html/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -40a69cba061c10e4f05878fe09df0f2e \ No newline at end of file +3009d51b0bc5d0623e8c666bec71ce5b \ No newline at end of file diff --git a/Doc/html/mylibs__defs_8h__dep__incl.png b/Doc/html/mylibs__defs_8h__dep__incl.png index 89f4fe81716c0f24a9e5fcba94537ea0e17a4700..a5864bb4c88180d97040505ed166bdadce70de9b 100644 GIT binary patch literal 67656 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�%h?(1UF zQ&Ahyicol`htE4dGnkIYa92cQ{(n6uu0*M{#p3r#5{Q{_0MW zMpDEZ_em@n7FB+>?K~AC=e_sCj+Oj#~* z-I{#RKRu?F21vP$H!0(GH)+|__tCmFuIT;ywa(+B;2vG2J5IIBh^-kL`-b4iY~ff< z&j7D>G+ggKwk&B|BRiF@{|zJoDr_?7KJgHx@%5f2-}beq<_dlaZD*+I_nvNjoZZeg zoO+oJ58ThYw3SqG*3+L2I3)BQ*g=$W+N8;H5UJzyQdm(eNk=l8y^y>3ASZj(yE*bM zHVmjjdJ|5eFO>-LihWbK=xo5Y$ay33ovBcLjn$w|;$>?PPgbNkZ}|n=Q)n-Q7=VYx z5NFb3wA&G3KfQ=6;_E0|5Z z_{>T|AT^I_eEezq>CW|i@^p6)^)ZD$wzLFP6rFx`cdw`adtKug32&&Y^ye_HnD7(jZYw z;A2RKX8*DPf>gw+f^WGH%*c6r>+HfNgiP`1lnSL|#lGArF{RgQI8KLPTrXxJRJB$N zs4Ik#MDG(|YA8Df5_u`&<~2{5`X<9>_5A#D;&iPZ^D(f@ukMPx^PuX)lWeZ7Xn>XX zoVd!Q_*4h?h@dDF0OWaIkuCDiHLbC=3GW9QOdMc3bCPzEI7*(YQI+bAEuWjK8ddTF zdA4arQa-IF_M>O31CsuTTfkKu#W+kit4c+=N?#o5FVL^l7*3wNMhGO#$*){@3W;6U zou>l`%bX1+qI)c|$5|TQ6iqZmU$CSTyLlh4eWVNV#Mb=*O*lam&5F2%X9i*(=i&$t z$=$)c`K2(pjF9&kdEQ0YZ~DO8<6?g5z$gD3-*BTG6@DP&JPk1sro`0c0;plBEp`0G z0pW^aOt=f~hl}@ZzCfS6>sHi{dBcGI9?_Qh?F_e zu=cQ_vh3(0Y2P|xN*=XbPrj`bK4E6L)AgHr{|MN*#h9#qB_jIcu$Vkj?f8>S=M-u$ zeluQ~z*l0`&se8GUmty&GOe4KjeFN6;X~mIIn4WP*AkOBme~37Z`REXe%TTh$R2^p z{S2;oN6_%nvJ!M(uFp(NvfK>O`DicLW-C9q=M;K2=(OYK2@b<%;h2VTku+iM9>g1| z)Ah7k9fd8NH3l~?S z$CtIy$cKjs*&`W`KzS20a#CKubx)jN=jFpIUDHdX4O;^2&8&Y?wxx5YLBDkS(U}YT z2!F4z4g5I)2krH7M| z4>fyt^XueruL^1r>kMJxQ(w$h0hRqtk%xU&;EgoaiXgjewvCHVqDyrtmKNX#?|Nac zSY&%rh<|lXHe%*h?7hv7^LymP6x4jywmtkMncaRkZ3;=WC+*Dzte8eg%A$E;0d6%^1pxkf)*qP-3>p2>c4*fZ@D5 z3(qdY2|#igO^El{ILu5Im7rC(q^Bqh^eH?Lk93v(iaC4c*mA3B53n1QzLw~dIhAAL z=Go_mCz@}F?S^ZM%@MBE?bM*EhHT#* z@~w$1d8U4*(`&xJr6a>X1OUtcw}O+&?$uFZXhO!3LrI@F^X7`#G(#LRamuo?!?qMbki>pp?5sV(z+F$=uqa#>q_ z9lx^xPFA@z2RAOs(cI>j3=-iIGi(3&YNr@P2TYwQBX!|C(j)KN2x%vTng|f@Wcxb{zi10NRltR4pVXsDazY!Lmi^kysKe1Pp&eMk zz0-;3M6FOcvETAnj@Lh(_=RkYhxv+rRQLZ8aU!vL7-S(qWt>4X$O~d1jE_);0b+C+ zsxWclEF4x2&dU`BLe`DA!Y09V7)Ck^o5pKW;2M=*M0j4da89R$4w;hC*Uz@~Ou=uO zPnYXoyQHCW6h4*q${vTEGHb8~fUB z%WT+P>z22ll?Td!jkM<$RwIsFtXcTmQi&5!|IBJ3 zHr*yTc6%2!bDME)>EV<$X&Fgj{a32a`O`=xG@_ z?y`4m5MC24c;h?PzU1_-T5;qtq{{aw+E8fj;K)ezTa80~@?htS=WNed7YQv=XMPGG zvvzzTVE9`7cflGu5%y@DLK#T86mvf_Ck5pwoq`YvgDi^U(idw7Oz)&B8ygjBZ<5X# zr9O99{#C{x%tvQ8F!7p^g)ty3V zekd9X)}WUw%3Ck>{$>P+PFQw<`|x5Z)-2~mCpPo_4-XRFxGa zeZmfZ0H{r3Y9*zUoR_KgG{0^>Is(Wm(x*nCuIBL^jorC-A?p&OTXN<&805$ z(Vmm?id9z_#PdL%C9KqfJzJ`KY+BV7HDTC@sg`d1HrSUDxp#+?I^gqC0b+)M*<3H% zX3K_27i1_nw_-fnP3R$aWu;~RTy@|g=%-$=1ZFnqoA$x)B}5<~!08FQHE_Vw0^1z& zbqe|M^ftT~Q4X9aucS&`s3&)`S4^7{#I<-0sT4s?aHy;+!}Mg6>x+F{g{jMQ&E!k& zl7Xso6MOHmainf;bwxWgjzX8Z;;2mwf6B2Hi}ityTX3t{tm}RduM(Sc zd^Wwrr@0!;AUKPb#h$+hcg(bPwaP zG|TGTB0H{v28elZZWiB%&6E*ON7are8V>~y5m=EESXoOahnnG~H3^2!R_fho9#Zz` zP1mKj0+PZ&0kqDgByQU1ALBU9*0lAS+{kTL8fY!iL>Itz+)Br5B0Vi@XXv)O;Uwp} zn`OuzPqLNK9Vz_*?++lF5T8{@ch)}6J?F$^=6h!dF>`d8xFMY*J|b)rhA?HHwW|;3 z{7nt!eebrlOtj=dzJMv(&@e&$D(bf%^U$Br3RnBK zNCVDg9sNMro0roof2M3zEDi^gv3kH^aohLqPNE*uBixPtNkAS2q{A_S%DQklu=(<#)AK_ zPmQy5&1&S0h*=^fQKJSXWJIq82utF54`TuW=`+f{5Ib z{|>jPz;@5~idQSTbP|r9gq`)6q9_IE9)Os;Q`ns0*5RJ1@Yw2*R6nEg1IUJj6Mij) z!Z)P5s+eOI6it~;z9fzOp}bSHdci1X6VPgCUR~{Cb>5u8We|t?RpE}JSXdW41WjWX%JSes-^sYkRlaK{6 znGM-I2vL_A!&WCJ$s-t}f(Y&VB?7n0u<9^?pON;FwFd8P8sCS5!)}uv2rkk&34#YW zW(LUMbPC}4%~E-N@ywDEA}N%P6f!Xk%SQ{MN@UZCd;GTI1l%C2n?t3g3^Tu{;~1Oi z{mmPmv-Hq&bYZ>IB0anLz)>vQ``9#n?WCXKM-8%#O)gDg$C#H8|^<`M;s$3EUo12=*(@=FIz;{?c1+AV02BGL-0#bvwx=iJ=x3yqVNS~r@I z30s3rT?tzY%@HmRYF19Q*MXIeU!_232`MYxhTYjuy@wtNtC#b2csK~6058ZG47yaM zuu;tkzFj(o_)#31{t%TjEI+vYKuf`$ac?;2L(c+DT&J;I{M zck(60bO?vnAWUQacT&1Y8GMQK|TuA#Q_( zi}nK!_L}_!IzFkjRK7>@7A8{vWtMlfP-eCUCO3%l*58ULWa_rOadj8kCS(GohmvwS zv*drn8@)+jhgHKb6}n%7Iqm{EEKQv%KUf-gGR1KLppGnO@g8!~)lYtS%N3iBs(i-A zI#4Y7h^}TjubPenv`m3~7~}h#=t9)+sruEN3O`Smxo%5r3h(eX2v^y7`smJ67P*yQ z57}4?35}g4UGe=0D+y$WrnLr2S9WW{8gZ2`O;6k)WInY~`-*gly$+9BNtcel6L9cD z6X~r1H$T>Zc6Z|_toDf6e3wJvj>YqLRZy0N^c^HC>ft*v#&Lw6e}j#iE}}u>vwLvc z#9hx~tUw=&IZj{+ckp8QhdNyHzj_wjuLZ{I%L26-NW{(k4!d*nX4R z53N{qoB%(;ex}VBVipurnGztojqU9pQu$GCs3|c0!18IxljfO( z87gmzHM}TsMlbe9mZ-TMZ+&AQwV2pmxfgb9Y*alFN24@TGiN?*Jz`*7a`NE zK-a9Sz+caM51j@bKhaF&VJNv|UtmKMJIb2e8b+IX_+RN}^t*UW21DXf1{skOnR6u* zWp4HLfi_;{7tynUlQiBZIPMgM;(U6H(r7q9>r?Y+jo5Yg29+2EkAtK%;Wl=vLUozL z%a3Pl+oE}TF|pbw)ym+%ejL&b#qdt5m{|l{?3J+poR2<^nysV0oQ(B(*tAEY)ScMR z+VR^YV<*0~;df2h;>9#v(c8q#+~eK{%X`+qP3)dO1ziA zoUGOb8g6|7Jzd{EuBXbn`{TH}#YfZHb)h|17iflaQ%-h02&;YC4)7Ej&ljk|$j zAemazpRKxdL;oo;(&ptWLYTDYk-NS_y1!aq#zC~2i5FUrUBZish z*c1KTh*RpqHj;gI-U@`T@H9YS4pq;I?mb#;{Mm?2i(UF=zBUB+VB5vNEP1#IjTl>` zEJiZ=Y&C4$s51jid1G*HO2L8M9(EuD=N#j&>b#v0r#Mc{+#O`X&!DBzn(nBXXI?I| z%&!!{>ej$aYSV#ohdvb=c*d`Wo?${<_mp&h`dzJkbn<_R9=7dLx&r=f3vT#|t(^3N z6}^u4v3v1^OpU*Z){ezTX>Wz9)9hk<0BNkBa?+hOzEx;_GphcmE!b-p*~+Q_xB<1! ztWAQ}mon^nGL!H?He6o8nZ)LqGG@vSw$cHeUe$nM)EK>R|9 zd79YGAMGgS7l8PD{Yk(oZa}827e^VIl{gfNZhQYmuAkal1$gsRJ0b&-AnEx-g4s<` zDo@`T^bw?wU4oVfiE{&!cdQv>3_{N)i^+U&=9deTY@LZ%+vQjz@mWI`2mbfonY#!T z333xDi*Sat@}oI(>UCfm5TYxa+&UpnWoEt(@S;J%%U&Y@$tMhbUBtGT5R|SG?Cd*yLOq@b&FxdgNk*=X5>M z**EN1jNagC{Lkj#tx!X~0l~D5Dw|ze)Lj%kvJ!-a*WMX30}qYm3gd5(;UHlk?e0yK zB3&ZY32#DY8DDL9a&w&tR^oczy>U#sn@7jn6by#-%FHWM;NfCjW=KpaiOIi=zt$2m zb%SvDhfEGrwCOQW3j z@<0K-avmawBz)m5{9X1V8iQ6q%S>55?mLZGhW0PaxQ$qezkFEVl;$?s864Rq=f4K% zgXy$LjSQ(IGR{V5QY)!C&=_T%1$2Ko*)FIM_mbJ2{mEU~;#(XeSLc^;F7jy}2i`wK zuZhHJPQJJJ9>Z!iI7gu;mL3B!Yw<;W+)&H*4j7a(Du#|e-=F?{E~mhzz;%1fdWS*y z*pjiRrFsOehB(RZyDPjKjwul$&-F&P6dbC)GQHXQ!Td~sK!MzXNRD(qMc`YX@686O zZ!V^}g)`K;3^l#EO~r5aJKDRm6J^E?Gb+?5Qht4SQWno(lO(OZ`DV69-}%M1ar2^m zt+O`|*ENqaJf!3@CsH!zFdgD*nQ_j&3FFRa35n#GF&KbFEU;+SKgr3k!i@*ra5i-R zu}tWkU1aV21TFqxfyJqSafa9@b1zmUhJ}sT(r40WntZeX_eHymY(p$-rEZ0XtB_|X z4!Cm$L9K0lOwv0Vb4O2p1qbK|Cw%nr)oSIiOka_smL5*n9}LiFxwgv=YZYl=I&=FP z#_nSFNLU?iT$9jhR1d-TD(E7!iRlT)-uLLScA3;>z|6ZR?fr4_CtOuD;KtnfFgD-9 z5^;Dukkgkun;XqbwJ+#kdM?_^yQ%ZSTw!#ra>MV_kV!->QF>zScaGJA%93xS9`EKBw#-NpQP4!5NH7_Ng?nmY#pQYv0C(U3nv3RDKKlZ?a|mm?S)z zpu`xx-%OpO%{n-6IKv&`OS@S9!&<1yczki3rNfna^EMk}YGI^@&U^0EuD*>i!eA^c9X&6 zULBtr4>F)dY7q7@X-j*%`O0#9Y+L>szOc^k=LU&i-1){h#-!QORo-WLlP};!t%3Ofc=~#er-XnPz6F_O*P@mLOBPl7wCA&1b{ubR;i4 z%C>ga6g}QoeN}@CX7$o_ur^J=hoyw-h1KA^{QPzSrmI28L)k-#7>k5`V@mCEKCE9V z@=u*|)yA2++|LwB3%tGSoG?c*OIXxgF`peLQ#9bPv9(Aevrn;RH;8NAe3W>-71~GJ z+a^uAPq`*DC}x7k`o`*pFFX14;*o9kB9qTLvo-GEyl^g=@J0MIw_R;e0!`tqcVzhb zWG=#fEMAUSF0+GDH6}{#7q?HCf5uL-P`##~S^a2o{Iy*wSQI!Ow1_{5m%X`FW79WD zhgm}h=|AlIHufxs4dD!phb|zdS`&X|ecnEa&2w!3IgHU0>#(+Vn$Sl-e-Q@+cr^w* zt+WYY&MV9vWX?;vaZ>Vr0ZpWJSEZ=iMx-QdLXl*4VP?bxDY+nXw=go3q^-(dn3oD$ zF%`E8GpHgz*0ny0?l8ZKOz#rL)zfRbR$0ylDuDZg>0c`iHbNe#naSsSXpP$1zDIP~ z`-rE_B4h1wLPS*$d$vFLae(Z-R%HHd=(_LlqJdU@uXg?MvmGT8b?2Hlr&EHBimGo+ zZea1`lr_loS?x%I8p48;^lS`X4xAJC$VT~jr;%3UHS0t3tuBnWsRy!%?Jgxd#nKk< zwY~P)t6PaO)dE-jiF$NET@jl?9GR>$HZ7~Hdg za2=1wO~yGC7@42NqBx5v1K=1P6zDDEap!MK7P6&9mQULme@;|~49lE4gjl>m`CG!6 z3+E=I`a-|n~9a#hsm(Vx7AG7B>b-aN8D36cf|-g_LF((hGpTGpYeVhzm)6v1*f zRTFS`5-P781qm*?jWGsA$t%SK3Y4srWz;Iz?@15JTu(~#e%u()g^6_g0G4N1hPCuI z+}_lgQBtGmiEsSn2%I9cetc_rKWN#c&`fSgW61(_|FJspt_-RXQ^!;nEcLvPd`AgO zA2q$81(sheR0ML4BeXKIr~aNUZP0$-Y{t}Eh80KCWqARSHx1M%b49+|;0u3!h&JL- zGBZ#wLYiU~!iy~|%D!-ZZ+`X+)VHw)!-v`SZD877e`)t=jj&GNk7c1Iq(1t&JD_{* zuvJqfekJ9-Zdlt*({=p#LDMTRVj{4tNJ9qp8#3-eqe?v5MyGf6wG=}G56lfH>(yjOh)n!uL}6z zh46!rge?>eGIiz&7ve#Yz1CX9c*il6mb>vd5WphvfVl4oK(Xd_ zpPblQk9Kn7i_Nh*4m2(GG`o@paEuAL65)H(4>UG{lS6rLxdExH5-$G40VKkm1229N zJs*8uD-V(havsSgXGk41!kP;Ua1)797y$w#i5|~H-yW9~c5G+TMA&?j-|b$$?al8- zjVB@g6-2+Uq8ouWz2<2^^U)SEn@b%qD5VkWbR4o)2cWjbJ=aI_L=dZSYVN1leuM6 zgsb}+mbOedi$peNK?<3iTfBL^nC}z$u*hvz^(3-I)Gqg?#B{U{9%``SzTEF{9~+k+ z@i|=gzNru_V)BJl0anja9y2xepmISD{evknoj6%0S+9v{ZW^M#O(FextT75?a)p(Y z71YFt%lhQ2a@=)q@AMY$-~C-$eqeLdEWo?+I3Wt*7vsq~J?x+L&`fkQq`9JHh_QA2 zv6pXXbLh=Yxfyjeij2~`0nfY2!HT*_hk`iun^`#5+n#}GX-2W!hSo+fQiiQnafyf3 zH4OS`U=Q>S#UyqBi@om=V*95ZP9CJPY^&Ty$WmIpv|8bd*@>uKAZ+MwX*TB=!+voo z)eU!a0tWRTlX-P4O?Ef^yiUE?jby>8&-E8Dl?OMze=v=$y|T=Ppg{2@lm~1c((uj? z4Nq`e6pj^{wXL5(lksw-0^(KTi7n=;J~UuS(z@*N!AtwTb3|eElT(u~fiJ4+r_V|!9trl+>y^ce@dC)J5m*ZR}lg*IC~X-Q8NmNDK@u}$71P6Bi!Pf zIXgzbD&adfdp9ucLy&+ZLe^u-ss;ECfSSj-Ce-rzPNHNrmMC~^veCm0ssFQw?s%d};i>+w+pd`%=_v4B)j7D}}H*(BkbZ@jzpmkibD z+Q;$36fGtW_sQCFzRa&n$K(Liy5&&8{-+gp*qp=Lx! z@E9?^w@SJ**S;Xi&7TS%tG@B)BB&Dd>OJU~I%fr~b{(WVj|^j?qQEy1B8YvkY?a|? zcLICE=HczD^_fFq4@5sI;xWo@OC3Kfi`hEx?7HFAxGCB3-7A9Wd$DkBe_qn7axC*n zO1S@?%&(n6WjJV_%sL+SW8=%={rib~^-#w(0dFwJEh2WWyqi}}AmuqBi1cf^_It~NO0n^JERwRRqMbc;Cg~g1 zSV$wMuG{Y&6P{(c=Ql9ka}f|9{$+Z~{OazDN%)(f2N4SuIB!&xCN+((*YB_hnw(^O zY5$iK%A1whB%Sq6zCbtsxKf>3xR_{oI=NowC_8|VD(NumiI*9#YixS$7;t&@^+8~9 z-(GtA^l{q8&+)VJT`nfm`sUHht8~hWoX5IqOas+DGvd|mU${h87pagk6_W}THrVkQ>SX4dKN%z?Xg98`Ea&7Y1e*uTcdN)iU>Ti6m0eMC!M zzP$QF*S02b%!fJ<%jhzo$|SzN>+L*9CzUMH| z44^m2YB+oEVijdc*ZCTGH`a1O&C_I1Mxx=XpVG&Vw)xguzpKsnlYhWM!ex%TdtATP zWo0e)XV)$bKp2F4&y&BQAH+P(GN~UZ`(5o1Uy_AgU=2WpZm~+0^nC$YSE88L7Lsx-yAJMbq_-YSwP`!At}AFXJh3;bhIR zuxR>McW@^3#N4S~Vd}-xXdk?#VMiQtOhp_~8@34AxKW91eUMm138bw32Z6V7jrelD zl6Qb``NU%;{cv3K^#11SgzBkrUr*$|8RtQvF4Q+zI8Cm8drleP^c01YDC&8@375~U z54K9KJG|u&Zbe7Go>(qz!u2X5>?MBQ`TVH=71Xz2bX6gy&i2xJFq@aPBw~Wfg#*~E zVaC$rG+K1pBs_M4Bs6R(qVkx7*R}qqr(_Pv8c0Mh4?|k6GZio(qKileGKpP zX?(MOkkElIEYU?8E-&R2Toe73LNE~YK{=-@mIKyTm^B*Da_x{?W_($|us#daIdFHF z=)&2Fu#G>p-?5Jg*K5!u$-HW!R8q!b-WgCzCSsE^d&_c~WQe(bdG zzSc741o1j_*5sVcSwO>Xo1CAcSP5)B1%*G!>ZFk~5sp~mQX(GJO5{7gwIyP_G^?Fq zmKnG_7QR?}ZH|^V@*zi-Na`lTBIX(fPC6nSryCjyb`<)G;_qQc^WT?082;Ie64U}L z5Uz@iUdp%r?xIz2@TIkNKvxb1_~7e?0iRpAl}FEz4%f{Dn@rLR!?+hepy^?YHLB(g z?$w^nrATF5#?n^>Vh+AQCet)jgJjYKCF1WEh!P@-CsuwgI#c6VVQhQfZ2TPSUS<9L zK}HuR;C_^nAVmYO7&n`-(|mcX#n*J>oC#_dMhd^IFL5n(KW!*a{P(s5q9C6~-GHxy zC-`P*os40r?MZmKrzF1fz?X4#bssL~n2D}h3Lp7pN8V>jrA%YG$Wf4@n?^r>iZ4q= zwc}Mg=mwP65rK@L{3R2195`}=kPrTiu2t(_4Pu3}euZ85oC`0DG8Y;xMy#jhOiIOz zyv-e}tt#%Sr*Q$l5*@+=Fj%GBy|2*^0(h@Of+hL|+hEO) zp0Y1kjJp+4hdHA|4`O)Ub-bv*Tss+lw4_23YDUFd7}V2BdCmr_XSCn>7RYnrG*B$X z8oH=}5ZP!S#Kh3mBf6@oO%DRKwOn28dyhEWdgu^Ix`9L5HX{CTq!J!Z6)7f|^e^o- zqS)NJ5jsoa`^&hdQPZu0K@jO(4F%)U9paQjA;u+a8s4#WeTr9uPA085uE>;PA@ldL`^KUu^kPpR=&Z%N4 zXp|)p`daW!Eapf?bfyiMCBLfW&BTXEoMabz6+I$O{FU-)?epbl(xw%eg+bnA-hX=-3+W$0A8jpArmACWFrxPJHqZ{eYKOz<-8mw;+p;<_ zAE`G49yTK$4}EN-Jm+#CMyYt3U|iI5&K~_*1=ii)_~AA;DL>6ha+Oki$1yTw={5a< z)GDVIOvR1X?GfS_ci+;cg(?N-WLO(0P3rC9JA&UT<738n>W-cuvg^B`InX`AOQ%L| zRJ=Bfn_(+J@B`ck^>XL?XFa$ZxF3r4T2ILCdWssJW3CKWLU_9<7% zB;g$t8mu*}zM5jnZ{*+#92;^NED12D)^-%ZR0PE?6<^n!5m7^fH!sX|gdDn->}^1R z@#R{tlGVd)|GHufVp*U811A?`kF4e|YIh&tERS*=25@H_7VZZds_k2mADAp|l*(o#v}>7@@Wq>P3)7huO~` z_@fN5W$wVua-CJ1hj!XhUzygk4piF_rp#q0O`I~KHI;k%{uZ|iM){(4LGSrjA)1>fx(p_@2wOO`ZMAyS{1WvfyR zax|4hcuRl)9Ge3zUi%3>*r|(G@-KB6WaZSaZ1K76!Vx`VRnPbL4Hgxc`v8nOpD@{9 zhi|Y9=RYY9Kmt-g^)H*^eR%n$qc}e=a*kvQzf7boNZMAZ5Hua~xcp#NceF;gzaZLV-5j zGeR_vY}#ILT&~5Hghy@cSP6+yNzMqiDHb_ zR^SPdd}IE5d}+tKG@Gq&RMVb<;|EOBoxt=%e&I@F3-1hdM3XOw&LOFr4OR~;rGP!* zUS>}GabwC~um8x^+bF(o;aEYe=Lf?_4P%5@Kz>jK)4frIC<+??uNVo=@NCxxoEZ0u zC6m`s4fysgf~7cqh`xXGd)AjBeZ(Z^V~(urRpr&)5}Jk<62bp_U=h16TW3pczu!)4vbKqUZaY0%5w!O6=xCHohrhJx~(-nOCteOQ; zbw4!?KWyoQCjmO;GTR_u$(BH&^}|vWE?Je@dC(nyY&MQz8OAEa zcstkkAAvW7>pItWs;s@es_#o-KbjUe$4uBs28e8(nQcLqrs#?!?}tqp(@ zouLGd_~a>jwA8{y5j&{ItCJXX>_O^g%tuT4#j_{{aa_}-LF+~dNQ;c5sr{_gDhUz< zkCE_Xf3kN0nr3*s_I|m5vC(GNKb~ogSlBQBVT!x2?;(J!$hiXWp8ey+#v?o&KLUH^ zdF*HoRAQ2t&%&Q)y~M9n2}~}FFpQCn#qy5U{^cM*%A9{t4VQ}RY?WVsmB^cua;Jj` zap?Bbk?rU%)rBViKI>E$^@Tr7J6)C1($a!18rX8~rc{#@2H@-Q4 zxZyI!3Z_g<3up&nT7OkCEv+Z5C-`cF?u|y1f`bjc_&do&F-m{~wm`rb)_CBR)>t`9 zBKwgvrjyU`x0m%aEQwRT{`ZkGw#L6_$%{=r9T=(q+ESYff42`9aK9O(#>>G|C5#A? zXdORw4RGD~o^Ome6PO(Vo7k-=Pa%0hqVDS*n|)51cTSlxV`Za;*0yV~dC^CFj(1 znZW((^=d;QEtK_4hsrKZmT3;;X?gkOT+4dQgx2+$N5AF98JFI6$Fpet@ygzr`1>7v z!|d^Z#t7rrM`vFz^4Ty)JlxP#-<6O6<#D(8(Q_;Huwc3R8_Dit;P ztm8!iVdVPK!Zt{}=VO4VYf#%wURCOIAarXOx)n7Xr)>{#`7r`{8~HQ&@v0j@xDI|Y^C7)2o909pH79o^-jug$fht`9PIe*djyE_L zrUF*X<0?E=ck05?d!(F|yz3(6dAxUr(=cNJ&Hjc~d>J|F=2{ z%93)7?MZ-UzHV1WWeWTXabo>~8nt3}QgP+qHOlXwHwUyBICV`bYNDNQUk!kcYn>O3 z=a-eU8@%-a(N+&jlL0cuV&JgJ@!kYxd9RmgK!Jpv6W6+&z5Lu zDHd6CC5mQkCDbLi$86n_Yi~126ZJ6Rm3Ctef#d71P8c3_YM09BN& z7Y?tRHL>v@){Z%lhD);y^K+Ev$FrV#`$zv-{CRV) z+ljzL^;tWuFiN5kVi9$Uae#v8)pn~iALY?#4RMyT;hrn`P~3RHVDg#R2isH{2T!Ha z_+gEa)E}^p-7MUVC$i%bJwo^ffN?V#fM150g}h0AS-`3C zJ2074+-5u^bhgY8%(0{$tZFU%vpIW@c{N&2B0w?9QM4_7$!V@zY)q8$tcHFGE08qT z3AUfs%~VHb4tmPB52$BJILhFqT|RM53LTk`PtybjNF&i+Y7HZdx`WGMCNiESpF}vV z_gf(vBO74%`(qask~kyGX@J91;U4dVc3j_)^0qVxQojoon!i8wu{Elt${?s3Q`e_u zbh9jdUgH*vODm+3-+%xtf5QduFFVr5zB1iJ-<>XTR(MH~_-rL^jFMZBN$$>_lJcz9 zDQXv1+)q&?G7fQ+N(iu*gJMmM*@aIezbU>$Mx$uBZeFnEPs)0s)Xm)7aW9_%4`5X9 z=GI%d^qxG{aFNOOt>NmBpmiISpX0c&UNvU}3WgT0U}R8##mlAp<~Rjzl^R-574L7| zoPQk0V({Hs0W1K7rgh=y;7sB)XX}oaVogPZx4?=-uR@9xB$b*Bsa_!H6dViW-K-DG z8;RTmS|S(F)t84T9f2I4XacT3y)G%vB7Dp+4~eK*&769E4$=)}@U8g9%v+@YH|BHx zWp?JH^*|m^RvoF3=DBrD#k<%v8W-08u6cI--!&TuqcQ5>_6Fm}#{zkDJxnOtOu)%z z>CGnL`}2(ZE#qF^wcQdv)?rL^E(YM*wBXu*DIt$$u5KMWpZL|hs`{4HFyW|n=OPeZ z4KRxe79UO@l8%;CcgGh#DovAy|97lTRwXDrTwYg{D9{;PW}~{qP6EFgKo{WGShX$OHvlEB4BL6i-b_eV6i;X})O*$3-K|?}={SL6Ru|wOec?TNdxLatjpTW zs=XKmDW_<(J~Pk6#4C#)JP1A{ALLvC9CwUgC%~d^Uw_-j@8C4i;4*BcRC}`FIep3Z$5|A=+r{2-y+o?%>J$|E!zF0^T<(N% z`7m%iisO@0JZi3meoouTVte*IO53N;o$iABdYlJ)8`ns+geKzoK*G%ku1Ly&`VWlEbkoWR%+<(F1 zHQrR3wR0O~{bj6XR3E0Q#fQn-h=PLVwZScJFGsdeQLNj`5s2jFpBj+igC_} ziZPL~+1=@SC6mTGtUyHD7Q>uWWNvyzE_a*+-z4h>HQPIO8`3O9a^=?3X-l$&)4R)p z%-b(PbBex8QyT2h0%(i^|7naJtaETrGM6*>QUyo{tQNUVCuCVyLgic&f>%&pRp)f; z)G}j+S#82`c8dWTx?Wi>+z>8hws}4`&?`wgO$|Z1S68&0gLVNPG5)x5Nu(r_iqme( zG=RF(VKQp#_O&BdjV2~MpPQ`K29+4b5W#}r;LHUn3Q1PVT17U$*t0<8i_nR_MVd7q zR82(j>f5r;NK5?=W!k9bLI{m-+Z>G+WpS#M?3~@<-na7u`?8Z^YQ+%y*_%fG&0bx* zk`x^;_7?W@-J1>wBep&;4ZT8T^Bb582Rp6v4+$x=+80H*h$Jrd0nd7)no_epb8KH^ znh-kd?4*wiFg?bR&EsT?_?AW~(o}4O_{ujk+QONqzcUpHMM;0r$!sX^T#Z7y`EBer ztV!W%X@_5Mrfz~WOU&@;Ok`vKmfbDyP$U*OeG9%f9ATj*F|>!Oj@p9yPJfV?VqJ{! zbut#U(UY%l|G0H$Z$CR3gv=}G21I{v)c|9ta8xj9emVwP0NsJQfxj~jKRjjBIx&pS z;icL6p;(!-0?Z%`>_MzCy~lQ*dy~EIZ$V=04brwHqN|SYeH2i?qt2@(=Vo%QJ&8&5 zuY}{8j@DnBGWcv3cj@Eg`nHKPA6q z+-w4%rAR!N7(nVq#+`&nERdBlD|0$KR*~6Ur6j%@5f!L>U-|b}s)x*_2UG;tmQv zts$(G7{a#IOuqJI*5I^I=9~vp3z4SF-Z<`uy(WdA%xZ~7<;#;l#}dhYyr-)ZRvzB$TmRO%PPj4 zCw+pvX@7_0=CLj}G(v^CC;L`_h@l0PZ8nkIcK1P`(}S+gy<;a`Qu-iRakDzI!5z5{ z5b>vO9r#JCEL=m1#c<(ljV0?FnaPDWX+=ZvsxRLPS>;6t7fl;P$NrnVYrlI}m)r?m zRaB!@cnC_@B2d@9YkI2=7@?kYRT>YMg|CCR^Z1rER` z+;u&6scx}NxNTXtVB@G5T};H0D-)$uiOYw}DTXSSaHkd)_8`R%i4FgJg_uG$|0~=X=0_xHsNrgejlkVYs9q9R! z#CgW$ld}fMzy-M_pAISs#y6gDo$_2Sb1PwVA0@)btK-Ud(mnsSL!8z=(ayf4O*d;i zEqF>vJPdTU80i^rLaKu@<)A>6CkHaE=L<_pX^g9U4QE}>z&WVLfpXLrSYclQgkpF) zL&u(H{~pinpW|NjB2+b7wl}u(=z54yrN+xEbsc_|2Tb-=3A$Ot#kefdeP+DJwaV`~FluMD-rY zKj*Y_xxN1amsvPz0*ju1zocgVB<9+`5NVd@=X-zN?c{n9>+(Zp9#_y9obhvT$`ZBM zWU&52{?MfED?2l@&i#)5OM2GI_EsMjZ+*BieS_f63rFr2%E>i{yMA@)JC@;MM4o;U z?>YxnnWTq)1+6rA2?p8@XhYY^%YDWQV28PQ_45vVH&!a;ET=B=K*uF=e|Ijcegi0e zQLCZcoL3U)nre}WE1Mnx!>sadPzTWM)unbpcGX=9PRH`Hy!;MTSE8^e3Y-+6VgF zV>>h_mMyDx;-PxDjs=i%FwgZ@4fxPZ{lQY2!fsaRjV*=^gXVz0g53bfN^-|ewH9kf zrw7w6`;L+ZWH3Yu%td6zdDCMvTpczv)MEt>=9~8nIp`$|UN$6p_P5%dH#1`&2fg)s zaTn?Cp1Id=zYbNBFxU>ACGyOvnh79kd$%#&O2)X|i)+o17kU+KoTqEjKu}NWbrj<& zQT;W3Vf{62-V(>xyOYZYMtpm_n*sl2#kVOsTpydr(QRb%kF(W{rmAF0M6`A2Xqj=* z+VhNJ4%w#DQ9McC(4efF0i=(L>WQ8M1A)tE{ak^g+1+cdKoX5E`9wyYcF7{Vs)*7g zLGrANM$g4NL`+Lvo%iS-OuNF+&^*STz4F(mt_eMh9>R;`5P^nbk@;&D0|^b75aTkL z$51ZN_M#Wyfs`gHW&fjvxlttM7s-_w3uUwcX-xRW6=|N>`n^ddq!Q3&tel9b@V+1$ zZr$0&QMPXDZ+^PVRO6<7Szs;7|0=-p#lkZ?FAndb42`n1E=zCAdFP0E9})T5yWM+Q z{7FR1Zuh}T-1vP!3@M_Qp88ev9<6feQ>%qDrVvttJUq|iWmAaaeNdq0MX~{uENp$j zdiuuU$7~=dq=*{-{LyG!@UhG7J``nq3zWfCXq-RDSQ7t^J5)Na*XC^Cdjm$rh9hfFqrc>Tk@7 z@@gjR+zVG}8y{K7Pc8BzE6$J~cv_VDgEuT#3fMkQ`R189uI8%RG4>99#^S4QXwoyt zcXAT@@s!J9EO-30>6oWR3PPxg)1I#zSG=|bW9`>{yQmt)_>1s|~;p$2GNS)g)$fA?*7z+CKdS`lRs2NW7 z`$o%t8-%Z0u^0{vy=m`ckS@^qf60K#)`!YzJ~!gBAEy5r|3D%eO%m^H)BQ(u$-u?< zMu!^?uD~H)4nyqq*Z4qTlZtF1?yu}TAMf52)r3H%JG)U)5#bl^eS%+KyW_BT?p?;8 zU$(yd;eu>)1KlZ2N|fFlsoick^t5zJ%AJ}y<^jlcZjL1S)H>@Xg5qn@lMZ?BRx+X; zKed1-6Nx%{iuRyG0nste!|uq z4ey9M@Ea9B73gY9y~#Vp~e5YlzfG^a;@lW=5*fOw~z?zvsa9*>-( zWH+I~NKHKD(+*MhoT~JuY5R$g*6KeYmB;Jntz@9L$W5X_j!H4uEYC6L>}J)Ss{I%X z-?Q)+;?p_M_=|}_X?xKbJ0y9mG+!ZrYKpeo6p6PAADcKFq~SA#+zpc(QizI@r?}Lp z)y!p^l(!bvK8?}8SPUU$zVd#;R3GAe-bf(4+GK(|OJb^Ame^ z4c%sP+4iTd?MdLc43Ht-eA%=lH6T2_IhO&Hbt~4Bv$?tRd9zr*_l*e^2-(W??ToTb8CLA`O3Yx@O2Y;RXL^++j0i4oFMGhW)|&OG5|J@tInnL>pod$D;Af&v@%%Ajv(zT3DV2D6wAJgP`n z{ea0y=E%Y9h9E7_s1wNRuKTA;feMlm$V=r;m~&umfLwB(i^db?V!WOryYg!-CpbeP z@&`^M=dHrazIk}p;R;%eT8Ue`u;Bqkhs!@0B~c$-G=yL!i%k<^&oe{kAKvC}cmIBk zrobhmqPXi^2$UfaKft^O*|npmX#G8fHA!5>_aTsBKh2JQ&YE)fkl>>G!%mzmXS029$e+j|7 zI2R#3JSjI9cq*L#y3!*eNRQm_JM=d9`%FnsQ^Xe)XvwLDOKwjI^JE-{O#*RBst=g! znO8wJKMSIX`fxAGS%_gu-{K_W7yGC^vLTlV?|L(WE~Ddxk2bEOK{zA0-74q5x*BT> zZeV7ez*XopL)-&?0*Z%}>0s`v==DlJC*ZmKe+6%ie4j5ghWM$_hm~_Ode2$H{@PHa zYN+b-Wy*}8WwN*qFd#_&D7Ez}goEFb1b>?PQ$07{b+1~GxJ7c9m(ALpLsLY48}5HP zCh=Y{ig}yeOxKpHd&XdlRB?#Bd{tIk)cUJ#pwjz)a~^-2k*Ne>4CqUd@|@eBpUYY~ z&)SlQM|z+9vBiz~CF+*+{Cq0TJJdbfc=fWUsh8Wt%@d6l3TY{xf2GO98-sS|2kTzz zM(rW}Gp+Sr*~~!$!fN$25MSy`D+`vcX== z2`CpQOumSVu68@Pd3R`dSvYY%&ZTpWT-CBm76$^k2{(DgBX^9A0!5&N64v&+cnAFK zGhSVyF-1DelZ)`hlx6Q$1{rd67?O&d?C4Fs+deQo(|4vA6O?Ch{8c?7N>)kn%~M!e z_`U!qj{t5I>BS;#7vUlyO#bXb@hg>OJRKY~)u-R*5;pWDkFrKT{j?0u`9&U4-xg%z zcPFD9Ig*nygnR?=7+?*pZ|?BnAL!^ zE$$Pi=_P1YV-V=-V8fLzAbGY=}k+!y&*j83q#A?u2D_}ch+6ZlGc0} zOc$iPOomRE(6QgWRF_g=fjFDGh3a}aXy=0vnfieLkx|(SU*#kE;w}5!q8G3I2$>$dLj%zn)d7BhT)Q05tm*kmBtJ_RTS>FX8ww(@2Zf6tAbNJKodKz zgk9B2X+U-wPu$g)EwvL6N^SNHjDDP85VxzubXsHqS^29Y=Hlp7UYI_zc*)+SW=G@p z)t42xR(-PYm*HW4ACU$|gs7lMH+l{;W)LupqBb{70xzg;S)Oeduk;hcB`+|>ww`kQK|Q;AF#aRzf|~xt#khi?e7H)2W3tFb zTTY80x%-`w;J(j{8xyMLY3sN#q(;Tbo4BDp+<@M*(fZ&9fJ*RvU}D>@T}M-DpUzN=bBhol3O zCmke_m@+0TvI9MgFYIkXNDFXdmDnd|y6@;P8ivq~NS=5(U;booSNoW2@)M82ksOn~ zi0+i+eWq#6x@ek+LAtZ2#^J>Nk~GKVQ!GUyIxXX`UmupZH#Lyx5lOlh%Ec@XY{uU0 z7(Bu>&i)pV;Pzvp0p*V8$K%G-P8eJwQNQqCBx&-wOy+%A@v&7qGe3#1zEw&fOykA_8{h27!ow5LmYd%bm^k(v!n4!nTU!<>id4;!!Y?9KN~crT2l#u%s?4FeA?Z z)*QVg|Bq2}EI}S@@R|CLk)L0zPI!2wm?JK>diE5@K7Th?eRV_60bdtF`ksK}3SVqo z$(2X#zxyqITMbs9qJ=nQeN!2u-if~3{qx*E*5dcr)fWK-6-pM>+6S}b1mDWOJ`4@6 z`ubut$vk!CK=vldgHD#jL{E!t?*;?!y)Rw7J)nK3K%|Ek*6poD&d)7Z%x77LhLbuB zPbQS|pc?%ov9AL+3oL4ejJ7~Br<(j9(e|{MR@t|eSTaspAE_l*2)ZMJtIag zD)-B;uI=I<;7wS`hgyFZT5;iKKRO{LL)S4D%k%OD%YhEAzdaXOnTXDYMO3Zx??`gE z^i^3UQZ>bH-Lr)jTNf;OhP3xdS|kux71C1Xz3(8oypy-ha#4FXJaVQb<_-wUDf>8Y~B8ZGpkJu z{8w^`tuRZLcnc;92sN`}hwcbR-HJ@2&KyZ9J!f{SAgJ^9PC-DU#cl}4%2{P}H*q}- z>We9;+>arSwYEH@qY|W|p+_UL9fz?_df6(oaolbS=0|rot;0_oB2BD3E;Tzc!i{Tp zf4)0W?@clP`DhMn>YNaDSnYvMU+EKLPlYO&JYCsEAk%_4A4C@}Docc3x@KY-{rq=$ z{m5vfg+tE6Cjv+J#7GtsRk3K0*526~YkctN*x%4-wIpGJv2TsUwLA@7$i34$YQ7wp zMwI}=cVG!nP@YdAv$47nZSsopZy&ef8};~$QksilPj`b8p?#}AqH2ORCZE)-Iu0p> zMhNIX1q+qB_@6y?W{v)&M&rwbrjkkeh@a78I#dQ35h0L@wKmbo?ondVzN#l$#k#NJ z_qM~)?p^u>l>j_EdxyAcX7_vz$sT&LZ?y4zTJ}_1%s?#ou|( z9Rn^_2qT#AsLdD_P5E+3GP&YxcPs~YOF#Js2EHS*s2(A5-fh9S?-7hs3Vu^m>(rF^ z(U7JkLjf}-qNV3DAOs_P9Rb%TqWjm1p76LzY*?(nDgQP531L1v(0iA;HIwyki&f(1 ztnf7BBK}Z8pFOV=d9ZuhxZMK?LLT{UgtV50LbZ@vIxAz5!?%#m&}i3X1b^1RG*Z0r zp?bN^7ug1HF?)V(f)sKoYC8WtPsa38)8YjJ+0P_$=3e(4%9{<G@DElV5MBd$dA! z2PU~%t7-o*qVU0-?0m`zXbf`Ei zy^@qvdY}BJr%V>SErHe8tZb5c5HD2%@c@1sKE>w4&1*&wQa;GQ?pExO^!}@=79NUR zO%La(klH?GTDxh?ECLA^9A3DoSLs?mK?%s|>pT4ah4V~4^HbUYs;pR7r$6j!?zm;w zu&)qzIYaRbu;};uMB_BTHFMYj#(ra5Zx*!u>@sqJo>sDxKk>;ak$2Gn8@WgUL{D<$ zHGim)SdloqtbvG(jS|AeJ4WoULa2qcvDWcST4S*8e?4RvT~H~aKv(4Sz1oWqH5%>M zxcqMXl3xwKy)nN-aU)Ic%9^aPx@Pw6MqQIE;C1;7+pqfEjt;s-I+HaS_CJ@MJhk$Vt z?3=LBuMd7ou`vBJX%afG(ygfL7Xztfxi7HMP3n{ZABsx)-=-;Uy0|SSI~wTL*^$BJ zGj9Q)`X-pwI{i_q_Ctax*L8*pd8QkL<kN&cvFLH`ZWvsuNLgvK|FS{Ux=OktF_E4$0vxCp)JyZdiWYL{Q%Y{ZC}g12 zlFRH~E>cKzoru1Q>M*2{p%^AhDxp7a)IdV}CN;}3fX$+3k&HAYP47w!BO1a^=~D^bA@rZQu_rwx4Ih=*KK6dzBZ3v+`zS^3@I7#&R;V~CwK+a|ZnnGE zGq3bkr8G#=GD#VC*Rboe;f;ZTJAP+DlUJ0GMEr4zoJzWt|JMtE$$!*|C7mR%<%O43^hQg)eDr0@lXR&3!P=Ch zWi$^KnnP;es*RsQcuI!NjV^X|`R)2KlI`*=G>4t(lDHjun91Yw0z=qZM{jXfDF~0h z?z<8+U?f;QjtEvr;MT%p+38@y-Y-2cuwJ~tu(F-;3S9MNA&5u}-LvM!yyO{ZlVu#t z;_c3z4n^Q_mSTbgtI6N+p;U#Tfh@ti=zidy7&pWK==~qi51GGb|3lnQS$TzgSc!KL z*u28ZHc4#sEC{8a!(O8#E}aI6TntPa8D4?QX5M-O-J?MSxnsgR2e=+)SdT6fw{lZe zm)>;0+-oPZazCobz#gg<@3yu{c(86BL4ze=Qeaz?khF}!SAd*6p(Lp%HjAoH4AaUl z5p>R4vR%5K_T|q)S0m&_5B~K_P>7}ae4f3&QNvYwRRSB}lcPb~1fASHCd(!n=oAEX z8!2=fk^*=@L_Y&f4Wq}0G#B=Y$*+ysiE$D2z6F6Fq3qlV>$TSBr5j z$M?StjQMq}oZ`t>=i&nJ<#X(7)D+<<`R1teZ*h9zD7j*Om!o0}41?rEQsx9;MxWys z^M+fwpIYb0;WAGW+-T z*Lyw8kmBltX=L=5Rt2&%BpL_bV#me&@4rmMMc~N&?W?@Y)Y_pY9E9Ee< zmPU7Nd?o*hGvgyhz{U~QzYd)Oa{ZqC-m9hJB?pM99cOu#H!@lUS-h*1_Jr$jX|@hb zUj{jbHct?}wcPK2x1h6M*?W{J80T`FoDqC|+CK$0IYxA%^hc4WWHHb151OBv>E-aa z???1~m0IL~Qs$WYF!e zl9i1dK@%i@d?vdw-$%7Wvptd}f_ykO0b@}2YapN_t)JBFA$RtEsOJ4|n>-X;j%v8h zVHXLOZ@Y(=vsj59$>wl0Trq`J z$$yj@g6JPJ=y9#nHk?Q*ot#B$ITWbu#@gtcsQ^4RrK{CE=0TM>*Lm|hGt!K11`@$I zE~PdbNlM;ww0m1O!62ORxp2V3*I%|)n8#pk(`K3<$xT{2ynn?ZNXV_lA&9P0q9RD7 zoL+i{-|bkH(NSFaKI##219QmA&9FwcAJBUwmC5yg7h+yZ>COW$+X2o$3n2b;?rRiP zQr`?W6c_$jpXH0*t^ z!c{`w0$}Tfc)nu?*;cYwvsr)l--o>$kNBc>WQr zMu69+U(>!jy;N?AeRQ!WsZaJA%F_=k=q!!?B72q)ZjqYE7-xR==iy>9bz6d?>VI*a zwS7WOXUu=c)V=es@5Rhp4nB_Z@w~}KF2JXUM^Ca!Bv4%{pSB(sV)g%rh3kTj4v#3Q z^&**_s>QyE4EH>JOEt#y!lHnvTcp-< z(tJ)0a-evS17V(SY!A1}P;K&V%-DJ-$^VppJa>@jXs%o5&FXyTQT<~6xl@z}6WaV4 zc~KI*RwmV$cY3M(QfA3HtD7+C`80pZuumX379&kTAW2<>Aa!shyOD(d2`VSZiv3U{S~-$s0zqgN#ZQM z3`oHTsat+hWLqmt2Td7+HLi#LVq&Y@f`w15A;6bg`v(@XO}yHT?m2Kecog|F7YazJs1_GZD10X7eK(fj4=ISUo7w6ZXB#}8vncgz`jhtG z4B}7vIunuRf>^xbW`VC6Sy3yxRHKys_e0ws{#(`@NDVSh40{MIyb$@5;mU2j}4pF@4O@WM+Vwv7ts6t`!C zzu_@C#wiFKUuHkUQ)Tpl8dTD3`Xqu#CykP2KWX=c{() z-c*|whd|XN18)7sJ-@m-dODGvB7ZQ_Xyue}`LCkztWsox{|u7_nQNZ4C z^rb;eiKZ?^!muU#L?@bm6xH07#!snNu(Io`?{-ybh41JB&r}m^rlsW|h`j8xf{L)Q z`edRF@=nG-Gb8kbWMt92!!zZ`^k>%(g-{$}qku6uMkWtVi&Zx^G*eCUnWPY$PDZR~ zG%znnD*ac^EclyvrHzyZS%Ubh2Z)dtAVM!ool7MuvjV{+k(uY2b?%+)=MpnLm`K25!Ja5rvjHv0xlY*VgDuoB0;;qsx`K%!aq zB0kitPF2`LX}i$cSOrI1vom_+H-*?zN{Q$xToAEQ{A^;4OTEauhHilIaW=djhT5a& zLF?^H`@v9^qTDmm8i?7XQ(0N3VFDM&r6j+2`~&>q>e8&bMju82c>69uFsUdL?mR4s3u|w~lYFi2k})dR?RV zO<>ByMKrXu{s^Sxv-qsMcs1+w-3-yjEy1?rEn2roVgo_<9VY*AZYZRR><=`z(vbL? zuEk%cj>lK%P?iEf$ zBQgIBd7~#Hb^9T~oP>|2OJ%3J8uH$lJO0sA6V3@YB=zc^xhP{>3rpXTvnJ(uRAM#q zdCwPLm|OT}4|D&!_j@2Y>~9WL@{yYg_eT+>%uNWU`kTMHi8S|d&c8i?7Ob3*GEZ@sId5%dNq{#d6|W=aAQ zV2_ubBHTm%y!cp_~9z!aTGZ}){{Gc##?|~?Us=eB^Q}3S} z_S0Q3EYld>YG7|7OE`|=deLIPIS06WK;Qp9n6gKOfbAPeHg_PW{JMd&yyECQ#^*JO zjAC9yaRDmIWkB3@X@B~(>wdLkHD&KvZ8GAmaO!y8>h2iZ&8{}uyh)644d5HuN6S)UgWzl9hF^oV>;G zi^}GjF2UUV$qEpujoH_>saV5df&6@;q_$0eMs}`@Mz#*o31=v(;I7;VbGN>}%(Xl) zvgwRNnR9w9UIdXm?=igq{>orD3r>0YdoTbuV7S8=K~Z?w5iYiaJ^1;2j!2~|wb>>> zft~}ZG6s2Jd6Px~HpJtLllQRx>mH`I zo!#>><=Lan>AdnZ)Y=6bxkw?^mSnA-%CrxWEXLn)sOYd>6c{M$7XdmMup{4K1SI(j znrSoSTP5DKbjo-(iKqxNTrOy_C^%&rN7`L5OBfNhGETQjoW2wCTKJz^B&g9`2szjZ zTVK!$hkeG$oicL_)xy6Yef(%s)2 z^xoh9yZ3pnK3vXw=AGGlt-aUYGh^m9vNUTp<3Z1{%*ieIlPCXM9KbS%fQHs2k-I>A&Eb-&gL_DrXuYKw!4Bu=yIeur*5hC?I!0S2+gXgRt^RJYb!VfJI#D8KO@d~ zr^^&AoJDw(!50d3`3tvr{Lvt}`A>a)yg_DR29x7Ucn8SQQzRB6aGD)#@+&sL$HlYMU;BBGzrj%f}sE^h&D4x3q=&qAGM>y!-9tG=Okr1K=c0In_rHhX>A^a6Nl_2QrkH z)mUY89ZY)t;9RBTK;64nPhu1h-MmNu^2^LWQZbg(PzR=mp=$5=^Ds>3R;K*MvUkQg zlfsb(!gfRuzL%k8IGVo4a`oz|CO06ah~fHc3b`ng2RH4*JRCW1Stw~l0BczQhkvr` zMRcyiZ%%;)Mk}?9vSR*HT9_l*{t=h~=B?aak2h2N(%lPK8L-(d=NVv`Mc$2WYD(B7n#mbfr(x*hOL5L2O~2N zuOZ^t#Y@8uIp{kmet`B|ZFWh#_5^b|DuQHMCCISg(O5vf77y1ju(=UbWl8dz=iTV% z7*J8VFKgxkpG|8kuFfg~F|CX&@PeJB`fDo=ZUb0QWqdi7`4Nam9Q&^aeDEYj@kK`7 ztHXmDOkZk5R&+I=6AQg9Gs(?#9gz-t3PL6Lk+2hOo=#pUE0PW8x{5VsH3N7J!TVYR z7t^o2PbfU+%^lx)*OIuEY5yF^LF-&^?a&8||s)h2CMVXKtc2P=XwS znTzeG6VS3gJ!oEn#N8OOG=gFkz>HB1$N0Ml$wrp@7~YuQeG*HgG$+Uvkph{VdpSBn zQ1oqjR{R0e;;)j=hBk1IO;RS+ZRY`Qu3GLM%Fb)9cU{eF?;H-fXE|WX>)Li{f&JKT zQk~Y(LuA*M+x2$b1$kwIkrias&fJzRS=MF_F27 zpd$hN*=Qh%9D`)gb-u2lsciv=zt8Dj%nfym=#Ye)yKoW=VVp=a@f0(SK8)Ww40$nP zGN+6f@<&sq9;b>uh(M%ptt}NYUjzWcpnp&H(WCan{x$FwKuLDsE7oopx_!i-`BN2x zdne@)Urra|045zVDb|W#I^sMmCP(G1iSazTypKRIh=okhx_VjzY;^V@8k5vJpleZF z24E{p)?@z$WS%<5f{C@XG?03X_CVd@;a&E^w47jN43N%o?8fyT5(M1M##NSl3|HAv z*3uX6CtyoM*GVf_<+xWL*P{+$(um{QK0Q=yw{n8C%k!;bX*2MtOHS8|yV|n3RE|Hi zBy|E3*sB4)U=9=#VhG|XiG`U|>!*nS7uM=L94=rTM_# zNB&6Nmyb<*{zB|qgb__~4nr(s)wKT04~w-&5=~laf_?0_GY@V_+^F`enuUeS@2h|D zs-J)cgL#NRv=h^cVYzxd9f~Ujd?l>fcoO6#CVFFQ_LPc}N+1<3Qx= z-eQf1!Uax79Z+4Ss+nZ@fiG*_^0-n0c+Hp8aIJ>LW6&R(Qd4A8str=SEs(1X${d$= zh8lhgj@BNmTm*5~I80-?*CRiDa`Zz)B_ZafeP4X9M}lZ{=s$gn3_@>`@{kl{w|{C` zIP;(NT;gOiuK=ifQ?_|Q*;5<`HYju`?QhZ~H-2kc)d3aq;j4emO*P&Z%T2bvO^*QJ zby^akQTI+h7!#n9QrSj5FSg>Kv?@-L5n z^BH4weqJ|fxzg$+z=2Qi@i+U@nXLLooMlE{Z!Ch!$ypxSdhDK&}_sMC4oY(Mle@@rQtjC=O zRiJwjH>l{4ve7g{S~(aEX7 z22*S<=tK~xfeO!*+5W0lgF_AlgFl7Di%ej7 z6Fm!u!V5F()Xb>+E|~)Rw1A^irvP1`62iDNI2ca>kKYgWmzeYgNj|uzUpQeeB2`vt zb!>{r8p?$$<^z)Y6JG})=m-u?b~BE(-q)fimA&tOGdNhVqo4e=58l2%Is@#33|1|e z!%%=rK%38~h-ru`@&VcFTPPFMaPW>TT^rQeTgzYz0Osexzn>S=mlJuZx+Y)39ax1V zS-+>bNMd{Cb;|R0p~r?tui48H^Ug=OMt*f&b+gXc&!WU3y(2cM!Gezt?o1b^O_OD( zaM_;3uRHt(*Vog5yu>#SoSxa$-b<#!z*UpG+tn9uTfDTWF(2kDsI(In&$_77(NZ!) za_9DKhJ;nWx$cv%eihH{L2uw6<5(f`$UtrV%Iy^Q{sqU}4bh_OS)(E}XfN~8Rr1e+ zu1h`oQ0IQHLsbi#ME>!GvE0-Ae?YScbB19|#TrY?nByFRpekaCG|$xOP~vwP!=*7Z zrkI{L^YUR^3be9SJY4xgiA?vO>jml?Y%0JPQW&znEPj|o*xOXVOQBMCp15%%Q4fb{ zf1s9Ew@RPi)a!+%VX^zrMHJ7R{&OTO)&E}T+Y{z&lZ89Dc6`s?lj7z~h5c;V%8q?- zRwmzWGTazOIy`bjNyb&C$Fv#d>;1F zMw~*ir71te6}!3{c!}$432*N-7t?biS%f8LCpG7fsf-D4PlmkdqB$13>-P>MW^5Ms zG%Re~X~!3SUeQmk+hwm6n|vnLi@-e_9CLWwkzEZg_w_2ut2K4 z9G&hM*!$ec4OWy?3e%j(7%6*{cRTtHHi>#6b;HXG1RTZXi50F z{)={{b5QEA>1qDhobt4)XKZpqQiAf_53D0Q)z{JHhjl-9M;JMT2V8x~Kr^O3JJW>kEvejiOSqTS)#O5*P; zMQ823A=mk>%+8^EHoi+V@xl1~N_Y+Hc&c2Cg)Qu77K*eoRXlaeJF-<8M&tZ zOZ8SBW7*j$ehbMbtN0*Khj-00^uUI(tFuQl!g=HB;+6^Kw5MGSMRWIl{#KC4p7M<> zXOroB&H7IL8Qi0yp9$7%wr}SRYQP#Rff;TtnuD#e&^(xB@b~nVdwW}+SKqx~;ru4> z{4vvKcIXqX`0XFUL^BmO#$ILaBKB#?uWn!v82tT%H5(32@n9hvs|qz13>T<)%a zdjVqGp0uuy9%(tiYWHM+&My$}4bl4tb|p$APThe($`9`*(zcgkuy2r4I^qs@baQFX z(ZKC6))Fx=i7S|wN~*{zYHP;-mn~xG{-(#lmz29{IASaPeyeUp^x@RGr@l!XJw{)27?}|x1dP{`Mik8`44AcF5|iS%#}@fh)L21 z!n8-eTB2p>^X{Ha53Uz5j|4tB_1B6r*)wNTm&Mk>^yT5B-7+$Y>Sw? zSnc;w&}ka-!TIkyMg9(XBW2cq@>4h)kqQ3sZ6Me^d9~UQA$o(+Z#Cu}<~(b3Bu8^5 zb;dlg=TP3uteBB^s_GdyrOy^4miC?5hkBnqbnhcX*-BnFjeT9a^@J-Zvhk1blATrd z#_-*|L_w9aAFyhQ_Vjyrt8JbmDX6g*d*A4a5tR`a2Ur2A=MVM?Jw`tLgwmiKo zys0FTC0L@~jd;hDBklbvIlD3>@0z9Cb61Xg-6>;6Wk-H;hGV_R+wKQxmdtGI_8Rcq5J ziUGIQuxL@!#Ly+WQL0o;?3R~AKJUu+?mBEKE_r4G2bycbPHzrQ`6g~?FF6Qp?^dVE zbo=K5&vnCH?X`DB7T?1ruWR5RL zBDGx{bzuU>g{N-WGGj#zpa6fsw#%so7Ac1A$>{+9cER*)SIz{anKc=a%B5LNly+J~kQq z((s-0n|YxVXPP(jYS`loD*74-<9a7=cJ6<)BlNEl@%`4P8rc4 zU4zh?!LnVR80)N?u&Q~@D^@igk21%IV@DF(eM5X#{d$^He_<(Lc)o#?_Q-z?2YUa4GX-m;z;dkSAGMAb~r8JtloZN3DH8e%9<`T_a|u%WpRW|xFk3-X&?6~Kw?UP<65)I|3>?X)tB*Z#_ONNtO(ejJ zVp)}3zj;=k>rDIz@6wfTVbGc~qGSXHaM9D>XDkO%;-b#C(QVe~+C=fB949ntkBp&T zGJX2581m}MVqk8S($76EjE|oTESV?KTGdr02ZjIyD40DpM?{UbZ`PxM30YX4)Bay?p++6>MHRI~`tSEXCxw{jNk-ADGay#~@c zlKrOfhoA8G8Qqs!Otmm|e%sl523S8x%_GfS>y7qd9hYxeJj_~@JsI7r72G^izBv|P zQM_!53BS*^z~R+}c{Sk3^QA^AC&00hGB|CbP)N1MmGcG@?l|aUXlV(ug%68#bn#Ti zyqEqcDPfiC`#_+P&kH$MAJzs9j#&tnqS^PS{WOr_C^rTZ5Q{%Cw@UA()WN!JIPQ;* z4E}liR|e^s&5S4~svX2F1WGlS@Hto)S*vVOdlKPWb{}zD%*8f0C6;dO84@c~&?9sI z4>vlZ=X$Oi+nGuE1TlweL>`sq+m`b~&DSG7W3e9O8{9OI^GX`Vxbx%PO1q_l;&Bp(&OGXn&!o2eV@ZDrv;A?C7h3Ml=CBop$~*2MK=LUYO|T!vNGNk!^`#c9UF~Zzf zP7_FdKbKnkv2)mcz+Q({v-8eDv#tj3tR0CN+vcmDN%2#jiR$P9u2^sUOVekgiu9JQ zg*)hKL7j~yq0F$LT5=mw+VT;?4k|s#WX(Rfdtk0E!2ph0e;MS6(UY`Jl@B=SiCsO*t_uevA)K@Oyd!9?YGuD*jHs#Km z1L;3<@nFqH+ET<`&z$1QK%*6W3OEEIO<|@5RJK)W_Hw#=)#$rw^1=i8Q6mp>7ry(1 zI!w2yHY-mWa*f4G(Wqc5U?=@;M$QIiITkvYaImme*zz27OQv||3@`#yBHdHryjY-B zF8ZzER~=DoHGixnB$_Peut`4yV(f%P*`c=O z_*Hp}dF(cuJ+Qc2ri3w4CWkoX-)t+odL5_vvA`L8I(BMy3f|=?g&6D5$MYBs;q86- zlj@#bv8Up-9jZTI_a zWc7MSJ(UR((e*t1j>+TxbxO8H>!YT9VxQ|s6FI^ix9nzlf+%GhT9t;2-vw`+bCc+C zTpe>FgSSN`-BG{}pX(5myI%?_+5tC;8&d3CR})^s%Y)+G`FU$eKMCXZgy{|m>8{SZ z1oVWv3C&&d-rxPsc2l**6}dGc@6dFP9=r`&)aTM{f|;~BuneknL%Ee1(G!~GL>sOL z79Ob#e_1uAlFpiBU*3_$76fEL5EU#5Pk)1N`g;P_^JZ6M)?XUD_XHB@PY(z1e^r0> zVP;QzRF%BP9hfUNE@#f^YX5j&^z6{$J*+|SJCnIVAQ3?o&(sX8^{&e!;MwAlf8;L5 z!fj3zPkO(h@qp{^p(uRk0KN>II2D_JvzIj~nXPXR1Q#D!TG3 zr=mvc-fB6+KI^zQ9`yh2ioDmP8!l7GbLNXTC1U4&LeIX1sAfHPx<70(Pk8v< zHIb)5*kp(5ysww%}>2Mkbl1EO@=&;chz%3Y)y^0@sQ-RAG5}eG#2g53f57 z*J_wS?`5xY4?sd?5B@s>cYaV6_{g?!ad+wADHwZz>Q8kvlQA4rL2#~G9LG9PYdt@m z(4^seBz~CrcXGeLN_gK{Y&i`*RX!=!bVwf7EjFDk6cDIn@ssXb{X7vZ_Pw^gN_*~; zW^c9FoVqhx6BPa|FeU-Mu6c<5dtiX6qXb3}iPZ!9YtXtp8Ct~KvX}hIVV>wT{t;h( z+tzr2nB=2G7pGg+$Dcs8LZSw2C_0m9q;>&&&X0oYc#r(3=Ik6LQkC06g(E%-n(Xu= zQ8a+|7^G6K3x}8M$;MPNFH_J{MZ3Pb-^({yxyrgeI9*(=o}xpGp zymstouIEagBMS6(Oo& zB98x_zols2mi1t7ruOJWBw9lH{M`w=;Rh+^j9BgBJLV(H7(orf@YxH;kMk#pT!g8- zdtgUJJdFn-I~wSL=hwBpd(0mcs_>_{sO*%-a!1(3;K*WWSy~bVp;BhZD{Mh9t>_r$ z9^PhMp9hTy-=v0(h|RVR4F_sxQ%cUnne^{v2GuawUcP~ib@))%tnHnGY(W>tuEmW~ zqU9@3@}&>qou@|h5wJ^YD3#IFtq#RJ9`}b(uGKq+b_jwiCmVzPEla+U~Jv18e$CL&diF zaW|uKWZ2zXe+PwXkc+FwgAvY zMkoL_lR!XeRV$~3@5|K3;aE5P_)6fu+5FY_QIr&O&1L9q5Z{bLe+R0Gda1whQ$4in zyVG4ENO42)+1+-<>54=$XEd#K^n%LQDaz-ny#whIW*qdYs#34{ik?M_hkTRl3~&f1 z9?RU|(+ek!{GM1@jmJeFT+PXmO(=+PGQxm>c^vm$K8aI)q$fL`n#0rE$M?683$Y0; zM^FFn>FCL$1I>uUrqj2JCt98|n`aG++gGV-B84PV2v#WMPp49zkZYcClM6(CZ7Y}O zYjQ|f_j@{}c(@%~HwX2N;E6wlT+`Z_(oGLfNv*w9r6aF=dZ@=FSO$(`|!B?bZ+IL1~)2-6BADjBx9O=p92U4{MP1ATSYFAE2?#njSKoM~IKFB=&i zHixXdhpM%@!V@Sbn>Qnoqmol!sN;Dxyj^XhS0mSSbpB0LP_OQ^<{Q(a%gpR$HSna& zx3D;~tSp~VUroMw{H)$jL%?w9htZ!Gu({~c!EYmmR`=?tCu&ai7_H7<2x+ZC*macLE9^j5W! zOt6GchIXICxvoY@38QkVng6E%KAN+Qk^t9GUbJ+gnX465fF`B))oqXP*jijuD@~!X`?bLQtf1Wm36Qhl1=bTN~ zv`-e$D-lcJnxFJsVhE29<416QGvUhXH`{y9IyB?!iX=omNY_}C$;?lps;gqT*U#5l z{ZU_U5)?$b517RbPf~9uh`a3_!7zsmJcER zA^!2>*t2A9Yvn6#&(FDgYAD_IQ#{@0?oP+e%oh{1(I9)CsioHQ?;)<=r#^Q-3IK~s zY_i&Q-OOG~mC;b>FfgzeY|B|sYu;G65W_r+btEEvOR}HdRPm8}FU4MpwCRwQ??<}Rlg2+&OkL;u=xJ?otSqJs{`3ouo6||aDq;z|JSxggm z4WAcLBEPaLe2z6R&l#ARbgxdQxYDY)3bMB=*e&rRsJ%>dwY|)kN~#(;O3-SV4R&Ta zy;|u$f*Bl>+DYZ3lhM;cDf#k2BdU@8gNDhWjKSNRQXw>Kcx?POu^2(Twty?F{ryjt zzoZcRCZ!9TIPQ>Y$rEO5&m#R43#~)+t=?!6fBf?{b6fJ$p+ZIZdeusPrB zisdQA+4k2w_F{pu^3VK=k8r*oIpH&$kXuM>bB4EWb!=V4vEp@QAkhF`TUPRR;QjRa zQ3K#QdhDU`{SE=BX+L(JPX%h*bKp{#!M;|wCZhmZLa3u_q%dp>NESs(nA zf;8-=33^+^x|;SlBiX{c7}*KXkW4UtW{ps)v!G2JUUwQh#%qGV8=sChRieg>TJL|$?D(R@K=+UilEvu%Kqqh(BB56vV zy3yFN^)RAAP#In#D8gaW2#W7NZ3}pPxX*WXSlgG9r^U3_UxVuPZU`}|#+B(aYq+5_ zKZ+Ozn24k|Tly(Av?D3U(@op{oine62Hm=?#h*bB!}Lxi+cCHAvrjn1Wm zLiqrWA5X#Zp;=CMHGX{{Ok`(F%j577yU0_6)XGU$nM12yn32P@>^YPl+U*xtD4$WA zksUNUsY5o%Q!5@85bL^r7DIEV=c|SM5UTID$M|8d#opel%6^2HkXbUg3)%}W-vvph^&2?0BC?_} zG=_C|QGR5UciPdtph8OzBR%vyz&IbSvOcI;R!{i!htF^q4k3*!& zuf2hgUvDzEQ#NJ+7#!=&28@R}@~vH0gQRZ#pz#9u-4qcfv%o?v5WHnYVsv7V z(W&a5FHuH?0HRJ&7dd=`gpC+sboc_ia|G$;>XLSGI30;A;>eG&X0}P(#-NNA0>uxr z;5l5&YVn``1Qha1ruB!RX)6)_>2S@e?LjscA-VcGS zxr_Amrdjp;LLvo<5B7Oyc=fqR=5#f%ecEvBh1gLnjoQ*A9lV~`#!6RcOog_iTS3AU zZJCLJN&9AF?GGbV-@3UC%ucU`J{;LEtY^(R-d);5G&!3U3Y)>8#a7WaLH7IT&FpxQ zF^pBXeNOoPA8Ki36|Fk9mJ*EHM{bO5JI9BNWP8EgB)aiq{R_Stddg_UJ&T;g2JWriZ?&Lxt(s@^fep?L|!YQ#gkx>=y;m?;GNf*kMjC{9Xvpq*+GAC z?Io#wy*O;40hS@m{$NHB`jjR>UCtJ@++(<^Us>(T7 znU|808!x-6-M$W=m>GN`gz-nrOv9mt1qVkzs<2P)imPn{0~TjJOWyQ7a08EI!8`~V$)J<$T2(gE zPNC`zV2H%p0Vq$P$`;Fb-YzJDZzjYZQfq%RkX73MnZ)?sH*+gq!Q>NRQotVuDuS&? z8oH10hX}Z!2e)4xK9T?&8|10y&YSk$FHSl23S^XyL)b%MK+}igt~|DDxD!a$QTGwn zPh|GOJTIyWSvCwSHvMM4*NYu_ZIT^?F3H$m(a7P;2yMY-+S4TUWh1th0Wplzpei=P zzr6q;o>4J{ERlNXvxl^cMg_JO_^E6Kk<+@D+u{e_z6!j#nr>W5a?9|qd1emxzri-C zxvtDvpi|J+3NO_?xShl~KWgS$q)AOs)Bic@QP7C4NnDD=`(Q58uCKn+YxqQyF6gox zg@RdD&vjI-tZw*34zG`U^|<$4HC&BLWoM9NraU4H{lnJFu}6A(9*H@=xCbU_!*Mdc z8mpys_VbdLiqyX9mHXWa!_ULgws(J4{u_wQ=Mx;?T~yOvfAlv-93L>J6Vqyl>^fnFfwniLPGZ+ zh_u=WOt#f~tPOKfo6asTd6YZio{~b{$G$Tg9>hh$=pC78zIDaS!cO0Ihzx+E5bHAT z_HY!avE;TQC+a-1d)1EI8aU>oP(X1>x^IRQVbYVSRGN)JZoRpx1c83$ihr#bVDoB( zm*anzx=>$b9v({E-`<-P@K9fC$ITXK(ax{qd_)G?qS(hkUDHbA6VVNci3i>mCK1Ml|m! zd&S~|e*X%pUy12q_o~zF*4k_P+~E`H=mC%$Ht_ai6WCd|&-!_{rlQppYWEW;POx?- zzw$I~hCgT6=OD8#s~$e#6!p~b30}#3;&zc#J>`zDLkL@Ax+3Fb2M;CVwx`bmL;R+1 zuqa++z41>S?l8104qqp6B#5HL6~h>4yUz*~WEl4#dwJ@0!XLK%IuftB+UP(6;LBOh zZO;DIUL!3Uc@L|WWy!g<8sql+<2k40*n=vG$(%jFFLwlO`Rr~d@*#%WncGB)z_)() zz9XkO7w`UcezI)c4Kwwm-{CmQnsEJluII9%4_g(Y$dpP~UwB z(KBB>5Bq-`6O~5Is60KBEM0psw+8oxlUvB;5j6y|9~x zf@d>y5siFXlXTC_NoYB*iNlvdQ!j7-kW1so?XpG3{Roimf6<1)w1qkg4jo}_5)qx? z@RzIn9g(us6j2XW6f>}R!5?DV3r|o5Fd_^5dGQB2o&y}BglxHS1jv)Vf+*+g4Ut-d&Tzfj!mL=L3 zsd&dMM3JXH?V$8}SLYE8Htuyqc;`WP_o#$W>%Jw@4ho=#5pkEB)ae0t|YPUa!-B}<6Y=VcV?jMWV4V9SAAMp^*6>z zlf%>aSe@&Gf?xYmgL~*NsG0O9@oPd~hXHKtD0A{w5Zd8{DDcLwTt9#m-1(4SuX9%{ z(tG+@<5&$u6~Sv)K+7yxwL|o(`J+E%^|bysJWN`Sg_g*>lIOKpZaj7t?Lw~)^E!}y zmmP3NrZlVRO$mZ7mJo{N-AGEYYdMzUoI@@sftM01(%zGtY%_VAx8>|FK;wg&Z=2az z!=cHohvC(=&ROduFf(7?guQ)DAhKG5$WLYLb;Q`qCCS`@tkM7j^q#m4?NfM{#y6|) zOhu!e*kAk$U(y|=Rw@c5q`xda+#yuL3nBT6In4SadcEu5QnGdm8!DEp{hA>PcXlr-eUG-Ei33m`*Cx(qH z(`@rHh2IfteMkkJW{5yJ_|no1`9;AZ{rngrnsJLCLTLbihBM>p@Z%O+YIAn>|Hek; z1dPC=Hn8AIh-LxPE6t$8|Hg@Lr-_q$3lVb?VN!{tb{=C+x#*DKK25fAj@I`yT@Yvf z;cPCcEjYU2Au)Te^wjYLxE5-Yl1Mt(fJh%}zu?})?8f8SbP`xo`QAOFLC+1uXMy{2 zxddWgBp2n<<(h|v@%L<7 z&J5#=yofpi`R!r|RKxF#V(>8@hz$-ept^iJb$KcBd$RGa&%fcng@Yg}?6}JCjF~D( zxrlq$1$|7FdlyvkTxw+FKbn-zGjn%z?u!HL`^24h)tiS+`Uz;{FE;%MPy3a?| zy4J3b$NzKwptK(bAap?>?&$N-=B;Ti?BJtbH?nh~UdKs62mdbY#hB(Xe?E1iokgg| z5!8zl#8H`c*(a(d@rlnm_#cjRwSsk-qr6~?%0{yN0)5e=@p$+5=F;hXw62@UIgL>{ zCQDm`SW|4d%qVV@X_`RrPaJQEQUaN zD9;nCLJS8qC!R}3b#;Rm_UwHJVaW@`dkhI%A^m_%y{?q}`kg|H3KpV(A6*{ulWJ7K z$Tr+WLAIiJy4&m2;dwvpNNUXgAxc;o5YRqQx|=5I=pxzn8F{pOBhN+BxVq>(xm(yE z&h9Y*OWSA>n+~^tt%D(mb*-jkJRi0f97L?G>-dMd+Yxc*7Rq>i06nGTo)+sUIEc}f z=+#h@ldkbmP+kOl#4fZ9Q4Dtm=(71k7nV&{mwtVCv{~~*%v&PxqV;v_Z=W1e%4zuD zSq7**_*;EKwfzCqT&({w7H7End?agu!m72_A>_e=^p13zHGFym^ho9VVYVXE7gG}5 z9L~fs)aS*>J`Z`(r!eLoGtV`i?vxdjjdSIIfLR)(wB?iL28W5`4?&M@ z0O*PEq&NcW)c*qYjlS0DjynILISHmVeCH3&qF0bBd^LK7b`+AkgLrSEz0ab^aIB=K z&`wH4%c&k#$FxD5HA+Vl8-Z2-&r-vph!}U*oWZ5kRWCcX{m7vOI8JKO4TE=d&1=y@ zBO9=IfR1H-ptTC;8fm}WPo8Fu-m?`qPU;0ut7QbzqBjsKi-%80BftxY8E7e@ zmo%>Kl%0Xbk-h#q;(f{1K_HdgkzGBck>;;sz7McXY$E#y%egHP7Wtyv-CxSKjMn?7 z!V3VQO(|Xa+4j|!50Vo)I9DVNVo_P2{tNJ=aew3sIM`GLzDBc+fHFWy4Y1q3`+4R% zOwJU%_sramp$&kA7po66;3lK4rI4D?ToL|rtqo$jdYA=0zo3G1TS`+JFzb(V3oqxFAZ=MOvq2`nodr z0FVv|FQA&HRuweGF;gWsb^~o%MOrJ?cUO+6(`8FZydz(=f$9tYKij}D?&@XTpDACF zfyzLOT2-MW@V@%A$-SG`Ey)C(&0Y8mTrH=N6x=q?@)iCMJcxrvheXf`XKSxc^N*;L z3yF+=BwwIcwmPKx0N|;H7ZOSQ9U-Y*XT^GWO=4sXjT{;%bC232L0TLUrt%qlcXsx+ zV^=?4e@;$wWyf#@-B_F}7x-(5Y0GI z?}aC2+}dhJ#YFW(L?jLB>qq+*Po;0k&XrrgA3nIN-PN@(ZOfLCFS2?LhnDM=UvBjoo$^mlpxr$FB3ou5ivWDP%R!8h z$`xWuJ68kL1czM1*#-x`o-pc`=`v~`(?$zmAcD-ZF{2^mYj|48G|vo#Y0!HwnI0;o zzxJOQyaiVMs)Y#GfX+cxMS_MkIlVKaYKGhOH59g zF>=1dx>5j8R9Wc_P|l^3HjHlD;1(u>dQ$yS2|mG6woFUnpU$o; z(<sx7SzMxbzMHIm&J<(_a^iz>a=!~Ru-7KaG|4_^SPe<6KF1@yO zq~&l^iD^VW_km)LP2|tZA1W$=+ozjWpWTkrJkMG(2h|RoMmpJIDmRW&j(}PE=~5eM zFOZgp)x@R`YM7wwBl=kG{5sbJ)B5uea_vMNuaV=p2{f{ym))SQm5r3Ha4xbv^Gj@5 zH`*Jh&q}+{ zSVchd(#X?v+!z`ZCQ7rZrEiG-P06yNhw`r+WCr#0G+L9X+zs1F{Eu>lGOGAK__D}? zz{Xb?+*MPeM`j!#8%JAtI=FtJ>c%>R)rfGePQA@>t_q^B5$Ivp05FDeIrVs&l7`Lv zsksf0OUo94MbRFS#{l$xozK1O2KB2mqr-S=ianr5axQSmMA4@I4?w)cN}onez{ff9 z2F&!Edt)hSPh?bo6f4inMW$`IV%;8MPqxN&Mu7=wl>b2c5|Dke)cAdj2SGT7P{_7u%#a^%7A;yb?g~+zw%=lslT(4aY ziUbtC_(w8*S3M+axf2jvypcNST-*gI)lKZ;o$TIH3Gl`HVu^XhrK4$L#|dMs&+N*Fr~ccf4zrk6gAp76VvCXjiq^^!Tu4(r89 z?r4L5suDJx(GZz;2GW$0f2z=^+u_>lGTS*@xhPH(^+HX11@XqZVdn?G8v6!!y>Aq6 zT>5T&54JCUh=@#YcpxQSj8|Ds+U&Iq-lwlw@I|10rFgo(CASbm6OZdfVaHZQ_rnG8 z40jH7jzVo$+f&VoqWo2!bm7}72FdJ0(b^8rg4^y)%cMH}0$X3KeSdlPt;h~9Ta@_MJ=?f(2oyaZzBO^UzG5Exr)M&u-M7$_ zBm!rt#@~XUQKNXJypP4wiD=}beFr9w-QCR@Pd$b-aU?8E4X?D5kabX3PeAQQPe|9g z5{j;%KW6fP<^U3?u02crFGoNN9jaZdu& z=>+`{%lOk?x2nu z7W>ySWu&)X_VH3zN=)dx+S_2u!C$h*%*mHWX9)z@MA_omxlWw!Nlj^?)n~S!!h{5g zxlFKF5?y}=prny*zI1!(BD;7Ci*%&)6dj~nvs=gETa-o1cEU)l_WFbT2FBvDYJD%A zn%4?3!8{BYgOrfX5$kC4-7CCGl>Qu}S6X8TXz)k4_;5v}YfMjNZaL!Z9&Di0Bf7u| zR2ayDOcAH*#<=vTkzP<&A3+{GBRcqAvXx#onU5_Cm@zme^S*+K*g{UhdsuFmZI;q{ zV*AApOvr@grWX>m{qEpE0=@RpmSSp9>|Woh$A;C+IssV-p3tt57qi#ozTlBrQ?{e+ znPX2N>6!E6D6fv`fSnK@sArM)F-vYrzEmJ;z7_HjmGWF!>rfR>kW9@*<(-E8N8NiR z$-M=P%R=xzl8GYD7anbIIw_*%i1Up^&+N5)tVh!0ia2TF@azr9T^3FupoIZ{f5*>O zBVd3p7S&b{?~2%g3OqsH;67pIcBD@PR?ACuiGWu1s6BDa2O^))fVmbat^|jsg--ih zeu}Jz+(5D2uvG-H!GE5*;rY~)Cobtn#x4y;39uDv|Fc4$=_n`L@GWN7FI`IR%LmJI zxeoL_G>J?YZn7v8&!bfMfSpXsm)G5XT*Ut{pta3c;g_A!^9LI8?qAhu|RrFk`-`v(5%3b(g)OU zg+ZhbtB(~{|6gO*9?o?C{xOD(atLFhn(6l~YXdb(YAsRGvbnoN@|1 z&JmU(V|eUYY(vhBd7Lwcis@_N``LK@{9V`2waazcuFw7c-1qx_-}mdj@0ZWe07!lP zX#6=M;fd^ebGOmlM{7l`9zrV9v@s7os_0aO^$4m#v6_#RZoi(8U&wrI((wAN4vzLZ zYbjkjy2>;6ujwGh`frDws=+1J;I>;%ES*;kw86@7XZW5zjt4lM+ScTv z&1wMmT`mFqzM^*Kl5obMUsAzw2v-9K=NP}cN29c-#2KlDGrg+O-jkt$Kr0*u-F)Tx z1-e9iFj>%H16F@Ds)s{Yq{1RAiPc1KkyRhng#_6!aO`YUcD(;@WA&g&VSx@xOSxW5 z*S<|R^NN|hPMI3r1vTe_pqoX)4J9JdiRUeC^@w7a+-rRv!i^OIbcHK5X+pby9kuO) zBX5K*Y$ERES6y4m6XN#OZL|A1GurswE0a54$_>B!7`sJXQvN9WA#-L{>JxfKMKd$w zaHh`FfEYg$&Qr^6td{-o8P@qR$<{zbSJ!5wYuiF}ks3L?#pqGlBvx|CoR#Q(NH|4O zK}p_T#l4}p6Xx(mc&(Ji@$! z@pLFtc-X#H5A%TH9VEr1;EbWn-*C-73C4n(??`3z>XRCA)<~opE9!;OEKV{&X z(OS^PvU2*J&x@8X1zcw@;Oswp-xU9pgF7jFy7Z!|F9pM*GQsZ;1s)xdAg0%PhZ^Jt zO?*;iC9xg-+p-s&^&zCh@pc=U{B4cOT}k-#n`?mU)N?_|Nd09y_X=B73shpxj{`+2 zY3V(B=lLERRA?sH1Vr=mX&PAc$bbX3v>8!lECEoWQ%ZcY#jxord2AQE3Hup;GCd ziL54en`rBFs*z{gWelmy-)O}_jN(%a0+HlO7k6J+?s^H1nO*>iJ`}~X=3JH`cyPev zN0Qro@M^d|>WLVu!>(>X&GGVT(@8%^;W-Np6{M5+#vwj+Q59ITf=PEjZ}t)*3NZ!s z94GW{#`I$k3}BiqYa1@y+ysVqyHVpMKqj;q8G?PtP29VC00#ng#%bFPUY9m*ZQocn zTvu~5R~LDTyxDdRY2J#Gh=XH9;tNgE+PSTY-B z^~C2>gI_Ac?Y(Yt^QmstOWa^UpPWEdRz0}hs?S{-pMULvW6yzlzEFd1src`24h|^r zHKOn0R#b;mgKxO@<(fyHi{z*O8!zS^rxt+$P2_lxCt$^*PJ-``L1Xc~-hZ+1t#+Mn zd}~!(EQR#9w6dy_kh|B)9>W;p4%B1@Q^?c4R_W&5!4{)YmeoCAmR0ufj<^w&oaR%j zhO};D6*9=sOA+^fmFpYb)hiRP{;xsL#TUm%OtZ04MLK^ie7nASn`HR+0H91e9w=lk zFyG)uyOPs<)zSBd46|b?iTgXClPEgWA@ur|2-rv7}=%rHPMkp?NBr=uo!rsAY2?hS})U=7{JnI8NlK4hjHktyMH z5;p?vMr6^0zz;L{#mi&#@dsScg*z!u;O16B{9Vk7=3;WOAx5yyMC4q*pQS2hC7`xi zB5c#?4I8Kns?X$O0RLv9#I`3aR_k<7bV>9c4$8LpYJV954ZF%^i-h_j=B>yWJ}QL~ zctHC3_3SlWTpij?^Qgpo1q6^}7lrbul>#t{2&=V={LZON)wGfl=Xo**)RLATsl-o- zbwa{_xqyxwZ=QSi6?*p-DJE%33NAZ?vWX&@weHe{3by0Bkr6GklYCQasK=BZ54 z94q4|hm=diyOWU-h!XSd*xR!jE{Zpv@kyv+WF%P1%#_ju@xtOJ$oow-l8eP1tB0y1 zSHN_&!;LZdB{B4-e~?%cF(6hdsIaq-H|-=2-n&#yGRLK$@vN$~KItdO38a5Y% zrKK)WA(@IArc)3=OX`yud}~%#jJYZ5y*{s$qX`tW$}_edoeH1 zb80b7ZB5DlpO{GxgNh42bN!3m<>}q!t(B*4m&#= z`dT-6$-iCeCyX18ivV+$1P4|>=wK5lLWRj2;qyK04boYiNyT{#VCWm!@I^xoBXW-L zZ1Hi4X3>Q{cSrZ40-dzMW0`s6X8>Nq4BEI$x{Cy`*=iIGnap#%*Ag)I4jolu95UDI zPrs##U5Q_Dh;RumRYlb)!8hJO?HW&-N8$_E3=@{@IbehXltKGjaQ5g%mO{i}L$zo) z6X4+$;a^5KlcAO`wd^u~Z#6nV?e_L;Gh*CgR0_?#BzGN%kGI>IKXouBz9gOwkI@{K zBu_wCQsjw%+J@4a1{^c@^7n31^&jnCY+;+Tu3V^7=WmQ&BQCb~A2)m9!sq&GJ3jt= z)+ZiVxjNqE_YmI3u9*ZPpO7U{Bo$UJ9oEndq=K%(60{=6;P71SJ!pgLqyTg=0Y>6h zghR#3-x-%g=3c7hT!M!R&++}xG&qU-DAoORrb%cHcs3`azHsL+pTkjvcmR@14~sC% zXy4ZyS|@B+>6XhXYYwT*Wi8EkLG(l{uO>kWVzAmEJ&HE>> zhTIf(MgVu78qdx2lrApzhWodKqk!HuB|rsCY5yBjFZ;k{z?>mS*@#-Sm&RdDjX-*1)xDcE*iuYgU{Zp zdA+*PYszk!Y!Ho@FaybAmlew?Ub%Xisr6d@_!Qk9MmN&A5LS_ges+l-3oid*v6D{P z@|%xZ0&+F3{}&TAIutlZ__NEFD_;8%c&TSoRCE0Xwr*F6Y=#O=p4o6|QS_J$9@F=1 zFGCd!CF!Pzr*uw+z~>c$ayhqzK(Mn}Iw=FJcb?8Ogg^I!Gp@5IO6&z>-koGPFq7!u zYA{Yi>SL9#q8&-=neWQkx2+%e7WK{r(_YzN!#Gl`GGZOs*+q2VE%}rOtbMQUM;?dr zK%bV$$>aN5d$E@&-`}upzM9;tscf0v9=8thEZTX`H4BX}_q6&II+h{><AJ&EQ3EX-sAQDD?Ip&Kze^IS3#?mX7u2r*8`=>7t23&PBFzGL)U- zZsgF}K{HA)c*-g49_=+`11hR}`0Kj>=#q*LM1$K5In7a7o<0vBOo6C0R&H;7PJXhsLf-DOX2cz0hNGVYm=sPszS3^K?e;)wyA z%lkiZ_5nscLm3^?-V6PGvQR3LXa*8HpKE&c)p>kqrF-&x^Hg4_kz2Z$-=xh-&<9fP zZTj&lzxrKZN5`!~9&jWfxObK^pXvJ*)tJNKEdTq;K9rNl`ELST@pM?_#)$#h?Gil4 z2a0{YfP@1$UEIFS!*XCBGBbZQaTE>kW%(lzyQil~v+#cf0dMy`+$%`_749gsS0LI3 zXvQuDi{YKVCe|BD1Kq`Q#23W|^yAqrL3*;^->RZWv#rp?sB$Jt_^)HXc=8yOrrX^@`+j0Pl*6V}wx`TIGv>n&4&yGgXP6N+NdOPh= z>oUEcjsbpic5FbmZv}_Kh_fo}-L8L^hesAD%WD&^J8_ucxMGCHDAs~h$KQc`R5vki zvm~eP6>BWm#I;x5y91{n4bJx}O$M&gK5O){!z7yt)3XlT(gU8$j~LYy#SUl=hKn_9 z7o`|ZY-Yz^7Ut-2b`%*~_i%Bh;!pWU3Ao8P+3Cz{=V&T$-nRZrc0VW3o?M_o#R55 zG)t{hSxCk3!2Q5sOS<8oL8YPWnu?lip-^$M250HCOi-q^GHFphwlTxr?e0Rq0GY>F}KYLPuBU}aB;>W%j-NEH9Mf3%9@G=H$H6=Umr zeQYG1T%~~KIw#hYK@VHLt2)&+Cfa2`S*H5Oous$iQ@ywH|L?ctQxfB<6n@diJ6K diff --git a/Doc/html/mylibs__defs_8h_source.html b/Doc/html/mylibs__defs_8h_source.html index 41719c1..86e81c3 100644 --- a/Doc/html/mylibs__defs_8h_source.html +++ b/Doc/html/mylibs__defs_8h_source.html @@ -105,7 +105,7 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
4* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
5**************************************************************************
-
6* @defgroup MYLIBS_DEFINES General Defines
+
6* @defgroup MYLIBS_DEFINES General Tools
7* @ingroup MYLIBS_ALL
8* @brief Общие макросы и typedef'ы, используемые по всему проекту
9*
@@ -157,136 +157,133 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
55
56
57/***************************************************************************
-
58********************************ACCESS_DEFINES*****************************/
-
59
-
60
-
61/***************************************************************************
-
62******************************DELAYS_DEFINES*******************************/
-
63/**
-
64 * @addtogroup DELAYS_DEFINES Delays defines
-
65 * @ingroup MYLIBS_DEFINES
-
66 * @brief Макросы и определения для работы с задержками в миллисекундах.
-
67 * @details
-
68 * Этот блок содержит макросы для реализации задержек с использованием HAL или FreeRTOS:
-
69 * - @ref msDelay — простая задержка заданной длительности;
-
70 * - @ref msDelayStart — сохранение текущего времени начала задержки;
-
71 * - @ref msDelayWhileActive — проверка, активна ли задержка;
-
72 * - @ref msDelayWaitDone — проверка, завершена ли задержка.
-
73 * Эти макросы удобны для реализации неблокирующих задержек.
-
74 * @{
-
75 */
-
76
-
77/**
-
78 * @def msDelay(_ms_)
-
79 * @brief Задержка на указанное количество миллисекунд.
-
80 * @param _ms_ Время задержки в миллисекундах.
-
81 * @note Использует HAL_Delay или osDelay в зависимости от @ref FREERTOS_DELAY.
-
82 */
-
83#ifdef FREERTOS_DELAY
-
84 #define msDelay(_ms_) osDelay(_ms_)
-
85#else
-
86 #define msDelay(_ms_) HAL_Delay(_ms_)
-
87#endif
-
88
-
89
-
90/**
-
91 * @brief Начать отсчет задержки.
-
92 * @param _pvar_ Указатель на переменную типа uint32_t для хранения времени старта.
-
93 * @details После вызова этого макроса переменная _pvar_ содержит текущее количество миллисекунд
-
94 * с момента запуска системы (HAL_GetTick).
-
95 *
-
96 * Используется для реализации неблокирующих задержек.
-
97 */
-
98#define msDelayStart(_pvar_) *(_pvar_) = HAL_GetTick()
-
99
-
100/**
-
101 * @brief Проверяет, активна ли задержка.
-
102 * @param _ms_ Длительность задержки в миллисекундах.
-
103 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (@ref msDelayStart).
-
104 * @retval 1 Задержка еще активна.
-
105 * @retval 0 Задержка завершена.
-
106 * @details
-
107 * Возвращает true, пока время задержки не истекло. Используется в проверках,
-
108 * когда нужно **действовать, пока задержка выполняется**. Пример:
-
109 * @code
-
110 * while(msDelayWhileActive(1000, &tick)) {
-
111 * // выполняем другие задачи, задержка не блокирует поток
-
112 * }
-
113 * @endcode
-
114 */
-
115#define msDelayWhileActive(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) < _ms_)
-
116
-
117/**
-
118 * @brief Проверяет, завершилась ли задержка.
-
119 * @param _ms_ Длительность задержки в миллисекундах.
-
120 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (msDelayStart).
-
121 * @retval 1 Задержка завершена.
-
122 * @retval 0 Задержка еще активна.
-
123 * @details
-
124 * Возвращает true, когда задержка уже завершена. Используется в проверках,
-
125 * когда нужно **выполнить действие только после окончания задержки**. Пример:
-
126 * @code
-
127 * if(msDelayWaitDone(1000, &tick)) {
-
128 * // выполняем действие после завершения задержки
-
129 * }
-
130 * @endcode
-
131 */
-
132#define msDelayWaitDone(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) >= _ms_)
-
133
-
134/** DELAYS_DEFINES
-
135 * @}
-
136 */
-
137
-
138
-
139/***************************************************************************
-
140*******************************MATH_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#endif //__MYLIBS_DEFINES_H_
+
58******************************DELAYS_DEFINES*******************************/
+
59/**
+
60 * @addtogroup DELAYS_DEFINES Delays defines
+
61 * @ingroup MYLIBS_DEFINES
+
62 * @brief Макросы и определения для работы с задержками в миллисекундах.
+
63 * @details
+
64 * Этот блок содержит макросы для реализации задержек с использованием HAL или FreeRTOS:
+
65 * - @ref msDelay — простая задержка заданной длительности;
+
66 * - @ref msDelayStart — сохранение текущего времени начала задержки;
+
67 * - @ref msDelayWhileActive — проверка, активна ли задержка;
+
68 * - @ref msDelayWaitDone — проверка, завершена ли задержка.
+
69 * Эти макросы удобны для реализации неблокирующих задержек.
+
70 * @{
+
71 */
+
72
+
73/**
+
74 * @def msDelay(_ms_)
+
75 * @brief Задержка на указанное количество миллисекунд.
+
76 * @param _ms_ Время задержки в миллисекундах.
+
77 * @note Использует HAL_Delay или osDelay в зависимости от @ref FREERTOS_DELAY.
+
78 */
+
79#ifdef FREERTOS_DELAY
+
80 #define msDelay(_ms_) osDelay(_ms_)
+
81#else
+
82 #define msDelay(_ms_) HAL_Delay(_ms_)
+
83#endif
+
84
+
85
+
86/**
+
87 * @brief Начать отсчет задержки.
+
88 * @param _pvar_ Указатель на переменную типа uint32_t для хранения времени старта.
+
89 * @details После вызова этого макроса переменная _pvar_ содержит текущее количество миллисекунд
+
90 * с момента запуска системы (HAL_GetTick).
+
91 *
+
92 * Используется для реализации неблокирующих задержек.
+
93 */
+
94#define msDelayStart(_pvar_) *(_pvar_) = HAL_GetTick()
+
95
+
96/**
+
97 * @brief Проверяет, активна ли задержка.
+
98 * @param _ms_ Длительность задержки в миллисекундах.
+
99 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (@ref msDelayStart).
+
100 * @retval 1 Задержка еще активна.
+
101 * @retval 0 Задержка завершена.
+
102 * @details
+
103 * Возвращает true, пока время задержки не истекло. Используется в проверках,
+
104 * когда нужно **действовать, пока задержка выполняется**. Пример:
+
105 * @code
+
106 * while(msDelayWhileActive(1000, &tick)) {
+
107 * // выполняем другие задачи, задержка не блокирует поток
+
108 * }
+
109 * @endcode
+
110 */
+
111#define msDelayWhileActive(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) < _ms_)
+
112
+
113/**
+
114 * @brief Проверяет, завершилась ли задержка.
+
115 * @param _ms_ Длительность задержки в миллисекундах.
+
116 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (msDelayStart).
+
117 * @retval 1 Задержка завершена.
+
118 * @retval 0 Задержка еще активна.
+
119 * @details
+
120 * Возвращает true, когда задержка уже завершена. Используется в проверках,
+
121 * когда нужно **выполнить действие только после окончания задержки**. Пример:
+
122 * @code
+
123 * if(msDelayWaitDone(1000, &tick)) {
+
124 * // выполняем действие после завершения задержки
+
125 * }
+
126 * @endcode
+
127 */
+
128#define msDelayWaitDone(_ms_, _pvar_) (HAL_GetTick() - *(_pvar_) >= _ms_)
+
129
+
130/** DELAYS_DEFINES
+
131 * @}
+
132 */
+
133
+
134
+
135/***************************************************************************
+
136*******************************UTIL_DEFINES********************************/
+
137static int dummy;
+
138/**
+
139 * @addtogroup UTILS_DEFINES Utils defines
+
140 * @ingroup MYLIBS_DEFINES
+
141 * @brief Общие вспомогательные макросы
+
142 * @{
+
143 */
+
144
+
145/**
+
146 * @brief Обнуление структуры.
+
147 * @param _struct_ Структура, которую нужно обнулить.
+
148 * @details Макрос использует memset для обнуления всей памяти структуры.
+
149 * Используется для быстрой и безопасной инициализации переменных структур до нуля.
+
150 */
+
151#define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
+
152
+
153/**
+
154 * @brief Деление с округлением вверх
+
155 * @param _val_ Делимое.
+
156 * @param _div_ Делитель.
+
157 * @return Результат деления, округленный вверх.
+
158 * @details Если результат деления без остатка: он возвращается как есть
+
159 Если с остатком - округляется вверх
+
160 */
+
161//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
+
162#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
+
163
+
164/**
+
165 * @brief Swap between Little Endian and Big Endian
+
166 * @param v Исходное 16-битное значение.
+
167 * @return Результат с поменяными местами старшим и младшим байтом.
+
168 * @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
+
169 */
+
170#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
+
171
+
172/**
+
173 * @brief Абсолютное значение числа
+
174 * @param x Число.
+
175 * @return Абсолютное значение числа x.
+
176 * @details Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
+
177 */
+
178#define ABS(x) ( ((x) > 0)? (x) : -(x))
+
179
+
180/** UTILS_DEFINES
+
181 * @}
+
182 */
+
183
+
184#endif //__MYLIBS_DEFINES_H_
Конфигурации для библиотек MyLibs.
diff --git a/Doc/html/mylibs__include_8h.html b/Doc/html/mylibs__include_8h.html index 6070469..a47e7ab 100644 --- a/Doc/html/mylibs__include_8h.html +++ b/Doc/html/mylibs__include_8h.html @@ -104,9 +104,11 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); });

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

#include "mylibs_defs.h"
+#include "math.h"
#include "bit_access.h"
#include "trackers.h"
#include "trace.h"
+#include "evolve_optimizer.h"
#include "general_flash.h"
#include "general_gpio.h"
#include "general_tim.h"
@@ -116,35 +118,44 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); });
diff --git a/Doc/html/mylibs__include_8h__incl.map b/Doc/html/mylibs__include_8h__incl.map index 7a50c10..325308a 100644 --- a/Doc/html/mylibs__include_8h__incl.map +++ b/Doc/html/mylibs__include_8h__incl.map @@ -1,31 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__include_8h__incl.md5 b/Doc/html/mylibs__include_8h__incl.md5 index 1931951..48042dd 100644 --- a/Doc/html/mylibs__include_8h__incl.md5 +++ b/Doc/html/mylibs__include_8h__incl.md5 @@ -1 +1 @@ -ce4a5806741b3eb40f3fb015cc24db98 \ No newline at end of file +d43d5a141d087c4ef99d3ea25bfc5d0a \ No newline at end of file diff --git a/Doc/html/mylibs__include_8h__incl.png b/Doc/html/mylibs__include_8h__incl.png index fdfeb36346021fb42b3055582d7ed9554131fcc6..5c944d329fc0d3cf2ceb70e3171bba591c6d51db 100644 GIT binary patch literal 44344 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 literal 29292 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

di9S=1E>_`NCXz{!mU?*h?rtas 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 diff --git a/Doc/html/mylibs__include_8h_source.html b/Doc/html/mylibs__include_8h_source.html index a411e0b..4b13774 100644 --- a/Doc/html/mylibs__include_8h_source.html +++ b/Doc/html/mylibs__include_8h_source.html @@ -132,162 +132,105 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });

30
31#ifdef ARM_MATH_CM4
32 #include "arm_math.h"
-
33#endif
-
34
-
35
-
36#ifdef INCLUDE_BIT_ACCESS_LIB
-
37#include "bit_access.h"
-
38#endif
-
39
-
40#ifdef INCLUDE_TRACKERS_LIB
-
41#include "trackers.h"
-
42#endif
-
43
-
44#ifdef INCLUDE_TRACE_LIB
-
45#include "trace.h"
-
46#endif
-
47
-
48
-
49
-
50#ifdef INCLUDE_GENERAL_PERIPH_LIBS
-
51
-
52#include "general_flash.h"
-
53#include "general_gpio.h"
-
54#ifdef HAL_SPI_MODULE_ENABLED
-
55#include "general_spi.h"
-
56#endif
-
57#ifdef HAL_UART_MODULE_ENABLED
-
58#include "general_uart.h"
-
59#endif
-
60#ifdef HAL_TIM_MODULE_ENABLED
-
61#include "general_tim.h"
-
62#endif
-
63
-
64#endif //INCLUDE_GENERAL_PERIPH_LIBS
-
65
+
33#else
+
34 #include "math.h"
+
35#endif
+
36
+
37
+
38#ifdef INCLUDE_BIT_ACCESS_LIB
+
39#include "bit_access.h"
+
40#endif
+
41
+
42#ifdef INCLUDE_TRACKERS_LIB
+
43#include "trackers.h"
+
44#else
+
45 #define TrackerTypeDef(num_user_vars) void *
+
46 #define num_of_usercnts(_user_) 0
+
47 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
+
48 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
+
49 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
+
50 #define TrackerGet_Ok(_cntstruct_) dummy
+
51 #define TrackerGet_Err(_cntstruct_) dummy
+
52 #define TrackerGet_Warn(_cntstruct_) dummy
+
53 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
+
54 #define TrackerCnt_Ok(_cntstruct_)
+
55 #define TrackerCnt_Err(_cntstruct_)
+
56 #define TrackerCnt_Warn(_cntstruct_)
+
57 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
+
58 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
+
59 #define TrackerClear_All(_cntstruct_)
+
60 #define TrackerClear_Ok(_cntstruct_)
+
61 #define TrackerClear_Err(_cntstruct_)
+
62 #define TrackerClear_Warn(_cntstruct_)
+
63 #define TrackerClear_User(_cntstruct_)
+
64 #define TrackerClear_UserAll(_cntstruct_)
+
65#endif
66
-
67
-
68
-
69/////////////////////////---USER SETTINGS---/////////////////////////
-
70// user includes
-
71
-
72// user settings
-
73/////////////////////////---USER SETTINGS---/////////////////////////
-
74
-
75
-
76#endif // __MYLIBS_INCLUDE_H_
-
77
-
78/**
-
79@mainpage
-
80
-
81@section overview Обзор
-
82MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32.
-
83
-
84@subsection features Основные возможности
-
85
-
86@subsubsection utils_module Общие утилиты @ref MYLIBS_DEFINES
-
87- Битовый доступ к регистрам через union
-
88- Трекеры для статистики и отладки
-
89- Макросы для задержек и утилит
-
90- Поддержка FreeRTOS
-
91
-
92@subsubsection trace_module Трассировка @ref TRACE
-
93
-
94- Serial трассировка через SWO и RTT
-
95- GPIO трассировка для отладки
-
96- Сохранение логов в Flash память
-
97- Обработка HardFault с сохранением контекста
-
98
-
99@subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO
-
100- Управление светодиодами (включение/выключение, моргание, плавное затухание)
-
101- Работа с кнопками (чтение состояния, фильтрация дребезга)
-
102- Инициализация портов и тактирования
-
103- Поддержка альтернативных функций
-
104
-
105@subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM
-
106
-
107- Базовая инициализация таймеров
-
108- Режимы прерываний
-
109- Формирование задержек (блокирующие и неблокирующие)
-
110- Работа с энкодерами (чтение положения, обработка кнопок)
-
111- Настройка ШИМ и Output Compare
-
112
-
113
-
114@subsection structure Структура проекта
-
115
-
116@code
-
117├── inc/ # Заголовочные файлы
-
118│ ├── mylibs_include.h # Главный include файл
-
119│ ├── mylibs_config.h # Конфигурация библиотек
-
120│ ├── mylibs_defs.h # Общие определения и макросы
-
121│ ├── bit_access.h # Битовый доступ к регистрам
-
122│ ├── trackers.h # Трекеры для отладки
-
123│ ├── trace.h # Трассировка и логирование
-
124│ ├── general_gpio.h # Работа с GPIO
-
125│ └── general_tim.h # Работа с таймерами
-
126└── src/ # Исходные файлы
-
127 ├── general_gpio.c # Реализация GPIO
-
128 └── general_tim.c # Реализация TIM
-
129@endcode
-
130
-
131@subsection usage_basic Использование
-
132
-
133Инструкция по подключению:
-
134
-
1351. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h
-
136
-
1372. Подключите главный заголовочный файл:
-
138@code
-
139#include "mylibs_include.h"
-
140@endcode
-
141
-
1423. Используйте нужные модули в своем коде
-
143
-
144@subsubsection gpio_example Пример работы с GPIO
-
145
-
146@code
-
147// Инициализация светодиода
-
148MX_GPIO_Init();
-
149GPIO_LEDTypeDef led;
-
150GPIO_LED_Init(&led, GPIOA, GPIO_PIN_5, 1);
-
151
-
152// Включение светодиода
-
153GPIO_LED_On(&led);
-
154
-
155// Запуск моргания
-
156GPIO_LED_Blink_Start(&led, 500); // Период 500 мс
-
157
-
158// В основном цикле
-
159while (1) {
-
160GPIO_LED_Dynamic_Handle(&led);
-
161}
-
162@endcode
-
163
-
164@subsubsection tim_example Пример работы с таймером
-
165
-
166@code
-
167// Настройка таймера
-
168TIM_SettingsTypeDef tim_settings = {0};
-
169tim_settings.htim.Instance = TIM2;
-
170tim_settings.sTimAHBFreqMHz = SystemCoreClock;
-
171tim_settings.sTickBaseUS = TIM_TickBase_1MS;
-
172tim_settings.sTimFreqHz = 1000; // 1 кГц
-
173tim_settings.sTimMode = TIM_IT_CONF;
-
174
-
175TIM_Base_Init(&tim_settings);
-
176HAL_TIM_Base_Start(&tim_settings.htim);
-
177@endcode
-
178
-
179@subsection dependencies Зависимости
-
180
-
181- HAL библиотека STM32
-
182- SEGGER RTT (опционально, для RTT трассировки)
-
183- FreeRTOS (опционально, для FreeRTOS задержек)
-
184 */
+
67#ifdef INCLUDE_TRACE_LIB
+
68#include "trace.h"
+
69#else
+
70#define my_printf(...)
+
71#define log_printf(TAG, fmt, ...)
+
72#define TRACE_GPIO_SET(_gpio_,_pin_)
+
73#define TRACE_GPIO_RESET(_gpio_,_pin_)
+
74#define RTT_FlashPrepare(...)
+
75#define RTT_EraseFlash(...) 0
+
76#define RTT_SaveToFlash(...) 0
+
77#define RTT_ReadFromFlash(...) 0
+
78#define HF_CheckRecovered(...) 0
+
79#define HF_HandleFault(...)
+
80#endif
+
81
+
82#ifdef INCLUDE_EVOLVE_OPTIMIZER
+
83#include "evolve_optimizer.h"
+
84#else
+
85typedef struct {
+
86 uint16_t n_params;
+
87 uint16_t n_cand;
+
88 uint16_t n_best;
+
89 uint16_t iq_mutation;
+
90 int32_t loss[0];
+
91 int32_t candidates[0][0];
+ +
93#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
+
94#define EvolveOptimizer_Step(opt, params, LossFunc)
+
95#define PARAM_SCALE_Q16(x, min_val, max_val) (x)
+
96#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
+
97#endif
+
98
+
99#ifdef INCLUDE_GENERAL_PERIPH_LIBS
+
100
+
101#include "general_flash.h"
+
102#include "general_gpio.h"
+
103#ifdef HAL_SPI_MODULE_ENABLED
+
104#include "general_spi.h"
+
105#endif
+
106#ifdef HAL_UART_MODULE_ENABLED
+
107#include "general_uart.h"
+
108#endif
+
109#ifdef HAL_TIM_MODULE_ENABLED
+
110#include "general_tim.h"
+
111#endif
+
112
+
113#endif //INCLUDE_GENERAL_PERIPH_LIBS
+
114
+
115
+
116
+
117
+
118/////////////////////////---USER SETTINGS---/////////////////////////
+
119// user includes
+
120
+
121// user settings
+
122/////////////////////////---USER SETTINGS---/////////////////////////
+
123
+
124
+
125#endif // __MYLIBS_INCLUDE_H_
Заголочный файл для дефайнов битового доступа.
+
Заголовочный файл для адаптивного подбора параметров
Заголовочный файл для модуля инициализации портов и работы с ними.
Заголовочный файл для модуля инициализации таймеров и работы с ними.
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
+
Структура эволюционного оптимизатора
Заголочный файл для работы с трассировкой.
Заголочный файл для работы с трекерами Trackers defines.
diff --git a/Doc/html/navtreedata.js b/Doc/html/navtreedata.js index 32e9b19..2fdddcb 100644 --- a/Doc/html/navtreedata.js +++ b/Doc/html/navtreedata.js @@ -27,7 +27,7 @@ var NAVTREE = [ "MyLibs", "index.html", [ [ "Обзор", "index.html#overview", [ [ "Основные возможности", "index.html#features", [ - [ "Общие утилиты General Defines", "index.html#utils_module", null ], + [ "Общие утилиты (General Tools)", "index.html#utils_module", null ], [ "Трассировка Trace defines", "index.html#trace_module", null ], [ "Модуль GPIO GPIO Tools", "index.html#gpio_module", null ], [ "Модуль таймеров TIM Tools", "index.html#tim_module", null ] @@ -64,7 +64,7 @@ var NAVTREE = var NAVTREEINDEX = [ "____general__flash_8c_source.html", -"trace_8h_source.html" +"struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e" ]; var SYNCONMSG = 'click to disable panel synchronization'; diff --git a/Doc/html/navtreeindex0.js b/Doc/html/navtreeindex0.js index 7323ed5..e45e5a6 100644 --- a/Doc/html/navtreeindex0.js +++ b/Doc/html/navtreeindex0.js @@ -13,17 +13,19 @@ var NAVTREEINDEX0 = "dir_9c80311a018e1f8cfb6659b73d634be4.html":[3,0,0,1], "dir_9e11e9a41112194af3eee6cc728f9515.html":[3,0,0], "dir_eb423fea8a9c4b9b32b922020ec391e1.html":[3,0,0,0], +"evolve__optimizer_8h.html":[3,0,0,0,4], +"evolve__optimizer_8h_source.html":[3,0,0,0,4], "files.html":[3,0], "functions.html":[2,2,0], "functions_vars.html":[2,2,1], "general__gpio_8c.html":[3,0,0,1,3], "general__gpio_8c_source.html":[3,0,0,1,3], -"general__gpio_8h.html":[3,0,0,0,4], -"general__gpio_8h_source.html":[3,0,0,0,4], +"general__gpio_8h.html":[3,0,0,0,5], +"general__gpio_8h_source.html":[3,0,0,0,5], "general__tim_8c.html":[3,0,0,1,4], "general__tim_8c_source.html":[3,0,0,1,4], -"general__tim_8h.html":[3,0,0,0,5], -"general__tim_8h_source.html":[3,0,0,0,5], +"general__tim_8h.html":[3,0,0,0,6], +"general__tim_8h_source.html":[3,0,0,0,6], "globals.html":[3,1,0], "globals_defs.html":[3,1,4], "globals_enum.html":[3,1,2], @@ -34,29 +36,39 @@ var NAVTREEINDEX0 = "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396":[1,0,1,0,4], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086":[1,0,1,0,5], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1":[1,0,1,0,6], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,2], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,2,2], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,2,1], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,2,0], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,2,3], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,1], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,1,2], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,1,4], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,1,1], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,1,3], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,1,5], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,1,0], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,3], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,3,2], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,3,1], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,3,0], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,3,3], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,2], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,2,2], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,2,4], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,2,1], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,2,3], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,2,5], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,2,0], +"group___e_v_o_l_v_e___c_o_n_f_i_g.html":[1,0,0,1], +"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47":[1,0,0,1,0], +"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971":[1,0,0,1,2], +"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee":[1,0,0,1,1], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html":[1,0,1,1], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563":[1,0,1,1,4], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba":[1,0,1,1,2], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9":[1,0,1,1,3], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc":[1,0,1,1,1], "group___g_p_i_o___i_n_i_t.html":[1,0,2,0,0,0], "group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9":[1,0,2,0,0,0,3], "group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023":[1,0,2,0,0,0,0], "group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29":[1,0,2,0,0,0,2], "group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067":[1,0,2,0,0,0,4], "group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25":[1,0,2,0,0,0,1], -"group___l_i_b_s___c_o_n_f_i_g.html":[1,0,0,1], -"group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7":[1,0,0,1,2], -"group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281":[1,0,0,1,3], -"group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32":[1,0,0,1,1], -"group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be":[1,0,0,1,0], +"group___l_i_b_s___c_o_n_f_i_g.html":[1,0,0,2], +"group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7":[1,0,0,2,3], +"group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281":[1,0,0,2,4], +"group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32":[1,0,0,2,2], +"group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66":[1,0,0,2,0], +"group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be":[1,0,0,2,1], "group___m_y___l_i_b_s___g_p_i_o.html":[1,0,2,0], "group___m_y___l_i_b_s___t_i_m.html":[1,0,2,1], "group___m_y_l_i_b_s___a_l_l.html":[1,0], @@ -123,7 +135,7 @@ var NAVTREEINDEX0 = "group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c":[1,0,2,1,3,0,13], "group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a":[1,0,2,1,3,0,8], "group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac":[1,0,2,1,3,0,12], -"group___t_r_a_c_e.html":[1,0,1,4], +"group___t_r_a_c_e.html":[1,0,1,5], "group___t_r_a_c_e___c_o_n_f_i_g.html":[1,0,0,0], "group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8":[1,0,0,0,2], "group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05":[1,0,0,0,4], @@ -141,46 +153,46 @@ var NAVTREEINDEX0 = "group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313":[1,0,0,0,10], "group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca":[1,0,0,0,11], "group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d":[1,0,0,0,8], -"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,4,1], -"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,4,1,1], -"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,4,1,0], -"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,4,3], -"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,4,3,1], -"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,4,3,2], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,4,2], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,4,2,1], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,4,2,3], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,4,2,2], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,4,2,4], -"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,4,0], -"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,4,0,1], -"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,4,0,0], -"group___t_r_a_c_k_e_r_s.html":[1,0,1,5], -"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,5,18], -"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,5,12], -"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,5,9], -"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,5,17], -"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,5,4], -"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,5,7], -"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,5,10], -"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,5,8], -"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,5,0], -"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,5,15], -"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,5,14], -"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,5,1], -"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,5,11], -"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,5,6], -"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,5,19], -"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,5,5], -"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,5,13], -"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,5,3], -"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,5,2], -"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,5,16], -"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,3], -"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,3,2], -"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,3,3], -"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,3,1], -"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,3,0], +"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,5,1], +"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,5,1,1], +"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,5,1,0], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,5,3], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,5,3,1], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,5,3,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,5,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,5,2,1], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,5,2,3], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,5,2,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,5,2,4], +"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,5,0], +"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,5,0,1], +"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,5,0,0], +"group___t_r_a_c_k_e_r_s.html":[1,0,1,6], +"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,6,18], +"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,6,12], +"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,6,9], +"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,6,17], +"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,6,4], +"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,6,7], +"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,6,10], +"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,6,8], +"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,6,0], +"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,6,15], +"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,6,14], +"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,6,1], +"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,6,11], +"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,6,6], +"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,6,19], +"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,6,5], +"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,6,13], +"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,6,3], +"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,6,2], +"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,6,16], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,4], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,4,2], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,4,3], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,4,1], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,4,0], "index.html":[], "index.html#dependencies":[0,3], "index.html#features":[0,0], @@ -193,13 +205,22 @@ var NAVTREEINDEX0 = "index.html#trace_module":[0,0,1], "index.html#usage_basic":[0,2], "index.html#utils_module":[0,0,0], -"mylibs__config_8h.html":[3,0,0,0,6], -"mylibs__config_8h_source.html":[3,0,0,0,6], -"mylibs__defs_8h.html":[3,0,0,0,7], -"mylibs__defs_8h_source.html":[3,0,0,0,7], -"mylibs__include_8h.html":[3,0,0,0,8], -"mylibs__include_8h_source.html":[3,0,0,0,8], +"mainpage_8h_source.html":[3,0,0,2], +"mylibs__config_8h.html":[3,0,0,0,7], +"mylibs__config_8h_source.html":[3,0,0,0,7], +"mylibs__defs_8h.html":[3,0,0,0,8], +"mylibs__defs_8h_source.html":[3,0,0,0,8], +"mylibs__include_8h.html":[3,0,0,0,9], +"mylibs__include_8h_source.html":[3,0,0,0,9], "pages.html":[], +"struct_evolve_optimizer__t.html":[1,0,1,1,0], +"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae":[1,0,1,1,0,4], +"struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8":[1,0,1,1,0,0], +"struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5":[1,0,1,1,0,3], +"struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d":[1,0,1,1,0,6], +"struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6":[1,0,1,1,0,2], +"struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1":[1,0,1,1,0,1], +"struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d":[1,0,1,1,0,5], "struct_g_p_i_o___l_e_d_type_def.html":[1,0,2,0,2,0], "struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978":[1,0,2,0,2,0,2], "struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec":[1,0,2,0,2,0,4], @@ -212,42 +233,21 @@ var NAVTREEINDEX0 = "struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405":[1,0,2,0,1,0,2], "struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032":[1,0,2,0,1,0,1], "struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a":[1,0,2,0,1,0,0], -"struct_h_f___stack_frame__t.html":[1,0,1,4,3,0], -"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,1,4,3,0,6], -"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,1,4,3,0,1], -"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,1,4,3,0,0], -"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,1,4,3,0,3], -"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,1,4,3,0,2], -"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,1,4,3,0,5], -"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,4,3,0,4], -"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,4,3,0,7], -"struct_r_t_t___flash_header__t.html":[1,0,1,4,2,0], -"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,4,2,0,0], -"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,4,2,0,2], -"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,4,2,0,1], -"struct_s_p_i___settings_type_def.html":[2,0,4], +"struct_h_f___stack_frame__t.html":[1,0,1,5,3,0], +"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,1,5,3,0,6], +"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,1,5,3,0,1], +"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,1,5,3,0,0], +"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,1,5,3,0,3], +"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,1,5,3,0,2], +"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,1,5,3,0,5], +"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,5,3,0,4], +"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,5,3,0,7], +"struct_r_t_t___flash_header__t.html":[1,0,1,5,2,0], +"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,5,2,0,0], +"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,5,2,0,2], +"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,5,2,0,1], +"struct_s_p_i___settings_type_def.html":[2,0,5], "struct_t_i_m___encoder_type_def.html":[1,0,2,1,1,0], "struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5":[1,0,2,1,1,0,3], -"struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2":[1,0,2,1,1,0,1], -"struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e":[1,0,2,1,1,0,5], -"struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5":[1,0,2,1,1,0,6], -"struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80":[1,0,2,1,1,0,7], -"struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3":[1,0,2,1,1,0,0], -"struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45":[1,0,2,1,1,0,8], -"struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9":[1,0,2,1,1,0,4], -"struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c":[1,0,2,1,1,0,2], -"struct_t_i_m___settings_type_def.html":[1,0,2,1,3,1], -"struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718":[1,0,2,1,3,1,7], -"struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21":[1,0,2,1,3,1,3], -"struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0":[1,0,2,1,3,1,1], -"struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e":[1,0,2,1,3,1,6], -"struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014":[1,0,2,1,3,1,8], -"struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7":[1,0,2,1,3,1,4], -"struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969":[1,0,2,1,3,1,2], -"struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0":[1,0,2,1,3,1,5], -"struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c":[1,0,2,1,3,1,0], -"struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4":[1,0,2,1,3,1,9], -"struct_u_a_r_t___settings_type_def.html":[2,0,7], -"topics.html":[1], -"trace_8h.html":[3,0,0,0,9] +"struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2":[1,0,2,1,1,0,1] }; diff --git a/Doc/html/navtreeindex1.js b/Doc/html/navtreeindex1.js index 6d42345..b781f2a 100644 --- a/Doc/html/navtreeindex1.js +++ b/Doc/html/navtreeindex1.js @@ -1,8 +1,29 @@ var NAVTREEINDEX1 = { -"trace_8h_source.html":[3,0,0,0,9], -"trackers_8h.html":[3,0,0,0,10], -"trackers_8h_source.html":[3,0,0,0,10], +"struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e":[1,0,2,1,1,0,5], +"struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5":[1,0,2,1,1,0,6], +"struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80":[1,0,2,1,1,0,7], +"struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3":[1,0,2,1,1,0,0], +"struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45":[1,0,2,1,1,0,8], +"struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9":[1,0,2,1,1,0,4], +"struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c":[1,0,2,1,1,0,2], +"struct_t_i_m___settings_type_def.html":[1,0,2,1,3,1], +"struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718":[1,0,2,1,3,1,7], +"struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21":[1,0,2,1,3,1,3], +"struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0":[1,0,2,1,3,1,1], +"struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e":[1,0,2,1,3,1,6], +"struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014":[1,0,2,1,3,1,8], +"struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7":[1,0,2,1,3,1,4], +"struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969":[1,0,2,1,3,1,2], +"struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0":[1,0,2,1,3,1,5], +"struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c":[1,0,2,1,3,1,0], +"struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4":[1,0,2,1,3,1,9], +"struct_u_a_r_t___settings_type_def.html":[2,0,8], +"topics.html":[1], +"trace_8h.html":[3,0,0,0,10], +"trace_8h_source.html":[3,0,0,0,10], +"trackers_8h.html":[3,0,0,0,11], +"trackers_8h_source.html":[3,0,0,0,11], "unionuint16___bit_type_def.html":[1,0,1,0,1], "unionuint32___bit_type_def.html":[1,0,1,0,2], "unionuint64___bit_type_def.html":[1,0,1,0,3], diff --git a/Doc/html/search/all_10.js b/Doc/html/search/all_10.js index 5d4eea7..b8c67f8 100644 --- a/Doc/html/search/all_10.js +++ b/Doc/html/search/all_10.js @@ -27,7 +27,7 @@ var searchData= ['tim_5ftickbase_5f10us_24',['TIM_TickBase_10US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f',1,'general_tim.h']]], ['tim_5ftickbase_5f1ms_25',['TIM_TickBase_1MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25',1,'general_tim.h']]], ['tim_5ftickbase_5f1us_26',['TIM_TickBase_1US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2',1,'general_tim.h']]], - ['tools_27',['Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]], + ['tools_27',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]], ['tools_28',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], ['trace_29',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]], ['trace_20configs_30',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], diff --git a/Doc/html/search/all_16.js b/Doc/html/search/all_16.js index 60163ac..ca20af9 100644 --- a/Doc/html/search/all_16.js +++ b/Doc/html/search/all_16.js @@ -1,6 +1,6 @@ var searchData= [ ['обзор_0',['Обзор',['../index.html#overview',1,'']]], - ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]], + ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], ['основные_20возможности_2',['Основные возможности',['../index.html#features',1,'']]] ]; diff --git a/Doc/html/search/all_1b.js b/Doc/html/search/all_1b.js index 6a8db26..f69cabe 100644 --- a/Doc/html/search/all_1b.js +++ b/Doc/html/search/all_1b.js @@ -1,4 +1,4 @@ var searchData= [ - ['утилиты_20mylibs_5fdefines_0',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]] + ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]] ]; diff --git a/Doc/html/search/all_2.js b/Doc/html/search/all_2.js index bc3fb4b..471f910 100644 --- a/Doc/html/search/all_2.js +++ b/Doc/html/search/all_2.js @@ -1,12 +1,14 @@ var searchData= [ - ['channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], - ['check_5fnull_5fptr_5f1_1',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f2_2',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f3_3',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f4_4',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f5_5',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]], - ['clearstruct_6',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]], - ['configs_7',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['configs_8',['configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]] + ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]], + ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d',1,'EvolveOptimizer_t']]], + ['channels_20tools_2',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], + ['check_5fnull_5fptr_5f1_3',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f2_4',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f3_5',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f4_6',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f5_7',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]], + ['clearstruct_8',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]], + ['configs_9',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], + ['configs_10',['configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'Evolve configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]] ]; diff --git a/Doc/html/search/all_3.js b/Doc/html/search/all_3.js index b6a060a..80775d3 100644 --- a/Doc/html/search/all_3.js +++ b/Doc/html/search/all_3.js @@ -1,9 +1,8 @@ var searchData= [ ['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]], - ['defines_1',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], - ['defines_2',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], - ['delay_20tools_3',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]], - ['delays_20defines_4',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]], - ['divide_5fup_5',['Divide_Up',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e',1,'mylibs_defs.h']]] + ['defines_1',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], + ['delay_20tools_2',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]], + ['delays_20defines_3',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]], + ['divide_5fup_4',['Divide_Up',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e',1,'mylibs_defs.h']]] ]; diff --git a/Doc/html/search/all_4.js b/Doc/html/search/all_4.js index 2d7d531..ac3a9dc 100644 --- a/Doc/html/search/all_4.js +++ b/Doc/html/search/all_4.js @@ -1,7 +1,16 @@ var searchData= [ - ['encoder_20tools_0',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], - ['encoder_5fdiff_1',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], - ['encoder_5fshdw_2',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]], - ['error_20handler_20defines_3',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]] + ['enable_5fevolve_5foptimization_0',['ENABLE_EVOLVE_OPTIMIZATION',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47',1,'mylibs_config.h']]], + ['encoder_20tools_1',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], + ['encoder_5fdiff_2',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], + ['encoder_5fshdw_3',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]], + ['error_20handler_20defines_4',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]], + ['evolve_20configs_5',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]], + ['evolve_20optimizer_6',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]], + ['evolve_5fmax_5fcandidates_7',['EVOLVE_MAX_CANDIDATES',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971',1,'mylibs_config.h']]], + ['evolve_5fmax_5fparams_8',['EVOLVE_MAX_PARAMS',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee',1,'mylibs_config.h']]], + ['evolve_5foptimizer_2eh_9',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]], + ['evolveoptimizer_5finit_10',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9',1,'evolve_optimizer.h']]], + ['evolveoptimizer_5fstep_11',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563',1,'evolve_optimizer.h']]], + ['evolveoptimizer_5ft_12',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]] ]; diff --git a/Doc/html/search/all_6.js b/Doc/html/search/all_6.js index bc1f396..ab97706 100644 --- a/Doc/html/search/all_6.js +++ b/Doc/html/search/all_6.js @@ -1,6 +1,6 @@ var searchData= [ - ['general_20defines_0',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], + ['general_20tools_0',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], ['general_20tools_1',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]], ['general_5fgpio_2ec_2',['general_gpio.c',['../general__gpio_8c.html',1,'']]], ['general_5fgpio_2eh_3',['general_gpio.h',['../general__gpio_8h.html',1,'']]], diff --git a/Doc/html/search/all_8.js b/Doc/html/search/all_8.js index c3890cd..2b98e91 100644 --- a/Doc/html/search/all_8.js +++ b/Doc/html/search/all_8.js @@ -2,8 +2,10 @@ var searchData= [ ['if_5fassert_5fusertracker_0',['if_assert_usertracker',['../group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07',1,'trackers.h']]], ['include_5fbit_5faccess_5flib_1',['INCLUDE_BIT_ACCESS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be',1,'mylibs_config.h']]], - ['include_5fgeneral_5fperiph_5flibs_2',['INCLUDE_GENERAL_PERIPH_LIBS',['../group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281',1,'mylibs_config.h']]], - ['include_5ftrace_5flib_3',['INCLUDE_TRACE_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7',1,'mylibs_config.h']]], - ['include_5ftrackers_5flib_4',['INCLUDE_TRACKERS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32',1,'mylibs_config.h']]], - ['init_20defines_5',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines']]] + ['include_5fevolve_5foptimizer_2',['INCLUDE_EVOLVE_OPTIMIZER',['../group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66',1,'mylibs_config.h']]], + ['include_5fgeneral_5fperiph_5flibs_3',['INCLUDE_GENERAL_PERIPH_LIBS',['../group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281',1,'mylibs_config.h']]], + ['include_5ftrace_5flib_4',['INCLUDE_TRACE_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7',1,'mylibs_config.h']]], + ['include_5ftrackers_5flib_5',['INCLUDE_TRACKERS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32',1,'mylibs_config.h']]], + ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines']]], + ['iq_5fmutation_7',['iq_mutation',['../struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5',1,'EvolveOptimizer_t']]] ]; diff --git a/Doc/html/search/all_9.js b/Doc/html/search/all_9.js index 3688bc7..c3193f7 100644 --- a/Doc/html/search/all_9.js +++ b/Doc/html/search/all_9.js @@ -16,5 +16,6 @@ var searchData= ['libs_13',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], ['log_5flevel_14',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]], ['log_5fprintf_15',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]], - ['lr_16',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] + ['loss_16',['loss',['../struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d',1,'EvolveOptimizer_t']]], + ['lr_17',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/all_a.js b/Doc/html/search/all_a.js index a1f0bfd..f2ebf4a 100644 --- a/Doc/html/search/all_a.js +++ b/Doc/html/search/all_a.js @@ -10,7 +10,7 @@ var searchData= ['my_5fprintf_7',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]], ['mylibs_8',['MyLibs',['../index.html',1,'']]], ['mylibs_5fconfig_2eh_9',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], - ['mylibs_5fdefines_10',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]], + ['mylibs_5fdefines_10',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], ['mylibs_5fdefs_2eh_11',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], ['mylibs_5ferror_5fhandler_12',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]], ['mylibs_5finclude_2eh_13',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]] diff --git a/Doc/html/search/all_b.js b/Doc/html/search/all_b.js index a8606f0..ec18e7a 100644 --- a/Doc/html/search/all_b.js +++ b/Doc/html/search/all_b.js @@ -1,4 +1,7 @@ var searchData= [ - ['num_5fof_5fusercnts_0',['num_of_usercnts',['../group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc',1,'trackers.h']]] + ['n_5fbest_0',['n_best',['../struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6',1,'EvolveOptimizer_t']]], + ['n_5fcand_1',['n_cand',['../struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1',1,'EvolveOptimizer_t']]], + ['n_5fparams_2',['n_params',['../struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8',1,'EvolveOptimizer_t']]], + ['num_5fof_5fusercnts_3',['num_of_usercnts',['../group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc',1,'trackers.h']]] ]; diff --git a/Doc/html/search/all_c.js b/Doc/html/search/all_c.js index 3d76a60..fa27ef2 100644 --- a/Doc/html/search/all_c.js +++ b/Doc/html/search/all_c.js @@ -1,4 +1,5 @@ var searchData= [ - ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]] + ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], + ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]] ]; diff --git a/Doc/html/search/all_d.js b/Doc/html/search/all_d.js index 576fee6..397ab9d 100644 --- a/Doc/html/search/all_d.js +++ b/Doc/html/search/all_d.js @@ -1,7 +1,9 @@ var searchData= [ - ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], - ['peripheral_1',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]], - ['psr_2',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]], - ['pwm_20oc_20channels_20tools_3',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]] + ['param_5fscale_5fq16_0',['PARAM_SCALE_Q16',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc',1,'evolve_optimizer.h']]], + ['param_5funscale_5fq16_1',['PARAM_UNSCALE_Q16',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba',1,'evolve_optimizer.h']]], + ['pc_2',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], + ['peripheral_3',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]], + ['psr_4',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]], + ['pwm_20oc_20channels_20tools_5',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]] ]; diff --git a/Doc/html/search/classes_0.js b/Doc/html/search/classes_0.js index 7f32de6..e1df323 100644 --- a/Doc/html/search/classes_0.js +++ b/Doc/html/search/classes_0.js @@ -1,5 +1,4 @@ var searchData= [ - ['gpio_5fledtypedef_0',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]], - ['gpio_5fswitchtypedef_1',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]] + ['evolveoptimizer_5ft_0',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]] ]; diff --git a/Doc/html/search/classes_1.js b/Doc/html/search/classes_1.js index c637c5a..7f32de6 100644 --- a/Doc/html/search/classes_1.js +++ b/Doc/html/search/classes_1.js @@ -1,4 +1,5 @@ var searchData= [ - ['hf_5fstackframe_5ft_0',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]] + ['gpio_5fledtypedef_0',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]], + ['gpio_5fswitchtypedef_1',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]] ]; diff --git a/Doc/html/search/classes_2.js b/Doc/html/search/classes_2.js index a9ade0a..c637c5a 100644 --- a/Doc/html/search/classes_2.js +++ b/Doc/html/search/classes_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['rtt_5fflashheader_5ft_0',['RTT_FlashHeader_t',['../struct_r_t_t___flash_header__t.html',1,'']]] + ['hf_5fstackframe_5ft_0',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]] ]; diff --git a/Doc/html/search/classes_3.js b/Doc/html/search/classes_3.js index bf0ca51..a9ade0a 100644 --- a/Doc/html/search/classes_3.js +++ b/Doc/html/search/classes_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['spi_5fsettingstypedef_0',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]] + ['rtt_5fflashheader_5ft_0',['RTT_FlashHeader_t',['../struct_r_t_t___flash_header__t.html',1,'']]] ]; diff --git a/Doc/html/search/classes_4.js b/Doc/html/search/classes_4.js index 91c6e88..bf0ca51 100644 --- a/Doc/html/search/classes_4.js +++ b/Doc/html/search/classes_4.js @@ -1,5 +1,4 @@ var searchData= [ - ['tim_5fencodertypedef_0',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]], - ['tim_5fsettingstypedef_1',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]] + ['spi_5fsettingstypedef_0',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]] ]; diff --git a/Doc/html/search/classes_5.js b/Doc/html/search/classes_5.js index e495a9f..91c6e88 100644 --- a/Doc/html/search/classes_5.js +++ b/Doc/html/search/classes_5.js @@ -1,8 +1,5 @@ var searchData= [ - ['uart_5fsettingstypedef_0',['UART_SettingsTypeDef',['../struct_u_a_r_t___settings_type_def.html',1,'']]], - ['uint16_5fbittypedef_1',['uint16_BitTypeDef',['../unionuint16___bit_type_def.html',1,'']]], - ['uint32_5fbittypedef_2',['uint32_BitTypeDef',['../unionuint32___bit_type_def.html',1,'']]], - ['uint64_5fbittypedef_3',['uint64_BitTypeDef',['../unionuint64___bit_type_def.html',1,'']]], - ['uint8_5fbittypedef_4',['uint8_BitTypeDef',['../unionuint8___bit_type_def.html',1,'']]] + ['tim_5fencodertypedef_0',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]], + ['tim_5fsettingstypedef_1',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]] ]; diff --git a/Doc/html/search/classes_6.js b/Doc/html/search/classes_6.js new file mode 100644 index 0000000..e495a9f --- /dev/null +++ b/Doc/html/search/classes_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['uart_5fsettingstypedef_0',['UART_SettingsTypeDef',['../struct_u_a_r_t___settings_type_def.html',1,'']]], + ['uint16_5fbittypedef_1',['uint16_BitTypeDef',['../unionuint16___bit_type_def.html',1,'']]], + ['uint32_5fbittypedef_2',['uint32_BitTypeDef',['../unionuint32___bit_type_def.html',1,'']]], + ['uint64_5fbittypedef_3',['uint64_BitTypeDef',['../unionuint64___bit_type_def.html',1,'']]], + ['uint8_5fbittypedef_4',['uint8_BitTypeDef',['../unionuint8___bit_type_def.html',1,'']]] +]; diff --git a/Doc/html/search/files_1.js b/Doc/html/search/files_1.js index 30872e3..9050e12 100644 --- a/Doc/html/search/files_1.js +++ b/Doc/html/search/files_1.js @@ -1,7 +1,4 @@ var searchData= [ - ['general_5fgpio_2ec_0',['general_gpio.c',['../general__gpio_8c.html',1,'']]], - ['general_5fgpio_2eh_1',['general_gpio.h',['../general__gpio_8h.html',1,'']]], - ['general_5ftim_2ec_2',['general_tim.c',['../general__tim_8c.html',1,'']]], - ['general_5ftim_2eh_3',['general_tim.h',['../general__tim_8h.html',1,'']]] + ['evolve_5foptimizer_2eh_0',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]] ]; diff --git a/Doc/html/search/files_2.js b/Doc/html/search/files_2.js index 3a61f58..30872e3 100644 --- a/Doc/html/search/files_2.js +++ b/Doc/html/search/files_2.js @@ -1,6 +1,7 @@ var searchData= [ - ['mylibs_5fconfig_2eh_0',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], - ['mylibs_5fdefs_2eh_1',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], - ['mylibs_5finclude_2eh_2',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]] + ['general_5fgpio_2ec_0',['general_gpio.c',['../general__gpio_8c.html',1,'']]], + ['general_5fgpio_2eh_1',['general_gpio.h',['../general__gpio_8h.html',1,'']]], + ['general_5ftim_2ec_2',['general_tim.c',['../general__tim_8c.html',1,'']]], + ['general_5ftim_2eh_3',['general_tim.h',['../general__tim_8h.html',1,'']]] ]; diff --git a/Doc/html/search/files_3.js b/Doc/html/search/files_3.js index f744967..3a61f58 100644 --- a/Doc/html/search/files_3.js +++ b/Doc/html/search/files_3.js @@ -1,5 +1,6 @@ var searchData= [ - ['trace_2eh_0',['trace.h',['../trace_8h.html',1,'']]], - ['trackers_2eh_1',['trackers.h',['../trackers_8h.html',1,'']]] + ['mylibs_5fconfig_2eh_0',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], + ['mylibs_5fdefs_2eh_1',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], + ['mylibs_5finclude_2eh_2',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]] ]; diff --git a/Doc/html/search/files_4.js b/Doc/html/search/files_4.js new file mode 100644 index 0000000..f744967 --- /dev/null +++ b/Doc/html/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['trace_2eh_0',['trace.h',['../trace_8h.html',1,'']]], + ['trackers_2eh_1',['trackers.h',['../trackers_8h.html',1,'']]] +]; diff --git a/Doc/html/search/functions_0.js b/Doc/html/search/functions_0.js index a564d7b..a560c32 100644 --- a/Doc/html/search/functions_0.js +++ b/Doc/html/search/functions_0.js @@ -1,13 +1,5 @@ var searchData= [ - ['gpio_5fclock_5fenable_0',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]], - ['gpio_5fled_5fblink_5fstart_1',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], - ['gpio_5fled_5fdynamic_5fhandle_2',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5ffading_5fstart_3',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], - ['gpio_5fled_5finit_4',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]], - ['gpio_5fled_5foff_5',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5fon_6',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5fset_7',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]], - ['gpio_5fread_5fswitch_8',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]], - ['gpio_5fswitch_5finit_9',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]] + ['evolveoptimizer_5finit_0',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gac21587fe68fe3635525358ac3f4059d9',1,'evolve_optimizer.h']]], + ['evolveoptimizer_5fstep_1',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga1ba2fa963c9ae12625be1b7c20718563',1,'evolve_optimizer.h']]] ]; diff --git a/Doc/html/search/functions_1.js b/Doc/html/search/functions_1.js index f4c609a..a564d7b 100644 --- a/Doc/html/search/functions_1.js +++ b/Doc/html/search/functions_1.js @@ -1,5 +1,13 @@ var searchData= [ - ['hf_5fcheckrecovered_0',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]], - ['hf_5fhandlefault_1',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]] + ['gpio_5fclock_5fenable_0',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]], + ['gpio_5fled_5fblink_5fstart_1',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], + ['gpio_5fled_5fdynamic_5fhandle_2',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]], + ['gpio_5fled_5ffading_5fstart_3',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], + ['gpio_5fled_5finit_4',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]], + ['gpio_5fled_5foff_5',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]], + ['gpio_5fled_5fon_6',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]], + ['gpio_5fled_5fset_7',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]], + ['gpio_5fread_5fswitch_8',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]], + ['gpio_5fswitch_5finit_9',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]] ]; diff --git a/Doc/html/search/functions_2.js b/Doc/html/search/functions_2.js index 75ac569..f4c609a 100644 --- a/Doc/html/search/functions_2.js +++ b/Doc/html/search/functions_2.js @@ -1,7 +1,5 @@ var searchData= [ - ['rtt_5feraseflash_0',['RTT_EraseFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1',1,'trace.h']]], - ['rtt_5fflashprepare_1',['RTT_FlashPrepare',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6',1,'trace.h']]], - ['rtt_5freadfromflash_2',['RTT_ReadFromFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146',1,'trace.h']]], - ['rtt_5fsavetoflash_3',['RTT_SaveToFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63',1,'trace.h']]] + ['hf_5fcheckrecovered_0',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]], + ['hf_5fhandlefault_1',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]] ]; diff --git a/Doc/html/search/functions_3.js b/Doc/html/search/functions_3.js index d14df27..75ac569 100644 --- a/Doc/html/search/functions_3.js +++ b/Doc/html/search/functions_3.js @@ -1,14 +1,7 @@ var searchData= [ - ['tim_5fbase_5finit_0',['TIM_Base_Init',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c']]], - ['tim_5fbase_5fmspdeinit_1',['TIM_Base_MspDeInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c']]], - ['tim_5fbase_5fmspinit_2',['TIM_Base_MspInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c']]], - ['tim_5fdelay_3',['TIM_Delay',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]], - ['tim_5fdelay_5fnonblocking_4',['TIM_Delay_NonBlocking',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]], - ['tim_5fdelay_5fstart_5',['TIM_Delay_Start',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c']]], - ['tim_5fencoder_5finit_6',['TIM_Encoder_Init',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim): general_tim.c']]], - ['tim_5fencoder_5fread_7',['TIM_Encoder_Read',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c']]], - ['tim_5fencoder_5freadswitch_8',['TIM_Encoder_ReadSwitch',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c']]], - ['tim_5foc_5fcomparator_5finit_9',['TIM_OC_Comparator_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c']]], - ['tim_5foutput_5fpwm_5finit_10',['TIM_Output_PWM_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN): general_tim.c']]] + ['rtt_5feraseflash_0',['RTT_EraseFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1',1,'trace.h']]], + ['rtt_5fflashprepare_1',['RTT_FlashPrepare',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6',1,'trace.h']]], + ['rtt_5freadfromflash_2',['RTT_ReadFromFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146',1,'trace.h']]], + ['rtt_5fsavetoflash_3',['RTT_SaveToFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63',1,'trace.h']]] ]; diff --git a/Doc/html/search/functions_4.js b/Doc/html/search/functions_4.js new file mode 100644 index 0000000..d14df27 --- /dev/null +++ b/Doc/html/search/functions_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['tim_5fbase_5finit_0',['TIM_Base_Init',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c']]], + ['tim_5fbase_5fmspdeinit_1',['TIM_Base_MspDeInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c']]], + ['tim_5fbase_5fmspinit_2',['TIM_Base_MspInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c']]], + ['tim_5fdelay_3',['TIM_Delay',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]], + ['tim_5fdelay_5fnonblocking_4',['TIM_Delay_NonBlocking',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]], + ['tim_5fdelay_5fstart_5',['TIM_Delay_Start',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c']]], + ['tim_5fencoder_5finit_6',['TIM_Encoder_Init',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim): general_tim.c']]], + ['tim_5fencoder_5fread_7',['TIM_Encoder_Read',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c']]], + ['tim_5fencoder_5freadswitch_8',['TIM_Encoder_ReadSwitch',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c']]], + ['tim_5foc_5fcomparator_5finit_9',['TIM_OC_Comparator_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c']]], + ['tim_5foutput_5fpwm_5finit_10',['TIM_Output_PWM_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN): general_tim.c']]] +]; diff --git a/Doc/html/search/groups_2.js b/Doc/html/search/groups_2.js index a6f1e91..e1a626d 100644 --- a/Doc/html/search/groups_2.js +++ b/Doc/html/search/groups_2.js @@ -2,5 +2,5 @@ var searchData= [ ['channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], ['configs_1',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['configs_2',['configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]] + ['configs_2',['configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'Evolve configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]] ]; diff --git a/Doc/html/search/groups_3.js b/Doc/html/search/groups_3.js index 99972f3..dadffcf 100644 --- a/Doc/html/search/groups_3.js +++ b/Doc/html/search/groups_3.js @@ -1,7 +1,6 @@ var searchData= [ - ['defines_0',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], - ['defines_1',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], - ['delay_20tools_2',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]], - ['delays_20defines_3',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]] + ['defines_0',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], + ['delay_20tools_1',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]], + ['delays_20defines_2',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]] ]; diff --git a/Doc/html/search/groups_4.js b/Doc/html/search/groups_4.js index d2fc234..ca0406b 100644 --- a/Doc/html/search/groups_4.js +++ b/Doc/html/search/groups_4.js @@ -1,5 +1,7 @@ var searchData= [ ['encoder_20tools_0',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], - ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]] + ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]], + ['evolve_20configs_2',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]], + ['evolve_20optimizer_3',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]] ]; diff --git a/Doc/html/search/groups_6.js b/Doc/html/search/groups_6.js index d520974..96772f9 100644 --- a/Doc/html/search/groups_6.js +++ b/Doc/html/search/groups_6.js @@ -1,6 +1,6 @@ var searchData= [ - ['general_20defines_0',['General Defines',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], + ['general_20tools_0',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], ['general_20tools_1',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]], ['gpio_20tools_2',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], ['gpio_20trace_20defines_3',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]] diff --git a/Doc/html/search/groups_b.js b/Doc/html/search/groups_b.js index 3d76a60..fa27ef2 100644 --- a/Doc/html/search/groups_b.js +++ b/Doc/html/search/groups_b.js @@ -1,4 +1,5 @@ var searchData= [ - ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]] + ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], + ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]] ]; diff --git a/Doc/html/search/groups_f.js b/Doc/html/search/groups_f.js index 2f73f99..96ba99e 100644 --- a/Doc/html/search/groups_f.js +++ b/Doc/html/search/groups_f.js @@ -1,7 +1,7 @@ var searchData= [ ['tim_20tools_0',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], - ['tools_1',['Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]], + ['tools_1',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]], ['tools_2',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], ['trace_20configs_3',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], ['trace_20defines_4',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], diff --git a/Doc/html/search/pages_1.js b/Doc/html/search/pages_1.js index e8b83bf..c604c22 100644 --- a/Doc/html/search/pages_1.js +++ b/Doc/html/search/pages_1.js @@ -3,5 +3,5 @@ var searchData= ['my_5flibs_5fgpio_0',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], ['my_5flibs_5ftim_1',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], ['mylibs_2',['MyLibs',['../index.html',1,'']]], - ['mylibs_5fdefines_3',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]] + ['mylibs_5fdefines_3',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]] ]; diff --git a/Doc/html/search/pages_7.js b/Doc/html/search/pages_7.js index 60163ac..ca20af9 100644 --- a/Doc/html/search/pages_7.js +++ b/Doc/html/search/pages_7.js @@ -1,6 +1,6 @@ var searchData= [ ['обзор_0',['Обзор',['../index.html#overview',1,'']]], - ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]], + ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], ['основные_20возможности_2',['Основные возможности',['../index.html#features',1,'']]] ]; diff --git a/Doc/html/search/pages_c.js b/Doc/html/search/pages_c.js index 6a8db26..f69cabe 100644 --- a/Doc/html/search/pages_c.js +++ b/Doc/html/search/pages_c.js @@ -1,4 +1,4 @@ var searchData= [ - ['утилиты_20mylibs_5fdefines_0',['Общие утилиты <a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Defines</a>',['../index.html#utils_module',1,'']]] + ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]] ]; diff --git a/Doc/html/search/searchdata.js b/Doc/html/search/searchdata.js index 3d21b35..afacf37 100644 --- a/Doc/html/search/searchdata.js +++ b/Doc/html/search/searchdata.js @@ -1,10 +1,10 @@ var indexSectionsWithContent = { 0: "abcdefghilmnoprstuвзимопрсту", - 1: "ghrstu", - 2: "bgmt", - 3: "ghrt", - 4: "deghlprst", + 1: "eghrstu", + 2: "begmt", + 3: "eghrt", + 4: "cdeghilnprst", 5: "gt", 6: "lt", 7: "abcdefghilmoprstu", diff --git a/Doc/html/search/variables_0.js b/Doc/html/search/variables_0.js index fd94506..c5df047 100644 --- a/Doc/html/search/variables_0.js +++ b/Doc/html/search/variables_0.js @@ -1,4 +1,5 @@ var searchData= [ - ['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]] + ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]], + ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d',1,'EvolveOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_1.js b/Doc/html/search/variables_1.js index 677b54d..fd94506 100644 --- a/Doc/html/search/variables_1.js +++ b/Doc/html/search/variables_1.js @@ -1,5 +1,4 @@ var searchData= [ - ['encoder_5fdiff_0',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], - ['encoder_5fshdw_1',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]] + ['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]] ]; diff --git a/Doc/html/search/variables_2.js b/Doc/html/search/variables_2.js index ebaa3e9..677b54d 100644 --- a/Doc/html/search/variables_2.js +++ b/Doc/html/search/variables_2.js @@ -1,7 +1,5 @@ var searchData= [ - ['gpio_5fpin_5fsw_0',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti1_1',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti2_2',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]], - ['gpiox_3',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef']]] + ['encoder_5fdiff_0',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], + ['encoder_5fshdw_1',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]] ]; diff --git a/Doc/html/search/variables_3.js b/Doc/html/search/variables_3.js index 020fcba..ebaa3e9 100644 --- a/Doc/html/search/variables_3.js +++ b/Doc/html/search/variables_3.js @@ -1,4 +1,7 @@ var searchData= [ - ['htim_0',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]] + ['gpio_5fpin_5fsw_0',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]], + ['gpio_5fpin_5fti1_1',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]], + ['gpio_5fpin_5fti2_2',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]], + ['gpiox_3',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef']]] ]; diff --git a/Doc/html/search/variables_4.js b/Doc/html/search/variables_4.js index be38d2d..020fcba 100644 --- a/Doc/html/search/variables_4.js +++ b/Doc/html/search/variables_4.js @@ -1,8 +1,4 @@ var searchData= [ - ['led_5factivelvl_0',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], - ['led_5fperiod_1',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], - ['led_5fpin_2',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], - ['led_5fport_3',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], - ['lr_4',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] + ['htim_0',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]] ]; diff --git a/Doc/html/search/variables_5.js b/Doc/html/search/variables_5.js index 7d04971..b322adf 100644 --- a/Doc/html/search/variables_5.js +++ b/Doc/html/search/variables_5.js @@ -1,5 +1,4 @@ var searchData= [ - ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], - ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]] + ['iq_5fmutation_0',['iq_mutation',['../struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5',1,'EvolveOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_6.js b/Doc/html/search/variables_6.js index 29cfada..def9829 100644 --- a/Doc/html/search/variables_6.js +++ b/Doc/html/search/variables_6.js @@ -1,8 +1,9 @@ var searchData= [ - ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]], - ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]], - ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]], - ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]], - ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]] + ['led_5factivelvl_0',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], + ['led_5fperiod_1',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], + ['led_5fpin_2',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], + ['led_5fport_3',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], + ['loss_4',['loss',['../struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d',1,'EvolveOptimizer_t']]], + ['lr_5',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/variables_7.js b/Doc/html/search/variables_7.js index 4853f37..0e355de 100644 --- a/Doc/html/search/variables_7.js +++ b/Doc/html/search/variables_7.js @@ -1,21 +1,6 @@ var searchData= [ - ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]], - ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]], - ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]], - ['size_3',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]], - ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]], - ['sslaveconfig_5',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], - ['state_6',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], - ['stickbaseprescaler_7',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], - ['stickbaseus_8',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], - ['stimahbfreqmhz_9',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], - ['stimfreqhz_10',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], - ['stimmode_11',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], - ['sw_12',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], - ['sw_5factivelvl_13',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], - ['sw_5ffilterdelay_14',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], - ['sw_5fpin_15',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], - ['sw_5fport_16',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], - ['sw_5fprevstate_17',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]] + ['n_5fbest_0',['n_best',['../struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6',1,'EvolveOptimizer_t']]], + ['n_5fcand_1',['n_cand',['../struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1',1,'EvolveOptimizer_t']]], + ['n_5fparams_2',['n_params',['../struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8',1,'EvolveOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_8.js b/Doc/html/search/variables_8.js index 24558b0..7d04971 100644 --- a/Doc/html/search/variables_8.js +++ b/Doc/html/search/variables_8.js @@ -1,4 +1,5 @@ var searchData= [ - ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]] + ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], + ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/variables_9.js b/Doc/html/search/variables_9.js new file mode 100644 index 0000000..29cfada --- /dev/null +++ b/Doc/html/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]], + ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]], + ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]], + ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]], + ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]] +]; diff --git a/Doc/html/search/variables_a.js b/Doc/html/search/variables_a.js new file mode 100644 index 0000000..4853f37 --- /dev/null +++ b/Doc/html/search/variables_a.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]], + ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]], + ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]], + ['size_3',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]], + ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]], + ['sslaveconfig_5',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], + ['state_6',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], + ['stickbaseprescaler_7',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], + ['stickbaseus_8',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], + ['stimahbfreqmhz_9',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], + ['stimfreqhz_10',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], + ['stimmode_11',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], + ['sw_12',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], + ['sw_5factivelvl_13',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], + ['sw_5ffilterdelay_14',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], + ['sw_5fpin_15',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], + ['sw_5fport_16',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], + ['sw_5fprevstate_17',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]] +]; diff --git a/Doc/html/search/variables_b.js b/Doc/html/search/variables_b.js new file mode 100644 index 0000000..24558b0 --- /dev/null +++ b/Doc/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]] +]; diff --git a/Doc/html/struct_evolve_optimizer__t-members.html b/Doc/html/struct_evolve_optimizer__t-members.html new file mode 100644 index 0000000..681531b --- /dev/null +++ b/Doc/html/struct_evolve_optimizer__t-members.html @@ -0,0 +1,123 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EvolveOptimizer_t Member List
+
+ +
+
+ + + + diff --git a/Doc/html/struct_evolve_optimizer__t.html b/Doc/html/struct_evolve_optimizer__t.html new file mode 100644 index 0000000..9263f29 --- /dev/null +++ b/Doc/html/struct_evolve_optimizer__t.html @@ -0,0 +1,278 @@ + + + + + + + +MyLibs: EvolveOptimizer_t Struct Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EvolveOptimizer_t Struct Reference
+
+
+ +

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

+ +

#include <evolve_optimizer.h>

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

+Public Attributes

uint16_t n_params
 Количество параметров
uint16_t n_cand
 Количество кандидатов
uint16_t n_best
 Количество лучших, усредняемых
uint16_t iq_mutation
 Амплитуда мутации в Q16.16.
uint16_t cand_index
 Индекс кандидата для обработки
int32_t loss [100]
 Loss для каждого кандидата
int32_t candidates [100][20]
 Параметры кандидатов
+

Detailed Description

+

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

+ +

Definition at line 81 of file evolve_optimizer.h.

+

Member Data Documentation

+ +

◆ n_params

+ +
+
+ + + + +
uint16_t EvolveOptimizer_t::n_params
+
+ +

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

+ +

Definition at line 82 of file evolve_optimizer.h.

+ +
+
+ +

◆ n_cand

+ +
+
+ + + + +
uint16_t EvolveOptimizer_t::n_cand
+
+ +

Количество кандидатов

+ +

Definition at line 83 of file evolve_optimizer.h.

+ +
+
+ +

◆ n_best

+ +
+
+ + + + +
uint16_t EvolveOptimizer_t::n_best
+
+ +

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

+ +

Definition at line 84 of file evolve_optimizer.h.

+ +
+
+ +

◆ iq_mutation

+ +
+
+ + + + +
uint16_t EvolveOptimizer_t::iq_mutation
+
+ +

Амплитуда мутации в Q16.16.

+ +

Definition at line 85 of file evolve_optimizer.h.

+ +
+
+ +

◆ cand_index

+ +
+
+ + + + +
uint16_t EvolveOptimizer_t::cand_index
+
+ +

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

+ +

Definition at line 86 of file evolve_optimizer.h.

+ +
+
+ +

◆ loss

+ +
+
+ + + + +
int32_t EvolveOptimizer_t::loss[100]
+
+ +

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

+ +

Definition at line 87 of file evolve_optimizer.h.

+ +
+
+ +

◆ candidates

+ +
+
+ + + + +
int32_t EvolveOptimizer_t::candidates[100][20]
+
+ +

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

+ +

Definition at line 88 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 new file mode 100644 index 0000000..9f66374 --- /dev/null +++ b/Doc/html/struct_evolve_optimizer__t.js @@ -0,0 +1,10 @@ +var struct_evolve_optimizer__t = +[ + [ "n_params", "struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8", null ], + [ "n_cand", "struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1", null ], + [ "n_best", "struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6", null ], + [ "iq_mutation", "struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5", null ], + [ "cand_index", "struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae", null ], + [ "loss", "struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d", null ], + [ "candidates", "struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d", null ] +]; \ No newline at end of file diff --git a/Doc/html/struct_h_f___stack_frame__t.html b/Doc/html/struct_h_f___stack_frame__t.html index c49284d..520e7a8 100644 --- a/Doc/html/struct_h_f___stack_frame__t.html +++ b/Doc/html/struct_h_f___stack_frame__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_h_f___stack_frame__t.html','','struct_h_f___sta
-
HF_StackFrame_t Struct Reference
+
HF_StackFrame_t Struct Reference
diff --git a/Doc/html/struct_r_t_t___flash_header__t.html b/Doc/html/struct_r_t_t___flash_header__t.html index dc68957..1abfede 100644 --- a/Doc/html/struct_r_t_t___flash_header__t.html +++ b/Doc/html/struct_r_t_t___flash_header__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_r_t_t___flash_header__t.html','','struct_r_t_t_
-
RTT_FlashHeader_t Struct Reference
+
RTT_FlashHeader_t Struct Reference
diff --git a/Doc/html/topics.html b/Doc/html/topics.html index b8674ec..1361458 100644 --- a/Doc/html/topics.html +++ b/Doc/html/topics.html @@ -105,18 +105,20 @@ $(function(){initNavTree('topics.html','',''); });  My LibsВсе используемые MyLibs библиотеки  ConfigsКонфигурации для библиотек MyLibs  Trace configsКонфигурация трекеров и трассировки - Libraries configsПодключение различных модулей библиотеки - General DefinesОбщие макросы и typedef'ы, используемые по всему проекту - Bit access definesМакросы и typedef'ы для работы с битами в unsigned типах - Error Handler definesДефайны для обработки ошибок - Delays definesМакросы и определения для работы с задержками в миллисекундах - Utils definesОбщие вспомогательные макросы - Trace definesДефайны для работы с трассировкой - Serial trace definesДефайны для работы с serial трассировкой (SWO, RTT) - GPIO trace definesДефайны для работы с GPIO трассировкой - Flash RTT BufferМакросы и функции для сохранения/чтения RTT буфера в Flash - Hardfault trace definesМодуль трассировки HardFault с возможностью сохранения RTT буфера во Flash - Trackers definesДефайны для работы с трекерами + Evolve configsКонфигурация однослойного персептрона и алгоритма обучения + Libraries configsПодключение различных модулей библиотеки + General ToolsОбщие макросы и typedef'ы, используемые по всему проекту + Bit access definesМакросы и typedef'ы для работы с битами в unsigned типах + Evolve optimizerБиблиотека для эволюционного подбора параметров + Error Handler definesДефайны для обработки ошибок + Delays definesМакросы и определения для работы с задержками в миллисекундах + Utils definesОбщие вспомогательные макросы + Trace definesДефайны для работы с трассировкой + Serial trace definesДефайны для работы с serial трассировкой (SWO, RTT) + GPIO trace definesДефайны для работы с GPIO трассировкой + Flash RTT BufferМакросы и функции для сохранения/чтения RTT буфера в Flash + Hardfault trace definesМодуль трассировки HardFault с возможностью сохранения RTT буфера во Flash + Trackers definesДефайны для работы с трекерами  PeripheralМодули для управления периферией  GPIO ToolsФункции и макросы для удобной работы с GPIO  General toolsОбщие функции/макросы для работы с GPIO diff --git a/Doc/html/trackers_8h_source.html b/Doc/html/trackers_8h_source.html index beb26f3..847f6be 100644 --- a/Doc/html/trackers_8h_source.html +++ b/Doc/html/trackers_8h_source.html @@ -238,26 +238,32 @@ $(function(){initNavTree('trackers_8h_source.html','',''); });
134
135 #define TrackerTypeDef(num_user_vars) void *
136
-
137 #define num_of_usercnts(_user_)
-
138 #define assert_tracecnt(_cntstruct_, _uservarnumb_)
-
139
-
140 #define TrackerCnt_Ok(_cntstruct_)
-
141 #define TrackerCnt_Err(_cntstruct_)
-
142 #define TrackerCnt_Warn(_cntstruct_)
-
143 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
-
144 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
-
145
-
146 /** @brief Очистка всей структуры */
-
147 #define TrackerClear_All(_cntstruct_)
-
148 #define TrackerClear_Ok(_cntstruct_)
-
149 #define TrackerClear_Err(_cntstruct_)
-
150 #define TrackerClear_Warn(_cntstruct_)
-
151 #define TrackerClear_User(_cntstruct_)
-
152 #define TrackerClear_UserAll(_cntstruct_)
-
153
-
154#endif //TRACKERS_ENABLE
-
155
-
156#endif //__TRACKERS_H_
+
137 #define num_of_usercnts(_user_) 0
+
138 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
+
139 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
+
140 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
+
141
+
142 #define TrackerGet_Ok(_cntstruct_) dummy
+
143 #define TrackerGet_Err(_cntstruct_) dummy
+
144 #define TrackerGet_Warn(_cntstruct_) dummy
+
145 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
+
146
+
147 #define TrackerCnt_Ok(_cntstruct_)
+
148 #define TrackerCnt_Err(_cntstruct_)
+
149 #define TrackerCnt_Warn(_cntstruct_)
+
150 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
+
151 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
+
152
+
153 #define TrackerClear_All(_cntstruct_)
+
154 #define TrackerClear_Ok(_cntstruct_)
+
155 #define TrackerClear_Err(_cntstruct_)
+
156 #define TrackerClear_Warn(_cntstruct_)
+
157 #define TrackerClear_User(_cntstruct_)
+
158 #define TrackerClear_UserAll(_cntstruct_)
+
159
+
160#endif //TRACKERS_ENABLE
+
161
+
162#endif //__TRACKERS_H_
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
diff --git a/Doc/html/unionuint16___bit_type_def.html b/Doc/html/unionuint16___bit_type_def.html index e34fe8a..a6cc4cb 100644 --- a/Doc/html/unionuint16___bit_type_def.html +++ b/Doc/html/unionuint16___bit_type_def.html @@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint16___bit_type_def.html','','unionuint16___bit
-
uint16_BitTypeDef Union Reference
+
uint16_BitTypeDef Union Reference
diff --git a/Doc/html/unionuint32___bit_type_def.html b/Doc/html/unionuint32___bit_type_def.html index 8d72933..05761c6 100644 --- a/Doc/html/unionuint32___bit_type_def.html +++ b/Doc/html/unionuint32___bit_type_def.html @@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint32___bit_type_def.html','','unionuint32___bit
-
uint32_BitTypeDef Union Reference
+
uint32_BitTypeDef Union Reference
diff --git a/Doc/html/unionuint64___bit_type_def.html b/Doc/html/unionuint64___bit_type_def.html index 59935e4..d9aa7f7 100644 --- a/Doc/html/unionuint64___bit_type_def.html +++ b/Doc/html/unionuint64___bit_type_def.html @@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint64___bit_type_def.html','','unionuint64___bit
-
uint64_BitTypeDef Union Reference
+
uint64_BitTypeDef Union Reference
diff --git a/Doc/html/unionuint8___bit_type_def.html b/Doc/html/unionuint8___bit_type_def.html index 0e46494..53a402f 100644 --- a/Doc/html/unionuint8___bit_type_def.html +++ b/Doc/html/unionuint8___bit_type_def.html @@ -97,7 +97,7 @@ $(function(){initNavTree('unionuint8___bit_type_def.html','','unionuint8___bit_t
-
uint8_BitTypeDef Union Reference
+
uint8_BitTypeDef Union Reference
diff --git a/Doc/latex/annotated.tex b/Doc/latex/annotated.tex index 0f093a6..6cc7cee 100644 --- a/Doc/latex/annotated.tex +++ b/Doc/latex/annotated.tex @@ -1,5 +1,6 @@ \doxysection{Class List} Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \\*Структура эволюционного оптимизатора }{\pageref{struct_evolve_optimizer__t}}{} \item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \\*Структура светодиода }{\pageref{struct_g_p_i_o___l_e_d_type_def}}{} \item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \\*Структура кнопки }{\pageref{struct_g_p_i_o___switch_type_def}}{} \item\contentsline{section}{\mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \\*Контекст стек-\/фрейма процессора при Hard\+Fault }{\pageref{struct_h_f___stack_frame__t}}{} diff --git a/Doc/latex/bit__access_8h.tex b/Doc/latex/bit__access_8h.tex index 4ce7302..31e7227 100644 --- a/Doc/latex/bit__access_8h.tex +++ b/Doc/latex/bit__access_8h.tex @@ -6,16 +6,14 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline -Include dependency graph for bit\+\_\+access.\+h\+: -\nopagebreak +Include dependency graph for bit\+\_\+access.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=229pt]{bit__access_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/bit__access_8h__dep__incl.pdf b/Doc/latex/bit__access_8h__dep__incl.pdf index 482e90d9ed429b3d93713857a93048b30de92afa..3d0eaaf1012e0db41152f9d66083bdbd18b5f60a 100644 GIT binary patch delta 537 zcmV+!0_Od(p#ig@0kFJHC>P}j2bZKA$F;?EQuR3jWOY`@YY}q)p*qGI5 z*V>s`5tHOiEq@nPH1HEBV94RMgSNV@ED-eYFsXQ~Ds8*%efwrR=(DPR^@ugCuo*Y9 ztMkyemKT{;mGwVQuzv|-i)A{ASmGD%+aH@tVf$nU5w`MCzw-#|wGVt8x)E0CYQXjo zeb1kVl?!3^?s6^FTXQ_BN|bFOkLH4e8BtQ-uJsP|HQ@(omhA5v(ABozZ^= bP}YAv0|NlyatxJ|iBKR2ISM5uMNdWwQ*aQ% delta 535 zcmV+y0_gp-p#ia>0kFJHD2;N2gG*A53V94R6gSNV@ED&^mKdE@ADs8*%efw%V=!>d;_lPyEuo*Y9 ztMkzJmKT{;mGy@w*uR9a#WI~lEb$BX?XS(Huzj+F2wVB6-+6%b+6O)kY=l+18n8V? zKk}zxZbA0o`}^rycSz{=TYGVo{l4Sj zMe!klID{{^s`Q!B<9Pr<=Rnd_iuubYR!85wSjo}CnNFeRLm(M}bA zqNqbphSz5$nuRu}`MmejNbcp@aVufAyQ7$<1d|mZ38kx#IR1d~{FbJl4|pHE9E=^g zeU*jc8~x@eV)wX1fZ}AFp2|w^`=>Gg(df4R$HNYtSa>kJYHEL%xDN0WIKAYs+PbWr z{G)`-A2$;tbJ^(D2-!e7-Z`Dg#{DQD-5mKD?gsK!*q+apTVCo@XxaTAla6m~n>hOy zz8l~WlZH2|9h31-LRTfs%L#xm5QO2`jSmpPgEdJoAgRYb1d9*^ z+pr*S5@+!8G3*ZupcF?Bh(-iq=DZmOVvlOal`i6|c*!!6Fp{VcZ!&M<`2SVHMJ-y( ZJ8M3H58!7Elaq^3AP6`LB_%~qMhaSF4O9RC diff --git a/Doc/latex/bit__access_8h__incl.pdf b/Doc/latex/bit__access_8h__incl.pdf index 2de4b26f836d8ac790a3f1230bf9cbef88af5913..f48791a23ce0bf6474b6935c803d8e634c283373 100644 GIT binary patch delta 526 zcmV+p0`dL#tO53{0kCFM2l&m%dhcmQlWkK$e`v1j(gGtlH@y|NWvQ)Cuj(i3q4!1k ztwF4*bGwvA`E>|=s^xa6i_+rHlNgxb_ymail=I`*{bJilkS7PJs!qb;Tzbnpl`CRP&So6pF=!j#U0;AXr7&C~vkb`K$ z$DvP+7w-=0NLo%8o0huv=qY!=c6awaQ(@2Y4ooD}_&dAfg$g4n`f8BW8OoCAo4PQvBV6?dAlnX}LgvEji_LfF( zC>;;U;$*?=b_%+YxG?;nwuPMO?~W)6<$U7im|y0uvgp%gtCA2K!nb0WM*MQ&kb8#dqr+7$~u QlTTJ42rvpIB}Gq03Qpe)Qvd(} delta 527 zcmV+q0`UFztO56|0kCFM2lJbe^xkO3lWkK$e`>Dl(gGtlH@y|NWvQ(Xuj(i3srN`Ry|jnbRX>P@i4{|=MA%FD?p21oO{RoonihP zf5SZB0w!oX4tjvGxQ!tiTIQZ(BEj^3cbx0;x!C=&=a2Q#3CB1EMzI+XGl)9KLA3C3 zSf{2I?+)rnT1}TSErB;%{f`A}qg1BbD``rP6u22^C58{Kj$Ux1^{3LM(c3y#21dCo zj0P64G@vlrTYIXm!_c!kBTxGxuL5m$f8%j82}VgQ_(EC*qs29+TrkQej9qa)c}t@= zl#YjDakAibI|bcHTois#+d|ItcPA8$x=q|1^UK_oR$&9Bm;5`U>(eh?;Mraitc@(I z6P}fyJNh16)l~O2cUcSdQsgSToAr7jQ8}YEb zjjFk{@}PIEarb}e`5s$}\newline +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +Include dependency graph for evolve\+\_\+optimizer.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=295pt]{evolve__optimizer_8h__incl} +\end{center} +\end{figure} +This graph shows which files directly or indirectly include this file\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=229pt]{evolve__optimizer_8h__dep__incl} +\end{center} +\end{figure} +\doxysubsubsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\+\_\+\+SCALE\+\_\+\+Q16}}(x, min\+\_\+val, max\+\_\+val) +\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в Q16.\+16 \mbox{[}0, 65536) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\+\_\+\+UNSCALE\+\_\+\+Q16}}(q16\+\_\+val, min\+\_\+val, max\+\_\+val) +\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование Q16.\+16 значения в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsubsection*{Functions} +\begin{DoxyCompactItemize} +\item +\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, uint16\+\_\+t iq\+\_\+mutation, int32\+\_\+t \texorpdfstring{$\ast$}{*}start\+\_\+params) +\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item +\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE void \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, int32\+\_\+t \texorpdfstring{$\ast$}{*}params, int32\+\_\+t loss) +\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Заголовочный файл для адаптивного подбора параметров + + + +Definition in file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.md5 b/Doc/latex/evolve__optimizer_8h__dep__incl.md5 new file mode 100644 index 0000000..17ac4cc --- /dev/null +++ b/Doc/latex/evolve__optimizer_8h__dep__incl.md5 @@ -0,0 +1 @@ +a385857375106a9066dc97059b8e5f66 \ No newline at end of file diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.pdf b/Doc/latex/evolve__optimizer_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..59395c05d7d8cfd3a617a7ca0fe3f4be05643230 GIT binary patch literal 22284 zcmaI61CS>{voAU}cWm3XZQHi(nH}4+W81c8$F{Bi*w)?e+;dOd7w^UE$S7oHcV=h) zs;i@_$P`7z>6qv_V8~joYCmAu2^k3;jICjKc?lV0&Fn2)EeSdPv6Nv52?-g*t!!P* zod4CfMy_U}W+o1%W-$ExFfOjnW=3`}p4nF_G72P2aJ{D*uj#ntu{qGm*A2gfyF&sK zISE77(#p8&bu{(+@Hfw*uhq4$EwLxvZ3FT?rU}9PsZB)+!i+5Zv-UU)-N{$yx}Y4t z#@4aTPc31Q^koC__&rV@W14`)AwVxh@Q%XWp5=abhK-ZK$tvRJvRjr^209ysq5A!9 zW$CG+R^5WUO66+Fs-1WauZpl$sIkDgimW2u0F_wBcOu@@tDr#}J!nOkzwWXvingR} z(DRvYv#7CEETFKIfb*fZ8umXfHO*^&Qf_=P7B}WBKDdhPFq3~S^NinEbP>-4JC;Mq ztF+W^IWDJ4zAj^#m)DJX7Vd6f7Rh^M(5m@P? zh}2P6(Z*9zJM~kl)$Lx{qRfy(M>sM<*4P10%<3iN8gZCjwUXzb3$WRlzEizYQ$J<- zC9Z9?QCSj@#xbN;5FF2?B1`KilFt54o9O$X`7s9bk__0IHi4Tz6^+ImA3d(W!4btA zyc3|ffNggul1jV|0m1; zssH7fm6`KD^8fVM{s#{K1pqNmR|yr@f5|80<^2!i-^F0W_^(6AARt{|8e4l>X6w8)IVpA8UjRs$Py}gbWJC)+(-c|7H8X z(a6N~f9_?FCuI6BiMW-siz^}Pf4BetA=;$KxEFO2bqoRoAqi~o{|>`{J^sJrz{LJP zp0WI2p8X$3SpUb7|F3cJpV0hoO(sHSE-p^i|Hnu<>hUs68Q$jPXPN!Fe7ZEh**5iP zk`P9RA`L={ID$q(O2je#E&4mqd4lQyPgU?x%r08OZlLJNk}eAr%239-qJ=uNO@G;Y z4n0-7qT7$EMxwEAcB)BXP4mNV_a~q$BV(3@WtP{)_rzuTbe%8;Nm&W!K+$zPbNFJX z=5;^^YMLtwNvq!Up%maE!QYNp@TL^<*QQq6<0+F#;IS0B)0aXxZECryuFu+I&!;Ot zG_RlU`*;$a;p?J#!~{yOMq~$YoUmV+A`pB*=a{3}YrdF9fZztU|E|>TZ~3%A7M)ms zgDN~(wf8>H7Ts2jGBlyz&JVmg?}n3B<5T_cNa5&*PGrMH+}s4>ThR6^b58D-O6i;k z@d8|OPr*qt^;HEE+*FBEto?LcvUo52&hbdW=G5lH+QRbGy6k1SkUOxYju4xR_#}oa z8Oi8xQC*?#jYel+uc%Tl22l*YM1%kxt}wbQc@y1sv5#nhWEvT?lP~gss9F@QWSVzl zPp6KHn$$zPOriCX_)>nXM#S<)@YA*Uuzdq&pmhsy{w7W;Wt{MZk{ro{lESlZ+fX8? zEjxtoyj{x)kQmk&GL@sch8=sLcJ(3sOPP_N)!`xtXfRlqXRq0Nhl&-uIJPd^aSJw{ zRk=ulPy2*l6*w>nc>eXW(N~YwJD4_ZEdcvtpAY21NWS9*B4bOtrIpLR?<=OUzZ@%QX!JJkXfm z>Wa@M$|T(ov%1oGo=8sXFFf09#S|aC_-?DbV@88lC(q6yn=$n`*Fdho*?aON&e$(| z7S99T?%P0L<;ycd1cq_v)*etpi*y_|5)yI!bZ4&Ru#6C$${LVgw|mktdF$)Ds7U-@ zgYdHgU~<=jqxsX;?8X8WVvG}FmUNwHS7M*|f<8#Id2sOXL z+yIz32utvUq;?RW_sIbZ&$$wDwgQdBG-4PaP^u2WJ~)YdAEAk`^(31diorOlL%(S| zuutLIyAm;6+D9w60@K&VbX;D?Gk|z!wF$=AJP_6s=vKEVyly*!;xwD;hD>672ST1E zMu;enaSx>5Z00O2Vr`lOs51|;&od7kg#U15>Hc|Z2|o(Q{d@NEK{2(exkZ!|`H=Z2 z4G#%wrI4yMKEomI`@jr)6ag6J|S@sg1FQm~)wl~b=b z6Fp3ks3+nOJSZZG7PfNOTFuryeCV9sv4dAXZ};YGe8nAljG&}q`M9{Ex1WSYi4^JA z@R%HiLBcU{{O;A=tDd?T)qOjVD_0GIgsMv?+w_@ob>l7xXLcqUG9an{jV)Y6$uvVS z@00$|V&qZ&EXL9~8ZVBR(TF(-A{ZXD=kvEEstGRC<6aj}uDMP-8D{zp#^cKqIH=z@ z7W^c+A6Pmxr?$=CM_7`-jQnL-*4FN_1i3p-5A%3KUq87(L~BN?armL-&*jj^5}w*4 zOdi@JTs}f!vQvO2bXK=cRRP6(CX>tpT4*yfj0wXk3!hQeA}cId)HMcFS1mW8aGgvi zZuk!i5m@Omr+1sY1pB5=(;#{*a{LVCOli&LiB9P?L?&IWy{FjPu)p9^LS%7=s*#jN zpTXZa0bfGIoZ`d13jQ1{`1sHB3?Fq|TR+l~M=mcv;+&6a+rhhEHotxP7}kEyezvx! zzaFEva8A)(jxnLO%qJGIs?QvgR3#eBMTl;Y{=&L}3i(5eyN5}) zI4j62V#DQdkC+CG8ofZf)rjBH++2<5rm4%PEB0a?JqQj2(4BUID9TsW7HNRlId($f z*Uu(g#;&XuoS{yN!YCqpmFIm&<9!?5{`!c=y%BhPlxe@M5!jo13V2&__}C?8IAnYM zV0iqw-9~(Wx%7c%c=h@b_=rEGhHGB9zxqa8f9Hen{pOO!QDW*ytudG~YcN>_-2NU@ zyU&EGvvkcgMVFzK2cj@S7Te09=LGnlV z?WPMxMVxDC)tQQJwG1So+2B_%Dfen4V>fxX(7JKoPJ>*};$8j~mPGtv^Os3Dgbjup z_m+Iw&{;ioEm9KPpWr2*mvd9zvHc zE7WGxeSOW?-&Vg^F{+OuV?;tsG;&dubfCRr{CrRhF>Wzq8P*2+`Lw-X!~Q4*pX9=C zkff+TKhy;Pbn-$>sFmceGOE1K$rOcy!`yH3H_~vYAQgYmU1!(0ajG-c2(uQpe7Z$w zT|}aUp4QH>tl`|Lfrts(ZPf^1NbW!?1H*9RE(=JvXaJR1B1ARM9{e^+FF$<)p==y^ zY2~|iltzhoe6`f5QGAjs34@;f7HfMTs-vP8po)v= zZDONO+y`2+WxO)c8=KoEk4xTeE>J*kr%dmOwV=W14<;#n(1l7>(6rDvbK_wub&&R? zBvE}ouMpknnizRe>o%EeftYB`e#aKay1ueu0SeNr1DZ#E-Rn)wWdL6>QR5L z0}m5Em3aY?YE`A$1cAQ?Er#A}5$1h;rJIYW7GPL(Rm*d?Shx`Y6`Fgfk7w#tDN`0( zv)8~J-^MtP;La#zyHN)w-_HrcD~LFiiwAn`-hj{PkSvhZw_BSEYUq2c&XKME0doYh z(TZ+1>-HCs!LBJIreURu;)Rq6GSdXlMMe;zucWGTUFM|0g3;i1f*Z;^+Ij+c<4b$T zCvP)T+I?#pEa)XVs_D)1e?oc#B>Ur^_!&K$eAf|L#P6L`(Xa3*Nj)2YDjQNG%4aev zBGR>G1EWA$gZ?U^^YIR})Os+K!N;8m79ocNsoYJ`lLNvD)Zb_i(HV3&V!!ikG)2`w z$sLnRrKhuvkd>CD&zNMBfrVwD>8a|+hrBfOr8YHRXyRmZ-5d#_!qi@kxVBgdv~ z%gn}OtIAGhE7!Nbb+TbnB_-KEd|0_wk-EG%Y!6jfQ#82v7~%#l4&F-4BR0oL8e^tvWiN;#8>3K-gMBu397--NJ%mc z$Rr{nInsCxw1u6OwtSJ!EdU8})^nawwnZCbdfpLrcCf}1Zzoc0u8_IYO;f2k-*C|P z-7shY8>gpGF9=z;5U8y)pPbTbOPVRsETAY!SmYLo`f=^b^c#sAe?&11jK;WB_!rB# zuxzVRV|^d;2~=4iOTfgnbH-!8*m_*B(~DP%Etohxlj~vHS(#x~VCkr7&O>R6OPsa2 z)$8KB_ClGZYupTKJubD52~d_qoFLr=gDqEfz`&~l00?2l4c4%D3@Zlt$aeO|QenF$)ciMrzz<+uOz=4#(H<9EU{Uw-1zOOo*SWfkz}c zc$%zWin9wnaDocG)AK_RnJ77&8n}3M0W}b)S|95XvN{`NFfUO8u^6`(Nkcjbq5I=D3G1XsXBYTqZ^3+rg-h8249SL<7%TE(V{7 zIbGpMzwj76usNcqb9Bv_!W4iwB_+0m;7$lZoeallH|^w^^B9c?fYzu37G zg(`!zimPd)28)3#&t9REPNtW;?lrSP)Qck|iysMNTP@j*WtL^7PZP_II@f;UqQD19 z;RIWa>u{&2P&6S5rC{%P~QsIVKe<9wq9lW*Eo>Jd$~sD zzH1cKGa2638h_5~tC|zWS6eSHK1|r23mUNJn)G)K^i1l?&G&kZ5_o7SDp?&gcR}u< z?X61hr6t>xpq1(;)iXHjjllAExkb81rl62qMshggauD~ydVNDU7-1L&2lu~6dcNca z3mAUBYoaau;y+*>KQ(%Bhx0y}CoHv1o=J9S9t&Cd6<$gjpxtEp>lWb;5J^VH7u4JP zMGh*bjoeTx&XE+9(iyOSp@*#SU!kWet40DzSe^lYzO_tHFy zWLY7wf4kSPgl3(vD#&B-b6{D&4sQt+cSVkM1I7L>un{jPyFXL-Wkd~VZc`fXm3 z@I~kZI>FDy5)m55W(xRTgW|d}{8;=>wy^Ts`mwMS*hKBf!yj`BlTNV=t5FS=$HtH$ zxY-8qfhyieOV^fuYu~<~Bp`?)JvdcO7d$&2f2i}|?i29}LaHM+fPa41L+;Hi8wDYs z-AfNi>uD*0N|Bk=>oYKFR)(R;EQ97#regZ0RoEdFc{)`#@Z4{!wO#vto=nJW(@&1% zUeRc59bU)z-7nHH)OA{)+3|cR^u0yX_HO^&#!cCA@SS`EuRA{^ZCaXQ=acK44))hrsq-nfDwz3$1|AIzovjc6^(K zm5}M^U^WYi$D}QK%foS3YDAyj3X!L!Bw2;a?w(9o`NJm89+eBoa`>ea>B9k!LF#`d z>%9O`pzSi(Togjdl!On_TdeV|+t6|Ek+=)-@8ggiKL zQ-*{P(sdc9)}vUXURiS1)`P!3ECrCSG%?84-H;Y4y(Fs;2y1GTwgEoyRH_#V=_^1o|!KoAIp}xB(x@ryDPL@zjc$)vd zPC~%ouaQrxNc<&!ArobbLlFp~vs!@GeZiT?+u6su_A7RA2|OsLpXstduCmxBsH_f% z?O1Hd0|5fsnP7d03@_*SYbV3#F%&V8t^&8qKgH% zH9DvJUDr|gRXnG6sD6Wn_izEHtAktujUsPrK08c&i|z1>){*n7nQzmQtyQBy1c5R^ zBQ7D|${$*WO@rl~{T;>c$!Ewbk>%qFJE3T_j%%!gYiivhXZfg$cAxlbphisZ=N44`>Wh+jthvVV&cxp+c?zn1uqVdx#JB8JJwlzStU5yge?jmzn+P;ty)+ekIn!00uiZh9zL%M`@4f`( zt)I6PWEASY%eLn)bc2PhU12Bs#4jEy6nt@hU-%{#Q6cOOLqPMO4-^@N$$AQ)>rYPGi@+nRP~O_L}+@Kw8^LJqafz zOx-GHiTofNQRnWZIc`EjX3dqO)XP-%EUORM6Ge3lmbe6M>- zeipb_Ik~hEyNW$)v6h-|tA1vgT94H*1MQe=({BN?lf1le=CxefqNQm8#iNr7gG~E& zVS`2kvF9+Z*6#ymp+qeHYGs7MC!4kdQl{$Trl;&?b1@tOxoK8mGWR6<^=>Q}Ci0IG zo&i`WpDF(;aWmxu-DJDkptf0t*z=>QLW2`G@Z70lIiu|1uhq>#jOzy>|6&_kL(}#h zHa<;)+$(L&bQJwdZ4_PH9b)^tY>Lw_?0e(z>C>!ZyQkU*=bd_!vQ`O_%#rZH$`FJ^ ziy(;SMl_?r+#LC~Fs5&Nq4c)bz@}_G!CwaW7IzuhB~|lfpg+EUYO<#}vyHMpP)b|Z zEQ_S2wA3KjeHewWO2$>ukEK;T`ZnG zOlceC0v>@gvnz{|Y-H?q-#50#dBg~oj5U9WcoPXX&2cYp`SVkEUD?;s&`N4PZm4E$TSJm|7%n%T5=CyK$~-z2@$IitrMH? z{NA5s9#XiY(`4(UJ`}j1xcKz>#0sd(dvPgVIAl9ZTm4H{7b&tsYEJH4#$tgryAIbo z=hqw^;RaXHY!We>v*}yFV}TF*4nbJis!Hxa+O3vwp;%tN?t5gP3l;b?ilro=u%OSCfMTf*Jd~cLI=GqCO1(*%#W=x7?TeLB zHsdr4Zy=WjGnqnmz2fL_MWT3eu*hWx#5{Einh# zic@MW%x5%7snx1@fPI~h%{ODivTNhH;I-ie)_11X2ysj%6Et)XeLPYX(UCZyCo|l| zKhPx(?^}8fjsZ%W^2`-Zc-EH#E?i4Nft5Qc(|s_Kt?b&?t(EHyN@NjAB_xMF3SK@c zL4Kma@Ee#S`x0tgszv}#E+@v7Th1qTv3ZgcF{@{D7qI0TnXhCos)lA}Uj2|tp?m^2P6n6wl^N=O_K_;-4O#0hm6Q|Mw+q&e-WWvaF6 zsl-MBYr=vKeg>O-R^_P?yaw`GQcY5?>^HsiRQIrIra>S#l0fS?#4*Gs!{HZKQ50ZxT2SboTXh|SA)(wupFG@u8dqe(N znW$MJ8jJtpA3ZIx8@BfX!Fn+|40^j2F=rOu%9@omN{mzXOh8U(i3v-KYLzupb-8F! zq*fP-qb3NG8XZPk%jMKX0nw2b_U$LwZ6SQ{qyvC$H3=%KIs8u&>C!uS0wGi$ZAwh~iwZ#_j3R{U33U`*QQ5oVWx+6d%h<-b*|QF+HbrAIji>fb zALTN(+s<$FMSf2KJnx+!{xf5KS5TGGBc)3M$_+uUeThk?UD~tkmf#a3Q|)2RD-kFM zjSS9o1;JDuN7S5QPW}hziq`&-LSD1pe4ef*jUCouPBuE#o;_N?B3{73J1N^t-7cEw zlVy)|(+8r<;?fVrJqb6B3*HI|%7V-}gPyya3h|`9alnfPGW)JQyC2i?C@JL8xEtkW z0LvHs0a-WP;e+h1v`4abit=h933hsDm% z{mA$1`|c00z_f5zeh8QxFi))3WWd%mZUSDWd%G zz&I~wBIM}9-T^OX8l(gy*hm)ko3Y28=J78x<-!I}tvk61zX`lZ0<=$00BpA09r#x- z@?u!;8H%teKan=L`WNhR=!CFafmwlDfn7_TTZ zN+gb;5NK58#h|Kk^B~=%=1O12%=_E4{m=pY`)Yk$%n7gyM32)$GBYxhkU(g4J#Q7MnRn&khG}k_ePjOiek$xEt5kl!3IMFk` zB`#p&Qt|l(?@&7JKwbX<<(*|pvWfg2zx_-Uv-TMNOm-D>Zw;nEb`|k)db^6t`VN3z zteMctA51`W4O$OcacyDEZ&gJ%)*#I?Bo}oNB@?VMUx+z;=RgvqM}#Okc&B4!oNX@Tzm~?U#>1bEIf@6XJJ^f zo)#Gw6^^MAKr^<2Q%kxY=6p?%L(k?E$E-}eaL(p_2^UXEMq*9_e5}Vyy4pb_k;AQ) zP*f$#P_RRU)Xqa@Q}~Dl2kq0;h)N>u&7w-ftOUZyH3`;0OC((@5o__n%t2h*dw zBN(9?cAD&Gh3x`bOl}u3RI7i)7ch1`TLNYVxt8x7je;`EtNX0>e{cW!3K8U3Z(1@3SqXY4r)kIvoCYIo$&`b) z#9FD#aDi283vP1U4;&)X{tL2w9HH%M!)mbtpHdcl1O7Go8#tDHX~ZXNU!;5zc?3b4 zl|9TxdOJ3*hq`Rj71BvmMnct!HK{sk(&nK{nwD(k*QVu#$9H4g8l?bVEr?hESHvA?9>#(lT@n%CG@z z5%uln6=?0z4u}lrUmkLh@`DHe~fcD4i2{j3ULgJg7Zq)B)I~^$vWtbNP9A2k$K|Wgr_= zhD}0!?qNcK;}-Pkfo6*a)45H+H--?qMT^YO9gEE0u#j!x@CsFzR^DqPTXSo7H9Q~R z-{;sZ?VTeCuC{q)BN;AHwx!(YZd8-&ehj{f+)K#$oge^3;BXPOb=&t03=S7?`hu>? zOn;Z}E%4NIeCxl_4sP){+CB}l8NX=1Z1g=D^l+tqI=TYf{EYv~#j1U22o$A~3s>QW z`daM{t=jikv1mOV%lJ^R&a%0dv8~641`pa$M&=nSn=&3DcuCqo_X^YZ)6*vkGX04s zRYE=_?hJ=!(|kl*@6b#vH_WD%B8T9bCBLWTfnM}dZ(}1b#Kj<+Pf}MLDep-l<|+`^ zlXe9540i$&2Im!b84qjyrK@a7Z68{it;D&Ptd|~Dso9c=5KDc?V@=rd*Vk_JRxC5u zCBlyBsD_m<=zPYrym;y~|T#6q};oUBj>BtTB zZ+>GJA@zV-Lqg1c{V>LmJ%y;4G;P=~Tv191F|2VmfhDM5ZDB}GzQl<23bGF8UF(=D z=Hj}L{*H@~0jYkJ-b#4aX(!WItqt&f`l@AoUZuipDH^iHg}LXThOxuv4pQ|O=C{x+HN2l-na*~Pf>sR z0JOeH479T9v8bBV(PHWn9y3}D30Oy9D)&qo0Ba47e6l`wh7o*mavjdF z>~aj%_6#pc)>w?~l1%u$o9KMl_%@dZMg}wxi>^u>!pbCE)dp3~@m81$M1ygiH=}cC z^X_Fm%S~(=JSIAHg{CU!{K8P|H5hUhoy0IW306Iuq4i^m(j#XZAHToY_OV9HzvcNY zv}NNNMIsVf6k(<>xqQeFGHrd@|!yV;Gp&4|Tjep;p}Wti*}XLF1agxtUM4lm$w>Nd)2ie*N1R zf|JHPU_cq&Ezx%ZYCxcnC1@8#?9grd16T?t$;3|F$ogds&_P1QP~ltWfZwa9Vsd3G z6<=`P7DuGF_O=AwOMw`dpf@;cPC* zZ?;MLwI7}$p9_M8Mz4V74-3js#{np%Ds4=TV=et&$S=hg)aABo*$97h973oLYoS-_ zfPrv9@0-PN$HAw-5FO)|J}SpND-6$-BF9x0kRQ2E=NzAT7){Q$+clS6f?Q?DKV;X^?n%Tv;Op?h@jH_a zg?-V4p4q&+aY8aYmT_T$NF19(y|Ai&O!7;}#B9P=TTOM1>Jm**{P*2<{Bu6s!DM2b zc>$u~Gq?sSvj=gUnneiQn~TkDg;o7`mQ_7}9Sba)aa3jNwmxN8SJjX77rG-_6 zNNas@3v16zsB!Jq@6F{EbnL9Al(ZZ?AyEUe?Bs*WaSsE#NUG zw;KfJZkPzMlgKd*eFE%p-95%itoVC&*&WsYdC}wjr(>VNgYV_vx!%1Ma1Z{EBRra$ zp-o@NxI^LUZ?NPV9|G7K?XStz9p8c50T|-HIVUQD7ipO7GzN3CXIYz1C)d5V(yg|G zibFhtaY{Sd6BxI7mcdS&6l0R9VziZ#il)FQL_!`_in;zb>CZb%7G`9r!g^C~HYtHh z4Nc-Dl|9p1MV@;5)EVOWsD2CJR5K-thcBJVs8zxxNENE&s)1u945E%tasD!Ax74Vi zV@7ztrBhS1gT*T_im0qf>`AAclbz9eqpA}$D0SxCUb&rny2U!=w}U(quD0|Ra-6&F z{T>tU>7FP6PEQtqz@>t3h%aeB$esfKsPAh3$e9WeBhE?!uVv*F<*MZjNewh153edP zLV2~)GV+*k1iT8>G#5owHRNRIGu=5}3>VjMEu#)mq-u0()9ycE9YKz?ezdU@85F47 z>&um-lTu=CG*MBU!bu~ON57@FOV_gY3yZ072ZcM(bfV4h{#LVxQu1*&D?rjivSNq3 zl1aPj+P)ompmxAJ)TibDOjV?9&62@!hH%+H__!@{s5^tm=kDw*@Cvese1MzO!1wUo zY}?E&-zj`({CukZ0=rc}d^Q*=d%te?zUrPnnqk;AIt@q`6rcpov=#x*E=lj$9rBHZ zmBk>3)H^ntDxHAQO~S61M`lRF88&~jb_%7{urkpz=_&ez-(X#3bqEe9s8`G=YH8Q* zcKNgkVVh94i?xaMsQBT&R1zI<=i*REFVnZzo2ElatEj4}WSEkfsUJRo!20+Nb2BsK z@)DR=z5P6F~D8-95JE*st53v@T@Sx;E zars{<&_Px*5rPoM2qr#i1yEZKsja}}>0A=0r`Tt(#tkYKS0?$fS8y1XijYL!zr{wT zW{r`5q=>kAxrGBnKr={@GOiY0C@|?nNrIQgCdYO|mn~48{5p?)JIN5q?sxA>B@Q1$ zMa^m%H9C~rmG^@#n7ahahYncf$LPA_=lS&~e6G5%Bk-7Mi^~abe0>*^J-*Hn*L)5Q zZodDeWMBqwlc%fo3P1|pe$+et6>!P(yt?U#+}iU#QT6jwrJ--`*-{h$P5|2NTtNH@ zvB<-r)nc?Ew!s=(7j0fh`U}rE7DL^W8ioS3Hu^ed!o<%+nk#c=toNa>wv3PXok`31C)ozbmB^$4><3%);*8hO z6xbg8Cfyi5W{7eSZwd@tzG^#D0%w7--14$|i`;P$Ttgw;xT-g)Q30Uj-DP#8!1o)L zaYTuzC=9_IdLsmuTI!giod_GY8WLMiDx~-AXqNYO@gCu`SqReqw9kKUG{x?c8R3&y zrSi*jE^@a&$l!geB0%86B;0Q%b3npx?7G<}V|&|vfS4jIqpHBN^P<>h4cTc1T?p?M zdO1@%TNi)g($o18bn=F`;eG?rUf1!*@id;@;q6W(i{1UP4#|Io-{+ZcJv0*x5!BK;W8!i>O<`|-dG?^+tqee!gZ zK&bQCSwBMZC)Ib#y~J*~(mwpYZ_4YDrS4sLA*k9v0f(Gl!!k`K;4HTgO8g%*hVx$KfSf+Jk=a1OM*MwAl7Sjz`;oI`B z2-T74@W0b?n6p=W9wxkz3WT!5*1~5uvPhp+E@Au?SY@6u{wy{S_a|Ft_m_V5<~J-U zQo;3*zsB*qOK8N=CLd$!uK0#-|NOD)R(09$jQ?VUv*mk!_r|+iVcEbcW7uW3ZR>

J|^JZL^I&@-}dOtO4ILjqs@E2juF#f$J^-Ys|)cB zcq(kz^=rHlTIevFtd{6qeqrBUEg}5rMYylS`-wdpTaw#9u?tVhPTHcvO1M2JuR2lOndoG5)9ces_$ zJ?65rXL-k5zy>4Th*>E5GAqFwcEkrcH*%$r)-X5ENTa{NE@~bFobtN4+5&1$B1pyR z3O5zz1CVG}^K7JNw;MjiL_$Gi{an8y;bor5kzzyAT^cbWVOY9?p0qonlDADv?QniD95Qg-q@0l9d`>_hnor-pA zwQEfs1S4CB1pmi1O83&DA#iYx!=Zt-llg>-Ou^pvJa3%t>SK80LgS#1zkmDyboEKk zsp!53xX<9d%hvuA=g_0SdwqvKKK>hjNGiv!l~f?gW)ETAGwt{eywbOE@!Zvg@QG*e z_fc#4ijcq13h#*_-t8WxRWmu-NoLiaKDZCo>I*Z0VW`&+_0)$3*6p`idW{tHf;UWy z8)KVvs8;qmF4ON~#v23e-nr`)F`w;jHn7>Ib@Pua_$^d4%RKomzH zb!Zr#bomclL)qYJ-jD@>9EjlEUi!N`#k&$tgkvk)qbu8|g%9UAj9VXTa32t#J$|;s zexNkhCbVM`OoQU5JQqVf{FhnC#Wa8tSOQ)g(u?0dzcUQk$5eC_uX%TM?W=--^iWA4 z)AR-;BdIA;l40u7!xYT+7^%Z!s6~X{EnD|sbR0wJ+L=ihEeBkx-f!f$M+Q(I-YeM< zir0)Gy{7G5)&Ms(k&T2dg(Es5W8^#{5%j)V>*@&@it(poHuC%42<{1T zLjVrog~CwG&Y)?;@8%F@l#)W!!69|qCgDiJ`T!GP=f-TXr@y}yFwufX(8QPmgU28r zQbdsh@y6m0eq{Q70$zdnQ38=rbA^GWEdX_j!klu8-)LGB;UKJJd4k8ex`F_!M_m1& zToH*m*jL)E77RSmZ2(#NjTAu173CelkqMbDFuQ9G_Z24L2M>45y~z0y({R)TfVtEI zxBVM|h~e4d2PC~a)(8H2142_J=6s$O3GsUPk9nOK>^$V>RXMg^RISj3qfRT8kHK@$ zWilWfK=`8Eig-&Fk=FmB`Rp)w({xj4y)fAebw<{NCe<@9lT zh6M=0=|TGK&AYn7y(Fepia&h8+4AMB5G+?xOm zKs;x}q>zR^smPf2J*YkCWoCinjbt-wP2ih9ly(3?*`2>J*=PsFE5U<7ROlB)le=aj z>O1~B|2uf=fMk&;NiTd~0Zs`Zj0M;m84_71krV>?7;_-`bbPk3bXJ z`jsX7-jF)r%VQqV&=hjs>5<)6Krmnsq}7new}>;`xW&Bzj^0Whv*@n>*R>SBaq#HJRC}U)fzMtyJH@CWZizi4IF!uhf^2s~3 zp!3QCXo?Nd$_r0cG6l(i-lZ91Zp^(TMNF{2Cx82$%n5tC$E%CQ5o)ua=9JZb(V?ds z=9B6Z|AFF>`vKFdrGHG~%anJp_=)O|96QH1gw!AA_YLD6o(7?P#S+lB6lS_sdQ`FJ z>&3bvfrqLvn0NugpY5Lo(Mu1fx$War#0>m#E3&?x1-Lgyed6Z?`T0_KBQYG;iN6#` z`=Y#KenGhpBkf~1$Ug4vCZPH9Q1x#|+|Kp`tQ|pIe&cKh>9kAyogLc*XuD=>%ztbt ztsuK&n^GP16>9Vdz1db zZ6^F6d31cXc9nYuW`zR`#9hkG9V`MwTm`(b9WMHiYe4;9*e|bSLdTEV8M%03nv>hc zbsKGN-v@0e8VLMAcJl^@J@*-{Pj`h~l=Pl+FL465O9YJw#5D?K=BO}_clV$%TzbkI z10c@EA``*MD8w?TdUG3K)P>K$@Jb3|VF7Z`S1tq#MUE>`rL%%3V#Y0?b* zmK$kwGU;uy1sqOdynF0F#aa$WR$?mf)zq|@oJHSmjYJmBM5JYu$3?q2(PL53!bAoF zcTb<%VRhxFjoP&6DhK^NBS|pf?IINHW6hOou=vsXUJr~OxqC60(NE2q%?lIQyc~06 zn^V=I5o#+$rmK3@RXD8ALD?G6Ys6ZH!o+b7=BFB@?ko}Y8M~nOd?<#qiZWQ>a%c8( z;97xkqX*#UA%5dR3MQT|j6g%u(!gXDwf$1wEPf_{vc zKp+_mts(q2#c`!ZiBYf~13UOPlQHWy8r>~SRjdV7ReeJ(^7{9X|N@usa*s?DVh=Iz5e4!gRJ|^Y&$jTqw+ZIkN8! z+CxV4P_o>Q{)DwZL;OTh_Sib?B2QmtY^NAt7dg4GGy}gR9UZMakKY1(41bkP#||!z zwVss1?LfrGEF{h;VIAtAJLGfK&=g^j@e}oS`kvwN6B~=MEk$f;ym|(Q<M<>{+j6Sm75L* zT9zOa+@-7C%a%(vfL0vi^%@^f4;mw*bzN@64OI{8T-4jElS@R~N~%ulAVWcBV=5_V zQ|B;nd|Ni+#q?;YKTqTVot2g#YhdR`;*Pn9*CQX#&eCCe`l{J0xHjgV3Dk^>QiZW0 z5;hT6R2Y{AyjYi0F+-nKi^ccXw`kasj1MVRebVtB;3#Iry8)S_s$uQtj(o1`Opmt1 zQKvR5qv32|^$_BJHF754P_FF*7Y-w0>|2>(C?%SO8Dps#TUlbtzGfSYol%xHGS(2u zzGVw#%T9J>S7RteL?VQ;MJ0VRI-Q*FobP}AuXpCXp8J08XSwh9exCQeu6gHY$+3`G zoe|8=a5)3%fxY}lp^yzX;5RvJK`(G?R_;j-H^S-UV!!xyP^nUA=qyen>}c8=PXNJbS+G;ujIwFMv;qkyU~mnyKIK#L`J4?%vIL5Iv=kLbgPbQj4mx=mi!ajZB*MMHf>W}y_E>#LR>)Zut5wf|z zTn^_v9Qi&eKdm_L>ZnC4#;h=grO5xuxd1z+F2v2Z=C(dQDVx{FzR|aKncRy#DL=wdR~43K%1Vw8Gtq1tyR*F`SpOGZSWtKUQDv8{`K>bGVe8cSR86+D(xT^UclI(k|pAZ!+i#}zgyv&%DD>ga~{lCKii)^|9ux1GqpqRvocjYbBgxrdL zGrWqLL!zm=?RC0hJ;!hlHXcgbG@4c5LSRTv{1Nej_VtB8L(u@#Vvaw$#^&{@gb5)y ze}CNp@6@wQbXyZ~kA0u^7LZsGr39i3N84j|yL5AU+w>XKaqrbUx5iIdwkh>q{JVvS#Hwf~ch>O!m@YzT0Ut;#7fBKbYV{^ow=w6 z2+O;C4pWTPCSAzwy6ehM3fayY1gw~@16w%dR0?NM4nMjf?*hNF)MYZ+Fq3+Km!>Y{ zDvFM?&s+rBl3xg|9v@}$Pr|%f@_feGo%M$(z(0PjiTs(pPG+E*c)9fYgY3Tb+I`J8 zGRGOG49OR@Z43&qi0{fOHTeLv3#YdmwwtwMO?5n0ScO|91c#y@d16H3!W~J#7TR;G zsAj4;Ne&Bo@nrYvaS9#SG>2PGZAufk>H9_p`wt1grXlzJt_U z`Sk5U_tj5yGywBpO{^>@r}V|a6qtv3Q;4uuOP&C44j^f^_pUcd>H`leMA?F1+zUdl zD4`fLNSHd&jQRF%Y$-`<@gV=;T)E5jb@@YMnuMj4v2l6dlg^oTzDutz znpVc?X1V3X-xGS?DfC>!Nbpt15dlIE4suaKYSiie=&^tgP3inh^C2;1!2A3w~v2etH+VHqtjtp-6=AU zDs6qgOT5!_IzfT}s&|!7#RJTrp4~BgbWQ zc>~h@L6RW|qh}R%q$MT?=zw(!DQCX{Ag9qaMT~+MN#)EcO!U@*kA+B*{(|iffD>vE z@Ep}FwkJZ@Plp3Nk&+55+PwYd_5}#2e+#zCrF}u-M8!Jqs#M|*6GiOIg~KN<@u}mQ z{^;d=or}GXHDjNl|DtZ(&fD`sv4=DH5#aF*Z~@#;DhITG2da6Kczk7|>+Z&N%;CYQ zoRo;2b_yuF3!hgOHCGf77=@>73~D`%00)d?IiN&nJk z>#?2dqdOaV!si!wy+QR^x7{lcNfU3rpkv*)agGa~c@x1PHFYIxky7l@bdnF-Xm{!9 z>~fuQk%!TL$k=Oo`A>&VQQfHXjrb@zt0JOb30u z)hN;|wVJjnBIuo|w_$yTUETC~@DwcWy_JJutx6jtBhK8Z;*>YhPs`pgnfEwif9Xqr zaRUT?q#EoEt3n;Uf>(P3a9h4L98wlOEL5#Ac=_{b4Gcep$%HB65SIf-G(T3?*M4~W z%X4MF`jZBu5^|b|{K4}fvIdcwoJF|(n(nV8T;Sh(@P>)_bF+9c$g8u;Vibdyo;P)7 zf&M~kY%c)O5uzEu+hy*!>n-BtD6pQ>~|a>*|BI?Zms_TwK{33Wq z@#GkE9=zj`DvLVwu5-EtMI|)7-qIWx7z*%&JP6C#YRMM4`}BHc0Nj&c#-TnVmOBB_ zXcB+TvB4!96cBmicCpp@b0*3nLji|`xevrEaIqM5@v94)W<)nTUCT&{#~n$rzu4$D zhc|kU_Yf|L7kqY~)Pc*F?7u$=-d}ml=AgZy&wI$n6R9b{TYdDAx+3&JoQg|Y57_AE$0bWols(0xvzQ2Hd*5EQ} zYFOEv{m``P;jyp9N1wmJS)9FDKz1}7qJ7Q|7L+@RhAvd5D%i_r`@dCzEQ#^)l52R^ zOIfVk#{EJ&rfql3Rl+bn{z9gd0YR55DxFM0dh=u} zSdoWCHDkxL!tMyV%$goQp!~`TLX@|U$xk_m!o|%#rzolS7;bNFv>=nE#N#`o*dO!)O4w{~ztm z^86$B4k+8}4PK!k(NE^ibP!COjNn(y(6vD6!J;4yB#&eFo221Cj*{DEzxXKK=Bpgv z@dtIPJAU-?W;R=gGJ)omEOQ{^Ltbq6C96T>-rux5d>0%NyjG_ItmdjXI`T%196?w7 ztlk=yWo{1-1yjr%JqGm;cAP6~zQl|R>r?tcj%d#zR*yUDF^o0&thxA#W#qrxm{|K# zXEBogxnQgDXv!4Ec_JpKN|qIND%C$Ry(2 zo=fy&t7l@N%$<^8vsJWptSxiFl&gfz9c8^vM#@xg>Gd^XL`8E|hb$z=Dv)O90 z`CuA-eTemz@Jd;n`H|~>sqYA}E~GAt!vhJy&qBIR!B+K-FSqwv3iP{E7L${LEtZ$~ zW>WE>kKd+cV5{jYe$y zNm!%t+0^hvJ8y!gkB9e9h8k6+YvV@6uc_;3oWto$VZ8}9u4fJYs?@M?Be?p5C3p2l zf2v(=9Eo5A{4X076%RkKIanHrlm$y8;Id#i6bc2ypa?YBa@R=H$HtXlhjn*!#e<={ z8Z6NcPld&yp>n$-ZB{f{8V>u(c~iCVJcB1VI{EB&vumU8gLg9m%l~Xo6VCh+Xns+- zY>Dq0zdM9QGiaG1P2RY2|S{BI5S znC%%-9)Xa7LQ(QC_p|361{f}Bn(RRgi6Yz?N?Mrpe#a0UKWLvqowlR zW6vP}%SkzEs_ik`Q>1mYM}+^L39V+2xM%)*?Ek$81tWfYOB;JneD=1W)=)>M&F#p$X8_Dec?Y|ypIkiu6&G_iUR`X#L?cmqZ8O33m3-C9O}s*c$y@&AF;JSe%{O~y&YIP8Eo*=e)f`t2HgFovJGXuYUVWAomcVNBdD&a~ zxj9kkzSbQ#(OZj+@?+ZQP1BfUz1NFvYu}~{6~)WHk6KyuU3;@JrM@B>Bu^@`DCu0SV7Aw6`^F7(kP}1uxpUb zrJ5S|<=jG5z0eUyiPR8e!I#F(p)<=fqh3-rHIE9C?=i;n)@yrdoqW5+(785-{C=hN z+vJS(;>$69Q_1GR>lQa(D&J}N($OQYoRBcF`3Ux-XRcLkZM?+v@z^5^q_Eb1@RCwwpC^5?z5?{-H^cWpL_jz4-X$O{5QE%)7`;?dPDe?>wf`c?X0c0eq==ig$3oE6I210oUqV7%PhZzJezD}yT zhEzdBjFyp(9g4K&y6zK-gMfj+-pC4yhlhY(#?;Q-#e#tIA4>^}fPjEr%+kii)al=7 zW9VWkVrpz}VhY8_2j%SIWNK&&<&l%Cx^0h52;+ZRe@Fa^02Fp;5T96Og}>a)wt!bv zHId|JBh^%!+iK_kZR6ZAndD+wv=}(RZ~XWN5In6nuo#Sa(50}K+M1~5C!8BYj%JH@ z!6snY-wz7Tj}qGc?6-)n-eP4?h7;O6VI0mH0!>GvjF7T_2sS1KRloVbVruMQO-L@N zzNgZ#TVZH35I2D~#(ue!uM$kMuL>-}i=wu0Sf=)5h4IszJPG}ZZ| zMruQShcb4FubS+7Im4aF0nCtxxNVh(wl{yQVukL~TA=)`Edp;%EcVww} zBc@tZ?AoM#<{Nk@?M3roSxvLes>?^=gPy!bmbA&tl87?XbE-tg@9@NXYNlZe}0D_^QBYW9B zU=ur^mjhjfin7N_n{Pp=2VU$fT$w|ov*o^Nn>e=YRC7{wtf)MlGfMnSDl-E)1eVQM zh5G|qjt>|Q^4mX{@z*qf6sW1#sDjjvP9ee&tww#0K?NwCjJE+qu! zj2d#GFh%2(ks9L0zG#dKWpS0Se^p0U;#O$jvY0Z2o2U7cOzlkm8xa4f|3K+K`1#NH4?*ngEdP=JXU6_NK>IIfiF&w* zE4%!I6#);=e;EHBdP9bP69Rf+K>|hsdSk;3<|6O8Qt;~MM#<=X%8gzbMk`Tsg|{oXh~RW@5r$x+WbYXO zk>u>d5VlzYk;rAuHBT=$ClpW5mqBa>1UAowlyy)vOD?ia3u-0Jv5<80No9j*_svdO z#Y%kk-hTf+GBM}pX6EJ|GUr?KQ6q>!P*&hNQnWf82QA-jeFXCpxV$5UjBSNtuZ-q# zzy0(;wBU$IbiZ6Iuh!t)3+rPQwt9tJby%xyIXv5o|ImWcet{HTJxZg|Ydp1$uM zLJsoEhY?}&$AA|LXz_2ZZE~pcFLIQ&A+iG2Ob8Yl=P%(KaLJQc};O$>V@BU>ydjM6g**6j`jO?gaOwf40DK(` zxiMJ2#wBC=2l)_`WW$7r?Lmha%`=o`rGQN2Oang|&l>`5U*Mh)JjM^E3W@iI&9gK6XG)thjXw6htuh%k~lzd4r;<*hG`J{ZbtMe_7fr9 zzkV^9koWyHCWHKuARMwScXJ%k4tNmH185G^A&5J2OmZtYe;xL6-Ie&MSdkytH-OX1 zYKsa+u5G6XACC*9t!#0ht{>w}N*VcSDEgAY&rDn2S>f$T8ot|~pQQs8H;@f`Edsa% zae(5qSoMsp8Tp>OUV<3 z^_6Gg!B;|*N)#Okf@K46)+~|vw=@&FA?^0Men3}YDDEm0%Uq_Ndomhy>o5gKfX3!% z8OYBG4d7N;TpW5jR}k)qg5^~b(Wk7B*y=~tBQ}#>qd_qpH$bTl@J59oIIN55WEhbo+5TL?+4L<2Bj`rhpEi@6r2P-rYu96AWm28pD?RTUL? zPF9(h)RtZSEIx#X_d~2M5Y%6bs!m-N))OyM&M*)mBMi^81L!1`6IhS#odE6BW2Sm+ zfi~&o=8T(%v(8D{YNdW^3p!mMLq_ZT$ zgH(#r%3#rI>#E>ygi%*gzTZ1AiLHc`rF{@N)hMORfpT>un)fP+peyTd_T@W`yTREj{|ji0;zno6MnQE z)EyByl#xH{cDXnU4dSmJgFg-#r>;B3ubV?(%s;#{={Y&O_z=k&mHSz0Ow;xuS)pd{ zPQG#0e&ag7Ujl3{o^N))Ln82LjyYXZbl&2ZD{`PuuP47deV^U$e-hxe4dqv|qt+X) zPgmSRgtUK5*hxS7nfQ#G@d6fOR)Fs$+qUVH_GH*g?*M!(IVhLgLN}xxE6o^DrZ)z) z0t+cLX+<@&Cjp{FEz#_BgSE7^ zS3}&_w|RAJU!l6DKmpHm1{}$X3skhk@3nTWpAq;J^#rk8RMew&o=H+E#G&tVJ>IN6 z2IIRvUvPLf+J4W|9nWunLx$MDp0)dKK6yP+>;LZh7v6^7cJH`0#A$Ns~pNQ3`sfl@NmM@Ytu8kZ(?ftc3!*xNT zEYJ$r2HN6%=XdWAeon}{p{lQOpZ{E#@ajph3PqXtom0(Xnk?+qld$YygbXNoTo@~D z)O_(wOigTg5Icq4FgupJ793^Pig#OhZ!85u6lG{m6cuT}`|hvxFy2S= zPU1Mf_$$drX`pi_(*L&&DA(9YiVN0A)3_`Qi94PD&oUYLHh2BH0*UaX z#fL@DZQjau%szfqJ!Ye-Tu&pa^#zF$>H54d+*0c zN)>1N@oYE4>Bc1ZFu8vK{^nQz5_tX@Hqll7%L8nDuWD9JhL`Rx7SB_hx7eC(&#I#< zEW3^>#N6zNpcitacg`cr+#eD4UANK84vbg=1XdWOQjK1`kI5geG%D6E4v-l)%IHi~8=TJHmpVfPlCf-WUJ01n7v@ z*TDM5*7{SeE_^rTtk*3NTB8X<&ooC$UOI4FdoU-S!O7 zhj;!M3r0~?FXv8a*ZE3b+c!W2*Yaw;gs$k5# zum=aR0MFe+;JI|fbELIxOvt%Zb{@=5lCETc7h_uM#MYSA8e7?7Ruz*_GSS3S1Ih-F z>VD=y!wJ#MEH3vE)lr4^nb1RwpLHGhZh@Zw+aCC2`y<8M^~J%T9l)d49)8|eg!i*# zKD-lOy&vNrdjfO#eKBPnoNJ-fcmHSUz)B(x%K-u2r$Hw$T7r^S>6EyyalfKcw1F2Q z4keIqS`3h-0Mafk05-s4s;&g>vHHW6N1rAqjP%HuW3qKRYFvC=b;d#`v{j>QbuZ6l zUD6p41MtHxRJ4TVfD}*_ErB4zOwDzWB(#JkfC`_L41q!_@v0ydht%_SF0^U7ZYKgw! z14?%e)FfqK28%^tA-i5T3n*GJu`>)8;kP;lNOIpeLDN*p926g*?QbekpF*1i9kr7~ zj6=Dhpf({25*3mcb1S(_^)-x?8V9Z`As!_yv^1LlMv=ecQBGsPEo?j#CUdl|`VirA z?{fq)En4i;^Nuj`qqZKbJ7J=8MNVN{6*Ou}OlEMtjRKaj!8`MH{Sb7if!ew1$VWtW zq}pRm+c?Qf9}Yt z%T!lu>$%R~z^>xzw*AzX^>Ttd?SA(g+pNjIx~5ww8f1e;v<~KM0#Hz-bNq__A`wA{ zRRIyND4+)XROx3vKvZi52<9P3U>0Bl)gXIxgx6d~-Dlhmc+_JIm4pr9^mj2Pa|(no zUd7xl6zz_Rn2Knpyzs~@+evQ(4BIbx%QyRpMDkTcPOT}IWQTMm zk~oFbVvfG~(yG26*1a)Uy%Lc6mimb6YdG+{Zl(Xqp573Kh`^r6otFLSNCw-O-bV&_ znMb@OB6Cg%;9xLG%Yj4B6wYXX2e3((*$Imv^OVpyV6V_# zN;jlhmb@T|#qKA^U7j(!f$|GBE_SXKZbBBE;0WU`PaNOk$R?C^jB%ubPYmw>w}F?C zca~olVV}>LAp`=P50j`GViZXLNLk9Db)<+mp`&JI33r z93jc;ab~BgMuQz))G%!_rb%j6(YD^`%MY^|d99HCBv53?q6Ikq{Z+_@zxObFClRRAn?jn)tg)S1tsd>2p2S*Fm1= zs5Z)6VBXVFPIy>jYp{1Cn7~~@P}N+cy9o6FX=hvbAhqV80IBF8RVBh=g9UiDY!bDa zfeCm}7XnS*a7m~WSdVc44L9`I=ukl4^`~BQ?RR;%&vpFi*6~ze*8jTN@aw+bD5lKx z5&xcVA3^HykBfd*_FMxvFxWOhAcRp4P3<5oUV;KnR#htH1c1F}2t76eA{Yk}94o@# zG2F#-x9D{xmB^xHWmXq!+{!|9C-bZ8IMcbWgPRI_Isu^@Fp!E!3Yv;l^q>a{Hk>zAfRrE2e@+a0dWb02VB; z&7n!~mt=Cq1R6$@vs{2}=XUzN(iG;~HM2!HuLXEELpl};e`1L5f zrdnytdy(%16fsI(QG+G(m!|J-TZIDf_%oQ^z}G{>r3d4+LOmEvf@quSn}OHc&g^ye z#qyaPATQ{g#CsLxB{L_9TSzL;JfIONK(bI6T%#go<}1L2ta#%n+1d)!dP_)b0T9M~ z1>CHKq2(*RLd!%z9szH47zYsGzzFoc8C1kT#Pck!MJZkN?7)&ZMvZ)U3>wv;30v6j z0*h*vcN*nQ0n5xQ*e_*TIfE3!Z&!DI?T=LsH`_||Pm zS>>(P&2bz6KGqzU@UQYVMK_^c@!b(UGnsCQb_pH=92EF9KhhqgMp-58rS+NP3!>B5 z8*J$tC;rL=n_;_8~mKEPyoM09+DYz3HekC4JnH}=GL6V#5_I}`p&0Yx8u zKuOFfCF?#*n=@OGs}hZK_W7hNjEW!e*wJqat1&~~qVx;X&bP-e%QcqKK!H54^Jf+y zC{Cco3Q&bMS6gUNJze(@TQ+b?;~)Y>UbwJ&ya6N--GX36Nrv;-a;z|TdkjCqAf zuwReO4zL4xzWcFLd48WocD&(Fsh{U;_8Gm0CFuBBYVVtl`B-T9ZLhbX>U96l`M9KF z|F5Ht6Z3rkhZ#^|O4up?xi*xL)ILHuSc6tzRCYonB!vWg?kuQ5@~3!(X%sJvM(BBG zv`$-&1m~hJW?$*Pdss1X){yq!1Lgjl#S_htA+6w>8n~plS$dRHLHgh+qK?r!t2Md@ z5wyrNg@hu|ijtz`lFZm0QAq)h`jZi?iawdyT)e5NWxPH71UxssB3vZ6$Z(r_%O2A+jp$X)AntF81$+Ez60KaYZ62@eUr^yiBDt$i0hy8hXpxnJ0$`A_hu zZCwqZ*Hlhj%>lqKs4d}uX}~3s5gZ9c2#MpUDl_1fJ3LJ7S}2^^B$FB_rh%s%U1jGD ztPN$HF5F^Fj%%E%>LRfgQ9nptl4M>;<9Hz^aU6P12I5M`JXI5vO;dq#paD05Y(`yOFQ!d7Gra_(1jSSn^^~h zGhcI_V&$0%59W5Byu?_EzSzQ2S6HbwrP}i0lok~>--Zeo$4^`6DW)*T-28_dumB_- z(v>@0UwHq!zk3p{O_#5}yMyk1pD$y*eMwYXufu-{jW2pHl)e39>21%gOF7gNf4MO! zcw)ZZw9L#S0$H4P<}B%hN{QCgK%zw(lK7WWC6*^$R8Rq$fz?N=ga>dQ&YiTBMf5?? z)ak{K*Y??5CvIvs7nrs|8*6zk<*GRBlSd{GH*KnIuUl=|@Yao5aa(h)6RtC4O-??8 zaDQQt$81%k3%M)>1?T`kCx6nnQ@)h7`vBWP6EqS^<+IX$zD+Qp_V&B#`0D!=aLuMO zkv}TM7OlJvWQa{`1^O$D&a0{y^(mR6!`vPD%*syz^eZKm^#W1DhmKW_@az;$p+f1f z8m2a~g0A__!F7>U6xEG1a;pbaPi5PAQlgP~T{I6>sjF_=i>+U8l3Y~RjW?eaqw&e1 zZwFdYeRsRdUpJMjgd^5Z$xr1UOus0OL`(mUR>bi~5$Q37Tcc_nbG{63IT@yQuhDsW zKaj6+=mKCcQ>tJUI+lLM52ok+A@r;8HgT{pY4(<~a4`w<)^jj33G_C#5Hu-npZ8A7 zfjt`wXAR%w-(Ee@zCQFpw9W1nChwdHCys)>CZ7d@<@u`?0_iQswaqp1)o_NNJQ4WJxpq}Z(UMN4{LHeg4ThwG zBJK$MRB~PrO{p1c>gH3 z2;Pd7Hqx*drSRN>)k=IbfuRHdM`$zwLMaZeUDcRF?Mwo{C>cpk{S9gCTyJ1AmEq8} z0U~C#gZZ)ErdG1+!b)ouAkC1U)si6Hlj*2&II|$^uu^K`r=9v$-M{s=-Z$TPmb-6A z&gZ6Np~G{Zx5qvi^CIF(mz_WO&kuR0BZ{-eu&VFvvv1+3+l_uuUzh1s5`N}OOl|)k zJ|LW@{df$pG>9Axp}ZCEr#=V#^qiBKvWrIcXY3B29DA{sIj&hBK`7>Wt2t!p|MKV@h=8Ezh!+^gmcr zb)xFCH-#LKulg8nok4D)NI={z#GU7z8?l}H&z{_2{x6k)QTBx&`_CQy=Kz|xYlvf@ zaG-Ah;uqa~(RS}NTMwEXN76=SMD86>Y4<_Xd(uPlT@f0i2}0aqZ-X7v>0!}sAc$pQ zk7cZ(T0aHc<&~qNFbR7c2lFcYcjZLH8ItKUEEfr$f`F{;j7g%f*RrzZI!}9EX9KuJ2{H{Kc@*OYMpdXUz3LXC1ITH>;=TIGot!H4FKr;$~lh}D7Mix_yKxo+`7PZt_nzZWnuy1<|s_Q*h?6|>$L5M%kMVdH`4OApH`E%8rK<*SR8yg0Xg>lT+r)zeLfG3ajhPL1I<95 zjR)DtdDO`WATb9fmAh?1m}}~Dn)mg^xgt$|=lc%N{A?oDc+7VjC09^NG87^`5tP9= zq+w%lGfJV)L>}yb>k;&!zWBfI&SrN1$YDqj#{>$q6){|rEB4-Kl4u3M2FwoxalYv! zCSLN;pbT__x|>ICXMsZ_(Ds7~_!swluf<0h6hfRtcbB{YH94UX{AWo~9@hu#>Z##B zKJA*t*u)SelzejAIQLPGkA$B-AMIuWPOAFk^}~zMiX$gIwIXJT0=7Jd<`LWxJgOE( z#^DLtVPx=)2R^K@vO98P(au zVl(sc_9k<;x3|A`APr zBy>$=LX_kkO(022)8FZ!Tcm2^%xah2O)WB;2OCAYR@`mR6rSQQHhUVh}>w+HoOOgTvk!5MbL-u83)U_B~sg_H-%h@f{8+~+Y% zQECO$3CHG4#YAqSa54~Aul*&Muem7J9Rb|XzbdpJ9%zb0he{@kk^!vBGV>(I2)(9n zy7IZZ+G5>YQYq?Ac)y-h(crwx zJ#MS2+^ZPA{=e&wlak*#_O@^1@b#N_$cFy6{5RQdyVaK;e7D}0pKpP|&NqAy8;$94 z0IoJby}i&!{e(W4#d1G>@o3NxKn$IMwO*=-U@B+>|FU@@>%4w z$|vimm5(@+C8iHdrkTE(om2C<7j;W#_lCm(`>4*TXrDz(MODv{d^yJ~o$EDtU_e6+TT>)X$SC^%D=o)NKJFpeh;ysplxF6~cl4MN_ikwofuSmrj&a-4$v~ zOm2dwhk1?t5%X-wg2Wgo+iTwY+MC&%FQ@=59#9>44fbL2&`$vI2W!6uMH^&c84|9( ze3B6z9St}&z(uZVboKOkmT@kgLB@d3Q|~NFNfGO2%X14(?p zB4}>oPU2)kfG?>pn}%ubuEr3^#*`SRv$fmiCv;E2IpN5Dt#^EV99J<(NSRnByfds0U@w3-OW!HU+X?4(TDI)fLZ zm7SZiJo4O7f#EV($6f`FN*W^XB1PK$l9Y=)joZkOM16fw0|P`c6Ws1_Mg$|39H)v! z0P?U(N)vI>2SfB(sR~db{z{D52;3KVF`La+Nc1S;p={+5vsr0P0b!){MWxE6!BdA} z4G$)?yHtksc_S(gI$+D^x~70hl`{jTx_o4-!;}A(LT;J@_+5z7XM^v{+rMpr4w@3h+)VU>1nQ z0Fj>_=R2p-$1X>$atLVY=L3z}Q7d2wh(NWr?4t$d+4^KlX}H+YjSgvPt4NoIaZ78; zuA(tWlU*Yjt_K?m2NKjZO9A_qG7Ns7jy8x@ie*KVNj0ygRe2vKybzIAjkQFtJW)1v zn@_x7*Ro!P8h2=UKhAI_T=#{_U3Hwa7tLK-GTOb;+j3m#7WM#a6t)hVm)(nr;2!m-IyBcDiT`-r%M7`0FhV7iU^#TWI;H~ z&6*?Ml{eNcN-)zB955Jbt}+--(5TucVHNKU!q+)9tM0l>J^iY0?^ zVF@>G+sBmvR(Y)pjLm|gAI=f@BNJKh8>C@fL4bdlp#MnuRJK3qxc-D@Euf7l_;!Ds z^R#BXqyIg46S%Bg^@oJl#@No{>TM<2-(Fr=jM9FLBQWmz#Y_jZdOGRN3C3M;>z|)ageNU>h8tY8;?v$=_=t+TC(J%Y7=wd|rt1iXhR{MRh z>-@pugMQnWT1*|LgHwCgeVW-zRn((HZ9@H-&u6FR`vN@44oTvBDEJ!0Qf2o~+zRE|!MYyzX4Dj5}>V^$4C z(~XMeRC6e?Ho{RS<}cNz0A}%vRMb%jmMi4|=$`EeAOz|i#x$w*Cbgq!Wodh=mXnxe zpS+tTRhfZk3l0|Qh5E?Uh8dJuilYw^ z4y0%hqMVAd*FttwSqVwL6bW$L0>^_Tsbj?zW#sx^osPtaL9Te@Z(e>h{Ly_``m@nZ(n+N2iU&!!5y=g?7hpt6M^&~+ zX%ohz?I9^$HKZ<@E3oOJ^tw|GU<>1`u|{cDBPn+3iHWi%Vr&* zK>{joBE#vICS|HOAbXytHjv30jq<%1oI;<}Te&h{#V)mAqC-$l+o?0NL z3{kE2Ce~@xCgD5{<`A(s`WYPzMi{p?5%4%27W&o1FZ)g7N`W`STsT@`JpR7+%rV2+ zr+QY+$|lH7RS9 z0ehoG%0S4BP*)He570gAohuJgB8U=1Eqj~%d+%PMjw4VrgqjAgBMRR!=%9wR z6i%Fmm9&wG#PmcB5fxpT_oYqd(4U0S*;HBByyY+#96ePCvz|DB$)Cz?dFVI(pz}Zu ze9XEcR?)~NBr8bgYHCdd7bPx=gqkfv=QGhN`7s1fnacynM75R2@QwC?uV=gD_-D?;#VP{77ViOzNZ(r3v{j)8#dRz34Z{wu@r{`Jy z8$PYIUUMl*>zn;^eW#{>$^=OD9!qTLPqSY}CLE?!*|B6AmSlaO9&*v3+rDpLKG?iv zU^G;9s2d^uoq#jyV5Uh%>))})Ham@Pw-ETkMS;N|WZ9pE=4c&_+&Km9pP!`YliqOjJI+(y*n?uF!9NIR?|rU<6wuYvYgj zB){T%P=v|Xv`>9s`^aPO$#44JHt(haGwG1&r-TFDq7}6 zfia!TK)4=0G8<$!C<5Yvw;N$@1-N_GF@eSTPlnGRZm`TvgwZNyp)jCO*0&`l4SzGt znpvzVq0o#&O0OLM>e4X@SR^ZR?h4mh+9iqg-*tJz75a>ep!rUQWpI51<=FYBFUcE} zyCwupgOA3y+Qr?Q8YA4P3ABP|{ADcw)>YI?!RMJx0iAMc0eA_{zg@&`+604}jf>XF zYngpkc!mv!FlDuy7^GYeC(<$ri|}nL3;kaeCaB`X#?m7n=BZN;ZK=)ged4{Nyaygi z{!ArOaRp5=G{tCiKb*KzojUB|o=cB;>n+Dm;1Gn#z*+NIlIT(D&)=}QQ$K(=$W zwhbhshNLDXmToS+@rY+17RUT}=$4wbgX18G=AIag@k`92UEhCxtSScc;*4OTgJ8`! zz5s?O6aZ{c%wXZ!IfY@GGN$JZz(%DrMDUEvMkEpIm+H6C@E*}HqG;2S`A(OBd1NCSOf#g@>L`P05qhQ6QD9$!Dcx@&t9&8NVG+rB?F_-Qru)3}BCR z>_Is%K^`B&x3`q~Ya0aJ8?f8cvf)wSI?mY>`r)oxf9#KFor7HabvfvpVjxoXoMXGB z_e!y z9Le8N<~l>kZlwOzAblLaSXjH~|B`4o8C2|Fl8;tc(3U>F$v;6mZqiFgB#O{bNhFX0 zA{PeTs1=fZ-ynW(6W4WeQH6G9Ual|z7CWhn6;|~Or6&5`Nc4yhD@5^~2ce)VRosIM z(?zcqQ$?UqAx{V#CBhT6dvCV4SUK=U36@j>E2QQqF zQQ3>E9$t>aE{MH*nNsgawK}-3-=uII-4=%**;Dch##8ePd)s!UsL#=-w$0zB$j|Gi z)X!m-VuclhB*<3^QI-m3hQWxU!L-%u0UW58oXsT)nR3P!RRm?oNSp?pbYvED zPeDzR1{G{nCfwU$oq!D{J|(hL8RjXtn6p!`NlHybiKn6dMNDGhCqqZMU>oj*LAQ;X zBBWWW(4b9+LHM&_O7yySX9wJlGiQOrc7(y`(D9wTt8~QHGoU3Ls7$T}&7VGZi*Pcb zbG9tor$Gt9A?oFAEzLg-bBj3D!uI@9WM40+KFWWsegB9oiO~NqSL;rjf6;T8rTT|G zfxFKuJNGvh_`3kfq6!$)G0*4(kN%OBu2Cn0rE?-WQ#KW~-BwB=mqL%obQtX%%dwJV z`I2~>*mnr%@Ok`Zy!SrPbCAcgZ0Ex6c^ak$MQtMbDfK3`S2XalQ5_9*6m`qSu+=HF zGf10;Moq0EihpoZ2eE4#nCZn6bw@emG|!J;k@vC^;tz5T12g+!P z2V&;As1mM9W@lzO3HQ(_hDwmco)MBm5~fX&@sfmK|Dtn$VPH)X1kLM(TXGCq5nG2o6Z&p(x|@sGV#NwU=hzW2I*d@cBzxVOQtRXkMwQRyo60p{$k(m z+Ot2mU<7Vs%?U+GMUVH6@;lFy{D!--{#~Eny~>|lZFc8Z8{I9*DSH#%>`%UP-bePk z{ibX8AJ+B1C+YP)6L(hDyGnd;9>-#)Z|*X;I`tR9PtnigT)QZf!xAiP0J^V)kAssX#}`VzrT(683RkeRU4ibx_9?k{ITYM@lcPS6 ze6{60LvM*6AU{gJbw7pQ_NBg^+s8*fh-N@{qB(9yFnR$>14JoMFU2Y(*fktw2D*$X zY^A#U#xRXWFykm*B!=Z@r65qRCxt%u;0z~i+U zz8}qU-7QALeLX?Lea-lN_s3IiuG!+fiITH{+<}t&eS`a*Gn4;(*Tmz#bTFagJrkBs zo*TQlm*Ym~U>Meg6&=?l&omGp1kna@?IBmOs&=*$rL2D(jeVwXdD^VI-tMxz_72qH z+pfJGmao)rF1M+?X^zHVz8>Lw72Q^M(POWFqP`v_4%L6(w5a>rzxzf~_Gg2%MZL%F z#7jk~DfI0zM?N-GL(tJKs1u1gv_rt54m9_Mq9zh?=zxSr?HTc_i6dUo1ho)lyzB-& z6RqijbVcnY6%k(_9NM}gUQq?%h7$9SbA2XLrsn}&F^uQ$$&cZ`@y9^+AlD!tc?Am0*Cs)Lx*lsF*-PI@B$e#qJCU_@G(?;0iC)R{57%H!RgVcXE)4Uz z7HFIkO|?ZJvZ4RcZ?A!GoAt(c-dm{)APvd?l?)mb>>$RLumk>>*g?7RSI+36l;Ll5 zm}d{o)Yr}!k4xAz&l?F>{g`PmWriH8ej!jwZ_rC>U^6Ugc;#6aLBbc#h*}O=*tH~h zTRf5RRbrRF$M`l|fjOdXUqoI1gjXZ+z8k6IP^DQ^?rVLO8PZoQdsm!( z|I~XKVrY0?JH3=`(3U?h*ZDD;Y*2nqDdDN2hWXsmcBt7j@$~%Z>fE5ezmSqBJQ3+? z3&(B(2hq($p3HdE?bBu4UUCVvMLYugI2THU#|y2>}Cg6U-uj2x$&W1@li&}nFeJ|9cuvw-TvOe7|>2@T$wCjle4igDZijqe_Y7+B2 zeBrh+_G9#Rx#ziLBRBB-p)AqCoB@-PT0|*@gp6Pp@ybDpNRyz%wy1(8;Ch5_sPJr0 zf*W-qxW!Jg3Gx8Y2{eHYn-zpPvv{j%e!Sw?M+=+vuZE9zb@q`Xj- z0zL!XU=4NY>Dlq45MVfWg%t+Si_(FpHos8Gke;{6c8TA{>gqdz(+q_~WZSd-j?-cv z0=50;29SevUK!c>g@h~J;dM}tE82x>8W?CUT5G*9F~z@Lxj0!tLhc6E++-ZR7h`WR z*DvdtUijWL0$ga!{YM$-<60m6OoeK1@di}|2sJ~5FpKUSrDJW@2r#rzf5&L^uCu)@ zil?Kl!yc=x;uXExP9yBsjh{U7Re#s}SoY!dB%?stM~83)Cx(s1#jjCSB7@!6wQoH9EM<0<|{qz?ojW)NVAx!B;V`n zL+*3TY8Os_CjIrE?;!C*J`B2K-dK@#_Sc8%p1=J^O5geW8MWgF=}}_v(^b7OsF$Vt!VVp@P7zfH|iCkj|wZ!Dh_~x+#XE ztUy6Vs?(mgdA~flt6rP$J3IDYd1c@3?#EGa&*QkUwtbfCEo~3D!5S%nL@TsC0e|np z*EULgOpAf6gTx#}9h{%M@6vsYFcfDMPRCv$0e%TH8m#E0G%0ww6(Xp&OFb}2=A5rBf-fo{A{xELeOLrE~MJsFo!tyO)IZA=bQ*&{dT)rh@`j>(jqRi2G8!e;&FQo=$boy09{f?oe>4OI0A|qWL3D9D ze>4C3Q~6e8o4QDHv&NH++OWic9O!e>;>of4(HmU1QT_qvI)ZJ8#VwZxO%N zXzKCrJH5W9LfWctJKtC>hP%k@!rUMytWV4d82Od1n6*LYS$QuwXZm)Fr$`5vF2AId zb0s#yzv@`!?~QL{T}xl-Q~lm?fsZx_qdWpB#dicBrlwCl+K;GX2n~j>o zYglPx=yMd*cJ_Q+PbA;ZBIT=he(}w33cI z@jEfUer;r`3TFxuu#SA%dHVB`z559K?}F~5mY=`>gnPNhzb7oYg2$@RWJze;0+953 z-C|hqy5glbZS}2Ur9^hI-47q3b}yQjqq=ccx*5TloXY%0L}l<#PDI9S3!032ef+9E zMOkwl<(FI7jyEB$g$XA4%mRFhT*EB2<%Y%^Y9s5CEVv@8o&JuiGqzV=If zF}D8{?ALT*aDCs~LNr-j*qJ(gzdp(l0pcQ3xz^=Eu4_c7CTh(&Dy={(z%USq^}yes zUBH%qq)plywPwKd2Q9ngMZL0y{WuUvz!+KqO1C(6(~X&HWfrj+b z_b0$jIeME@IN6#5-lS`B@Rl3QmtM{>mnBS>9w16W^{Fi0<%<}B%t{}c#yBA!eH}Oq zusl8_?U8xSYpSbF$pfEGg&c4{{opU#3F4Tn1W58^LYraE6Ane%3VHHE(f4BC)O`3oBfF8Mhr|Agjrbwa&z_#&?iJyB zkl6)4XhR*7D&(Eh|K|TPbRXh=LHMEk0@UG#UXr%!jnMz{=ZDY&_!j%ao!Ofz^1b8l zgq+=G7AZj>JpdqzK3y_WJrQBLA$=qFzQiC4VZ0Z_la7TZQG`-ev{8JCDsVatwI2e6 zC*Yqz7E*w~f+`&NpTGXX{|2am5{877DybvjMN96wh05RWR)SO+T&|ew_RKx~>4!4XYEacJ%J$ z^tb={`AR+ux4?gO>P5dJ4M7`pCHc*~3;*J_K;XI8ePZy!-=)751M4ouwerKS6^(bO z<(bh32FV2eYRCKNFQz<$;1gMx`!IT9gxkyRXq=lse%JY7Sc)o8YX;#BdO0-oAc};3 zd{BN62e<_*jGem}szAODtOoyv>4{a{cljCrvg|*$Vu2i4jP;9!cl7Pa{>VBLA^r%) z#iY;-^^5ZhjoSzL0o5d}5UMqRU_aRfnZl1c5wOn>BIh6cC21RU#ePNNC*%ja^JV@( z%e8%yegcHs$KruC9|vfP`U=p7?kdB|!;L~KEM?e*7reX;OlS?SIHGt3`8EEbZfw5w z*ny-@6518s74PeZ!?1*@AKLA=-|tIkG~s*4duM*d{lWZcYXxPvpq`g{l6^9MlD`@u zzJu`r)eEv8(Y|lH8+wD_3zJWpH(}G1<2y}rux`)4H{Qz{u0OO#Z-sD=CjZR(gnRui zyUl;!_(Ed=zB5FA`sq3YXK3<0qxc}!xh>{52Hb2!uEU5sJ}r>5r6r)AC2BkE{3md;I@?7dwHhhs2MHYFFAKdWrZo z#kRvX&9=)nv~Jlp-!%4CwgSHLLA)08j(+9go3RDLb!YEPU%D53uzs-aKYh1AWDf-> zODez5Jwn@(r3#5X5IrK|LCrl;W>}?9ygs7oh{z5iKh(6q#I$N9^LjHUv^>%mDStaP zwCM{=V~?WhP4%Ixsz4@A3UvQT!X7N|Se@J4`dk~~5BvE`y%sN@Sl)gf0Lp(T4mnLR z!yDx{Q9IC9u>HRpIS;6&nr#8o2|aYBNRTcqgiu0nQUnAA5m7p5fIm5 za~ke_Nldm6sldC5(9NDk9Hg4SC6II?;C78hOV0<6URNA{N!qvS7fKt^aW7B?-}{?% z>WSPMh2az?@sk)wVDjGN%za=;1^)*Q(q%XCn;mVOZ>aJ<%B3N^E!;OqWx&bL2w?b) zDIIvC3wXgEM8zTgS2z8YwJoE~sSQ_$@@}W-dSN93=?Mq%AMTk<>OiHAxpth6SkMkf zeoz4J-KWDY>`XsS70uzrf?Tg7GmL=@!#1WnFl2LiU{1wQbc|x$t+@b-A?CZXVT3sP zYCm$ROblUO(6M}SaPs!IlVxhyl$c@H63tl4km`TUj|5qbk;N?U=fs)rk&WA(+c8Z~HHw zX8OQGVhW{Db)>A!t5%fkT`2R@R>XK8fkR^jH!Qu#nxKCFLSoB@3ad@Y@|tW|h*Yzn zHJTf3xbU5cueCqrm2Fu{%DH&szOq89C%gl(s^Z8{_lGL2Zx5XrSU6S^CsINelbgbx z5YJw$lgqPSpfXkFVyZ8-(f=wkVS9B|B-aSfP(!S=x*<}zP$rnSXZ6J`9q-49M1a@` z;Yek@WO{H8E!0Ggz*UG1e{iaVxY?lQa_L2Fm+j$K)V|zZxjl=RtmmPwhlKbf+*f_Q zEV~0$q7ny=1Nb$!vN#6Q#sgiJ(2i3|;TK<(mF8gEuC4kFr!7;-bH^GNwSfYbRQoL* znJXg;1D2xOmIx*%tkVjnc!v}+N9v=~3z|~f^R!;iX|f8#Y!W;cv2kt%S;t$ih%8W2 z^fPZ@0)xkT{k}Z2Pa``mCyz5d%5IrC)rLLVfD3l6&5baRC(U#1caZBB+t`aU^Ad+* zU`FJcu#yJI8-$UI58Y81y6rWz=pMOm(YNHNHVnKjUtWL)dEHdq789Ug~da_LZ`zz zOK_Smlj6^Q6@|I;Yhf{j980qC}qR zjsrtF)kH`JST3!p&~pj1vx`;Jfdwfly6);kIJpv;*nOxnw;iO?z~k$l%-`g1E+__M zbN)cqeefDH@n9vEDIA(-I%<2Zyy5bloTcJH;X&QQOw69&RNsQO?1F12u}|dUm8A%Z zAO5%RWd&E^$$N%=B@$n#1lj}^ESZI0yGUvSab6OENOWEA?2FQ-pJi62V)0+14tgKn z##DthA*)63&m2c5I9=oUsA)XQzJK`>yU2Lb*lRBLuHe_&`$#@49^?wDREyU_$iAc1 zrK72aQF!U-5(O?%)&d!w#p=WD?QxOHq0x~lZ^G(lCLph>wIyeCd9Whn!^xSA}+o*|^gOchdW#X!n5T6oD9ZO4Y3&9ns zoM*F1)GZuw#OxJQx73~rr&Qp}*Ll60A>t{9g>NjZ_A6{-WuXPIkS2C^vPMpv6^g*{ z;er87Od^bT6X_~bW+9faTAUL&VP!Dqzg|9)UKHHMHzTYc%sq0aspXw|UAQ`hY~J|r z=#z&@POjCmR!P*un?*_m-v^rPS+P}#7oGvFwcmg!-N9t>I8zF!jnU)y%8PP6N7*RB z{yGzf4_{!bllhgmZdnyUI4?>~YmB0VpeGjG_vjZIxHp!IpI9hFY3N)mdS-68ULuy@$3>nPBI^PiKQS@)ZNcBGm3m~ z@iD`{itSqf7fdspHhh7` zxw?NkpS>tXZjY_z+G8K}t4Ta_hEMx%)cNjY&-K9hFhM}+?R(V-2_Z$a_wH_|irO3qTjRp!)M-59e@u9dKoiJ^YGLjuSnR%I5%Mz6XJp zKgg^e)l*@|<{WUNtf^EGSdLFKa=3_#?y&0D{x%Mb)+S7F5r0@eIK6X1jgs4ZDB z>_8L{uLJanv!%TNXcn@`#6s}SAIu)87UkM>->bd1dms@9=h&0jW87|zCX7uvrp}d7`|3$@67}P`LV7I@>#OnJk$s34M_mbM%es%)MR_6mUU=+?fi)3+M-R zhB$E$#jUKgPi%9jCvCM=-y}QG^3}V-5 zfuL+DlZ&_ok zmVd|^d4X;t#jq`IOK6EjSBgE0IhtTOGgi72&gP^*4V?zHXmHMrq~a%7&EK83IIr7r z@;|twZ$TQLiUZfaT$KBMQK&fr=L?V%!bbS3i>h#mst~fYoW_PU(X0xR>e?^6q{EBhsaqx6Cr8+f6D}TAv z=wWWce1|6C_MU%oooQSFsqF4y|5nKZnHV_}-fwXS{7bxJqXcZ;XsffZf0n zaLFV&1B>7S0}0Bn8D4o(*oQKfsudW?f2q$|HkMV%M$4R)9%jnxJS?h|!j`B%-I8Sf zPVXF>+uCQBJ_3Tm)*i2o3iFxTu8RBF8Xr}*BOo05;>L@bNf-lc;0%AtY6Z7@evZ-? zjikLzWhA!hFtJh))^{6WlpNQZWvLbWFbgxl_wA$Dc@FwXo(@#*I41=p_P~kx>BDy# z=6uo0GP2-}srf|z8lajWK?3pi!_u}4;bCo(su4uOupnX=spWtbNvu}Xry`G~Ez>6P zP9LFqx%Yf2xhretUR&-?E`cbqCG!rs9A^GI zi^iS3+AH$Q?^Bj)-Gcn)*tGg7rYvxGoUT5sgQB>Fa|zbn8*S4RoVfV?Bh)k>x+H00 zT-X_4ldNSr4{R{vgoqjER#r{(d)<&m8%WC1B=@}(*vh2Z!+GgA9fG(kC=7KRw?-T~ zhKr*lCJZ>@$Tc<|uUV34(};fYI&s~_VtwqBmtYY~vN}zLV^w5F4CA0laAuQVVaa=E z^@QC5$7+SWtn%xos$?$YH%%pO-H_<_d*u^S6S+`mx1VL7z}AprEf+@9Hx|Do^F<2Jh_ZOBhSB!CB1N%+=_9DzQ6&p=4D9A1>Jx>2&XO z0g~klgCLWl^+B!ieLE6S8oE3?*VRqXQ2hbju+S58N%_zy2gzESieUE_Z02!Fx8G@7 zxd@v=?Ie)pu6{;tQ=7Gg}dE3W)_sIbTy2A?=xRGKkka!rv&)Zmzt?LeRhL`?GJ(p9t!*e z7w(ky_L~a_la>DOZmyqLFgHi>VuId*ba&2*{T6S?qJ-&MR|A;F=YC<;du{TR9FIyV z4jNMZkdAVn?XX!p?TWFH#>`>)uN^KAtZvWE)%nJJLA?2_HCi(BqqekY`x}Yy9&FQd zNj_KM!U)>7reZ>Row99nvGDUn+jBpT6_Sb(mrb6~>D>HwUK?yGaaTwgOjt4X$yP`i zm5wm%H<}WhC*2I%miTVsOgNs$t3+QZ0Pq2Pa@E{;r(bb;3Ecg@D9P zVTjkyf*VhHj;FctcQ5=J(A5h46Xj@#aeqq3t5;bu< zO*?y>QSx7{Jqfxq&CV3hn0!WhrU>~nw^OBOs%I=Z)Bc}}V37D9`z20hb4KsU)J_Dy z&Zni*&(GvINlxSqN5m-%7$kPOVE-+APrdT@@YVYd?&wLv{f@B{?&z=l_yr!7{C71>QCQdsWHpkWJo^KNzVJ@al}0O|!a+sXS`-(}%XQ=NY0uBDxmx9&BR zMZFs^NqPTCg$=~2)KX35Df!PSWI~p#-ymxqoJ3w;Gq2PpRup;Qb=S$HkSSH&Coz3}ZC2$taz+mCb1+r9o3h{ih#X(3U8)2kOK`h`2Zy MLe9f;Sx=q(UsaB5b^rhX literal 0 HcmV?d00001 diff --git a/Doc/latex/evolve__optimizer_8h_source.tex b/Doc/latex/evolve__optimizer_8h_source.tex new file mode 100644 index 0000000..50733a7 --- /dev/null +++ b/Doc/latex/evolve__optimizer_8h_source.tex @@ -0,0 +1,224 @@ +\doxysection{evolve\+\_\+optimizer.\+h} +\hypertarget{evolve__optimizer_8h_source}{}\label{evolve__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h}} +\mbox{\hyperlink{evolve__optimizer_8h}{Go to the documentation of this file.}} +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00001}00001\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00002}00002\ \textcolor{comment}{******************************************************************************}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ evolve\_optimizer.h}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ адаптивного\ подбора\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ EVOLVE\_OPTIMIZER\ \ \ \ Evolve\ optimizer}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ эволюционного\ подбора\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Любое\ количество\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Генерацию\ новых\ параметров\ на\ основе\ лучших\ кандидатов}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Мутацию\ для\ поиска\ оптимальных\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Несколько\ независимых\ оптимизаторов\ в\ одной\ программе}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00015}00015\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00016}00016\ \textcolor{comment}{Если\ библиотека\ отключена\ @ref\ ENABLE\_EVOLVE\_OPTIMIZATION,\ то\ вставляются\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00017}00017\ \textcolor{comment}{заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00018}00018\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00019}00019\ \textcolor{comment}{@par\ Пример\ использования:}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00020}00020\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00021}00021\ \textcolor{comment}{\#include\ "{}evolve\_optimizer.h"{}}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00022}00022\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00023}00023\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00024}00024\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00025}00025\ \textcolor{comment}{\#define\ IQ\_MUTATION\ \ \ \ \ 655}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00026}00026\ \textcolor{comment}{int32\_t\ params[N\_PARAMS];}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00027}00027\ \textcolor{comment}{EvolveOptimizer\_t\ optimizer;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00028}00028\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00029}00029\ \textcolor{comment}{//\ Формирование\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00030}00030\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00031}00031\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00032}00032\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00033}00033\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00034}00034\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE\_Q16(param\_u16,\ \ 0,\ \ \ \ \ \ 1000);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00035}00035\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE\_Q16(param\_f,\ \ \ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00036}00036\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE\_Q16(param\_u8,\ \ \ 10,\ \ \ \ \ 100);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00037}00037\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE\_Q16(param\_i16,\ \ 500,\ \ \ \ 5000);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00038}00038\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00039}00039\ \textcolor{comment}{//\ Инициалиазция}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00040}00040\ \textcolor{comment}{EvolveOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ IQ\_MUTATION,\ params);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00041}00041\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00042}00042\ \textcolor{comment}{//\ Шаг\ эволюции}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00043}00043\ \textcolor{comment}{int32\_t\ loss\ =\ calc\_iq\_loss();\ //\ расчет\ эффективности\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00044}00044\ \textcolor{comment}{EvolveOptimizer\_Step(\&optimizer,\ params,\ loss);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00045}00045\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00046}00046\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00047}00047\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE\_Q16(params[0],\ \ 0,\ \ \ \ \ \ 1000);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00048}00048\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE\_Q16(params[1],\ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00049}00049\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE\_Q16(params[2],\ \ 10,\ \ \ \ \ 100);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00050}00050\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE\_Q16(params[3],\ \ 500,\ \ \ \ 5000);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00051}00051\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00052}00052\ \textcolor{comment}{*\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00053}00053\ \textcolor{comment}{*****************************************************************************/}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00054}00054\ \textcolor{preprocessor}{\#ifndef\ \_\_EVOLVE\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00055}00055\ \textcolor{preprocessor}{\#define\ \_\_EVOLVE\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00056}00056\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00057}00057\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00058}00058\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00059}00059\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00060}00060\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00061}00061\ \textcolor{preprocessor}{\#ifdef\ ENABLE\_EVOLVE\_OPTIMIZATION}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00062}00062\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ Q16\_MUL(a,b)\ ((int32\_t)(((int64\_t)(a)\ *\ (int64\_t)(b))\ >>\ 16))}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00064}00064\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00065}00065\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ Q16.16\ [0,\ 65536)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00067}00067\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00068}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{00068}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{((int32\_t)((((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))\ *\ 65536.0f))}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00070}00070\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00071}00071\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ Q16.16\ значения\ в\ диапазон\ [min\_val,\ max\_val]}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00073}00073\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00074}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{00074}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00075}00075\ \textcolor{preprocessor}{(((float)(q16\_val)\ /\ 65536.0f)\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00076}00076\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00077}00077\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00078}00078\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00080}00080\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00081}\mbox{\hyperlink{struct_evolve_optimizer__t}{00081}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00082}\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{00082}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00083}\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{00083}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00084}\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{00084}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00085}\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{00085}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ в\ Q16.16}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00086}\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{00086}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ кандидата\ для\ обработки}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00087}\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{00087}}\ \ \ int32\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00088}\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{00088}}\ \ \ int32\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}}];\ \ \ \ \textcolor{comment}{///<\ Параметры\ кандидатов}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00089}00089\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00090}00090\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00091}00091\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00092}00092\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00093}00093\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00095}00095\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00096}00096\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00097}00097\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00098}00098\ \textcolor{comment}{\ \ *\ @param\ iq\_mutation\ \ Амплитуда\ мутации\ в\ Q16.16}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00099}00099\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (Q16.16)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00101}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{00101}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gac21587fe68fe3635525358ac3f4059d9}{EvolveOptimizer\_Init}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00102}00102\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00103}00103\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00104}00104\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00105}00105\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ iq\_mutation,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00106}00106\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t*\ start\_params)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00107}00107\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00108}00108\ \ \ \textcolor{keywordflow}{if}(\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{check\_null\_ptr\_2}}(opt,\ start\_params))} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00109}00109\ \ \ \ \ \textcolor{keywordflow}{return};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00110}00110\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00111}00111\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}}\ \ \ \ \ =\ n\_params;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00112}00112\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00113}00113\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00114}00114\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}}\ \ =\ iq\_mutation;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00115}00115\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00116}00116\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00117}00117\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00118}00118\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[i][j]\ =\ start\_params[j];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00119}00119\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00120}00120\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i]\ =\ 0;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00121}00121\ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00122}00122\ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00123}00123\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00124}00124\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00125}00125\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00127}00127\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00128}00128\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00129}00129\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата\ (Q16.16)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00130}00130\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00131}00131\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00132}00132\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00133}00133\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00134}00134\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00135}00135\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00136}00136\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00137}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{00137}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga1ba2fa963c9ae12625be1b7c20718563}{EvolveOptimizer\_Step}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00138}00138\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t*\ params,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00139}00139\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t\ \ \ loss)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00140}00140\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00141}00141\ \ \ \textcolor{keywordflow}{if}(\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{check\_null\_ptr\_2}}(opt,\ params))} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00142}00142\ \ \ \ \ \textcolor{keywordflow}{return};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00143}00143\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00144}00144\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00145}00145\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00146}00146\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00147}00147\ \ \ uint16\_t\ mut\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00148}00148\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00149}00149\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00150}00150\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}]\ =\ loss;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00151}00151\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00152}00152\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}++;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00153}00153\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00154}00154\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ >=\ n\_cand)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00155}00155\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00156}00156\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand\ -\/\ 1;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ i\ +\ 1;\ j\ <\ n\_cand;\ j++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[j]\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i])\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ int32\_t\ tmp\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[j];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00161}00161\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[j]\ =\ tmp\_loss;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00162}00162\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00163}00163\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ k\ =\ 0;\ k\ <\ n\_params;\ k++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00164}00164\ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t\ tmp\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[i][k];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00165}00165\ \ \ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[i][k]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[j][k];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00166}00166\ \ \ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[j][k]\ =\ tmp;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00167}00167\ \ \ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00168}00168\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00169}00169\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00170}00170\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00171}00171\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00172}00172\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение:\ каждый\ кандидат\ берется\ случайно\ из\ лучших\ с\ мутацией}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00173}00173\ \ \ \ \ uint16\_t\ n\_elite\ =\ 2;\ \textcolor{comment}{//\ количество\ элитных\ кандидатов,\ которые\ сохраняем\ без\ изменений}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00174}00174\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00175}00175\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00176}00176\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Копируем\ лучших\ кандидатов\ напрямую\ без\ мутации}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00177}00177\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00178}00178\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i];\ \textcolor{comment}{//\ просто\ сохраняем\ параметры}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00179}00179\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00180}00180\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[c]\ =\ 0;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00181}00181\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00182}00182\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Остальные\ кандидаты\ формируются\ с\ кроссовером\ и\ мутацией}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00183}00183\ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00184}00184\ \ \ \ \ \ \ \ \ int32\_t\ noise\ =\ (rand()\ \%\ (2\ *\ mut))\ -\/\ mut;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00185}00185\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ rand()\ \%\ n\_best;\ \textcolor{comment}{//\ каждый\ параметр\ из\ случайного\ лучшего}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00186}00186\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[parent][i]\ +\ noise;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00187}00187\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00188}00188\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[c]\ =\ 0;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00189}00189\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00190}00190\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00191}00191\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00192}00192\ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00193}00193\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00194}00194\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00195}00195\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ i++)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00196}00196\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}][i];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00197}00197\ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00198}00198\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00199}00199\ \textcolor{comment}{//заглушки}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00200}00200\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00201}00201\ \ \ uint16\_t\ n\_params;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00202}00202\ \ \ uint16\_t\ n\_cand;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00203}00203\ \ \ uint16\_t\ n\_best;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00204}00204\ \ \ uint16\_t\ iq\_mutation;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00205}00205\ \ \ int32\_t\ loss[0];\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00206}00206\ \ \ int32\_t\ candidates[0][0];\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00207}00207\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00208}00208\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00209}00209\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00210}00210\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00211}00211\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (q16\_val)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00212}00212\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00213}00213\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00214}00214\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_EVOLVE\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00215}00215\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00216}00216\ \textcolor{comment}{/**\ EVOLVE\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ */}} + +\end{DoxyCode} diff --git a/Doc/latex/files.tex b/Doc/latex/files.tex index c59750b..009943f 100644 --- a/Doc/latex/files.tex +++ b/Doc/latex/files.tex @@ -1,9 +1,11 @@ \doxysection{File List} Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__flash_8h_source}{\+\_\+\+\_\+general\+\_\+flash.\+h}} }{\pageref{____general__flash_8h_source}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__spi_8h_source}{\+\_\+\+\_\+general\+\_\+spi.\+h}} }{\pageref{____general__spi_8h_source}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__uart_8h_source}{\+\_\+\+\_\+general\+\_\+uart.\+h}} }{\pageref{____general__uart_8h_source}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{evolve__optimizer_8h}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__gpio_8h}{general\+\_\+gpio.\+h}} \\*Заголовочный файл для модуля инициализации портов и работы с ними }{\pageref{general__gpio_8h}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__tim_8h}{general\+\_\+tim.\+h}} \\*Заголовочный файл для модуля инициализации таймеров и работы с ними }{\pageref{general__tim_8h}}{} \item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{} diff --git a/Doc/latex/general__gpio_8c.tex b/Doc/latex/general__gpio_8c.tex index 2a58371..af9a192 100644 --- a/Doc/latex/general__gpio_8c.tex +++ b/Doc/latex/general__gpio_8c.tex @@ -6,8 +6,7 @@ {\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline -Include dependency graph for general\+\_\+gpio.\+c\+: -\nopagebreak +Include dependency graph for general\+\_\+gpio.\+c\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/general__gpio_8c__incl.pdf b/Doc/latex/general__gpio_8c__incl.pdf index 56fa83e95fd50a7bd8c940224fc6e9f628235b83..fd06f3c8aa676738c77d3a6cd9db611e772243e4 100644 GIT binary patch delta 596 zcmV-a0;~PAuK}~K0kA(*f7$X&356ydrF0vald%t@1lLg=v&1s8T$X=7Nq(74`(bp9 z5fVRo?k>LP?sNn&@_}I#fQKoHfcYMx9)wYdJczV`K@`U*gxHS|r4YvCugPtH(hz2Ea$a(o9(TLED#R{2I0tn)&W(?jY220@FlxW) zLTKi7+UX101D!lIe_u!I8^e%Vqkc>kx127H^?tqL)A?9D)VtlDKi2gaik zjqJb~0YZY#X3$hJwH#rgasPY8nJ6EN{Esz%ZcaLJW5+=3MKG9v*Fy@dhx+1m@P1md zwk#ix{DivnhKjBA2-~3l60nt=C!%X-+crZ19pt%px(D{uf9h-{{ua2FV&7z3!YoS* zDS$X6axlyeN>%lR>smIKX>};F+7U9J&)YpBd1_jAohlBq>kEo0BbdY_V3?8j*n5ZZ ze44V^OYpYaA^k!b^8Cd2MY7MqhV{6iklH6cnG+WqN$z@l4VD8w3TUD zSLS8exu^^zXRpZ0Uq@?QZDeV?;{Rx<&f0wrMp delta 596 zcmV-a0;~PAuK}~K0kA(*fB8)=q0pqGlx`z)GWKDV;5w>fmRLrX%ku9h$uF~MKa7qs zLXt<%-P!ltosIxTJ_Hzr;9-gw1ipu;2N8>q2TU6RU~!Bhh<%1Ag*c87^?~3hKokgx zLPP@~zUQIE0^IGn;^3~+oYx2d+`D35!*`&7A%S~Ktwd8QAn5XPe-v?5mO@$crg>17 z`dE}dT1LqxQ|nZ68)v95O}bx;qEzPLk?*i50E!uqzLhRVVIjGZdZhW*%g1{Ue>z&<7)I0@_1{!+%jx1+@7F6nosY#sz1!{iWBsoLdoKv4j-I#J z$PS$mASCQ;22CYX%aI^5?tia16Xj!(|FP!J%}FP2>==l>2nG}IdPpJYp}u$>yq}h= zEz5@^KcOzYp<-)2!Zzr?1Z*YeiRjwdw#`sL2YK$D?twkEe>z)Pfg3NQ^jF+eL*n|2qrNhKBe({?7hQy zK26!|C3xHIkba>Id4A&iB3+7~I$f+k`XS)?Y}i_*;${R19s+KpXsTy}WZBUiZDm^4 zm3diq?&(|5MaAR&X{Eic`BRbc%X5qtTZ2c7;W>mB;ez7rAX%Ye=#Nu7-B*=0^?~+ zMk5&BJ#G{XC)q+Z1OSE~i+KY-fB}Um+&gMqwWS6m=jS^;F3PgfE_~ZQXh(f2%AcOm zb(`x+Rx8)fQeWF_KBdUHK&I2`(9C8}td`T%*%XN+I2@oc z(M1m(4rCe=$3Wod#2=e?fkLR-ug^$`54B#B0iL zvs#~6zc|((N8E`>QVjY7v=VLfP=6qkl)YAgFE&MGw4X$Dd@P#L#Fi@;qAT$ZnM$^y z!y4~6F5;IJ`Tly#D>n%p$0WuH)a!3MFns7c=BOV zSMxSkHT3eVs4Kt$$^nJmQtM4~HXJ&3QD>WFkvD^?UiAC^(63cym)=#T74)vo7-a&f zxlP1^3VcubJ4*ZeGVCP+-gXCmIQ_SC|E%Ukc3J&4e-fzqN^UMA+nN|xrB=3#Fy3~! zuB&!)R1l8csfW8dE1QiSEPo924VZ+g@HRHBuGFt0SJUguox+$ZzbTqQw`+Z`$QyGz zb5&_K1-Grc)Vdjh^x3BV;jc>=?dRUlc%12MRV})#EbMp(!v*Je7RMjaId7W^Wo~41 zbaG{3lLJ^60XLHySeaxHPtv|8 zx=GML4h{-P;0!60;Nb!Ru5faGlALP8KiTUnjT`6B2ruI?lio(Z!q*rU`20VpAcGoO b7fWm7T{-}OP7j2W7+D|)G72RnMNdWwJ-465 delta 901 zcmV;01A6?wvH`%d0k8;Fe_LzYFcf~*uQ(4IOBf_Nk}q-zg*F|f>_V1y>|qq+I>Iqa z>|o1d{rA(wN^{x6Xq&es0e}9E6zMykjwA$10thLIfF%JD5OPM4LM&o}43Gw#U;xO3 zAS?k4SwuKs!~zoPN6bkK7&At6ERK;N0t!Y6>P8|;2orz_3c@Kce~J-dzz}1?5g1P* zGMT{m?r|ewJj)8%5&#%~EEg^O00tE1aBrz;-Bk*ZoS*OXxTvaH+3;=mpe*&NtbRI1 zHC?V|StD&fLw)VC#jGwXW&Rukt&Qn9C3F;rdoT)IR6pI|bD1mOMUyN++uj8)U@|el z;C@=UD(lK~w=n)Tf4}i>8p7aBAuHKrt29;RIu*;&Qmt1*(?rWNtuAlDsQj)Ipqb}s zX2+TXYJMn$k@RExr&7z0)pD9xn}RU*4tuCg zw9!L{JsE`Jg$}3svvs-Ml&Q$mw(go-okUTW9x@0$ z>!$8DM+ITooqD)yvZ~#f!SY8>-+)f2^lww$>Pr49b2-1h+$oH?bep0cbi3B~ioDgg zGh3BrQ?T2*O|6|F2$yZ@9`3q?!G7-DjHj8(R&~*5r7+_i4CkHSSsZ@=$98X&3T19& zb98cLlL1&50XUNySeayym5+pY0q;W~vEU#czyny@awl#;X+PttKD zx=PSM4h{-P;0!60;2}bQ3!I#PNlvxlAMACO#*K3~!qd3Vq_@$p@HK`7KK~CY$e@PS bP0`xvCj9__Sr3Mj7g-<(GYTaoMNdWwVk@)b diff --git a/Doc/latex/general__gpio_8h__incl.pdf b/Doc/latex/general__gpio_8h__incl.pdf index 16997107f6866c6e1acd35a25823199627ed74bf..ae0be16d55e3d3997df5b04875d436136586cbb4 100644 GIT binary patch delta 180 zcmV;l089VluL0t(0kA7pf5n0d_LfF(C>;;U;$*?=b_%+YxG?;nwuPMO?~W)6<$U7i zm|y0uv`hey~u2IU`*SuN<3u~r}f iHIvd--3%e1Y}ic(1_1Mg404mZS0D&83MC~)Peuy*(_JS3 delta 181 zcmV;m080PjuL0w)0kA7pf3Yhb(YG{uL+N-(7AFf{w^PuK#D(DpwJqdKe|JPtDCZM5 z$NVyPrB&EK>81Y8==$_a7kISS1ZyM9>V$jc=MKIH=bGxi=B{d?UW#00ce7qEWUA7& z$yEi(WzT+dSMI*?oruGLoqgqvjfeI&tme|ngWk2m-Tl(jJv_qR2PyvmhG8w?ldx7G j0XCD-R^1F?plsMJ1_l80kPLK_x>q0wGzujpMNdWw+G|`Q diff --git a/Doc/latex/general__tim_8c.tex b/Doc/latex/general__tim_8c.tex index c305423..3cdafc0 100644 --- a/Doc/latex/general__tim_8c.tex +++ b/Doc/latex/general__tim_8c.tex @@ -6,8 +6,7 @@ {\ttfamily \#include "{}general\+\_\+tim.\+h"{}}\newline -Include dependency graph for general\+\_\+tim.\+c\+: -\nopagebreak +Include dependency graph for general\+\_\+tim.\+c\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/general__tim_8c__incl.pdf b/Doc/latex/general__tim_8c__incl.pdf index 536a0209b2fd8377d7c7bacfc30f8dcaeae97fd4..bacd04161ff726e3a831c8a307ff4c9b17c2b5bd 100644 GIT binary patch delta 772 zcmV+f1N;2Wu>sGq0k9iYe{A`q2nzILD2i@FmUh@-C<50}9b<_V*z&Oa`%$u;CT$Nx zw;qNd*7Fk?k&hIEz*z{Avj_r?ECCq`h8*HFWgzB6tWmlV8BvZBEdum z7$7nc(V9vo0K+t5f~?{Q*<=F#&32=}pJs(>7y$TJ<)VS_Ab`URe{LOhrrXK@vg6}D zkCUp>#%*7>cg9g4%j!qRn7Yl)G^>^Kv(%S1TTFFX8T;dL>>-6OA_`BU7d^&FxHBQx z1u;{(ajuR-DV$5UcLI}%1s3hmnXd5uFAV+K3}N& z=Cu+Io+gYu@e;~U@B}c4pJI_b*bqKQo;EszBympvpxni#)UTC(_)NWpM{S(isz=@) zpv&6tS#(%&;W(7BHUIm9=eoKti$Bi!bGxR%?LMbzVaI^Qe+a<<1;_yg5Dzefw1>Bc z>U9czSgAGZBi)HN1<@Vwe>mLKO3ifN3SG%91!AX%e?|3kLUkH-@^s2P=rXPKqRmwe zqdY5X4d`LwaTqO)*)&JK@7SWwHp?<^JY5&#aW{u+mD!@7XGX#3{77&ikz4LMVdZtGmpp$}2+U$KV%5Z!&SSJK`u zS1gF!GjUJkhiZ2*o@FLm>7v)6uqQk^V5sh11N;W{19;9>lbBZ^0XLJmSB_sh3V=Wm z1JI1S{uRYb+4%usFKFi}w6@pU#?H!qonZ3_gb)DU2WS9NkcbG0Nk9@}NJ^}j6A)C2 zS-Gt>jjv)`vMbZfbSd4f^iYO_JpWrpLXwkG+@h`9fDiUq4}z1XSRe>C3MC~)Peuv} COm~L> delta 771 zcmV+e1N{8Yu>sDp0k9iYfBanp1^O`*MYkbKI_xkMf$OM_vBU~&d077aDA`WqriYuNa+gmr26&R{Yzz~C;rOc$!`xjDFBXV?83K^VQsWhtw4y;$gCvxryDN^jO< zV?tRPtMfUSWWSLPf5f~jb@5ESAv{Q)Hd=!?wod<`-1)Xpua&<4OudCeZJd~@ht2_@ z%i8T3G_1I=90rjw|NDYxs(dK&KhF7cv!TGvKBsA6#(=>He_js-1U>X1>Y)!w2k(aJ zwF-S$%MI%y-HSH`(H`)BINVlJ&Q#Y5ZOIJefu-OM+JHWLlIi(%qy784mIM-!c)3T$E;Bd7ZiU0rpJ~fRm?KAP6-IB_%~qMhZ=% BZ^{4w diff --git a/Doc/latex/general__tim_8h.tex b/Doc/latex/general__tim_8h.tex index c021dc9..a7508f1 100644 --- a/Doc/latex/general__tim_8h.tex +++ b/Doc/latex/general__tim_8h.tex @@ -7,16 +7,14 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline {\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline -Include dependency graph for general\+\_\+tim.\+h\+: -\nopagebreak +Include dependency graph for general\+\_\+tim.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=229pt]{general__tim_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/general__tim_8h__dep__incl.pdf b/Doc/latex/general__tim_8h__dep__incl.pdf index 7dda336476237585a1663f41411d6efbd29fa948..7984a6b805ee30883f689fb049b46ec825941344 100644 GIT binary patch delta 555 zcmV+`0@VHErUB!o0k9fSf5D2|Fc7`#E9TJBghDLImMt$~VUv_)*|wxkN)Kf*T1O@yyy)Wx;9b$A_n6=Q-*E#4@D|TyD*2aB2!tNoQ&k{C@c;puL-5s0B!gR?NB0P0b zw{r*cxeHv}vnfoe>H*t8@Hu-JRyKsmtK+#UpPM`{>!NCRGUtcc!5pip%d)~;;$j0% z-xn+0B7dirzEn$bf8wZzjP-K+$f|N%zw7O>kj4KdcrR8*GbzOK@$s_6+T^h8untaj!DA;N#Gu2;4*K`MgwSG@Ac(h&g zggdUkn69_1e27+3^Vc;hi@>RUXyhL1+RPa50h|V_(ASUu~0uOQ71G^?fBy8GH$hz&N}>( zf3H=0df@?&jx4a%qHa#^tl~Vt4`90{ht<+%t>pKzklFoW&6~6!g delta 555 zcmV+`0@VHErUB!o0k9fSe_e~)Fc5s#uh@r{CKO^x{*sSya7oH>Tw78nr4QvWIz=R= zjum9NH2=PmY^P4|rL+ZOR-;{OW;JU97)20clmKN6Q35edPzZ6#Pz(u85yga~HU{XCq9h>H*t8@Hu}NRyKsmtK+#UpPQm6Yf-g3S+K+GV2;()Wm#b^aj^lX z?~9dgk-t+*U#g`ze|6NuIPT^4kyYike%IS$VVwM%;JvJ+=2cOc@>nqOXKFvTM@!l5 z+griT11=^I4k3lO51+0()OF!qC6B0QbZOAqYVt+@qhPD0%vFCGUDF)|*7`lg;L&!` z6YjYFV!GC9*9xg&B6z74kQre!43mQ~r{*RIJi6EXbSOnLe^YutopuADC3o#!aU)@} zx}liH1e1)Ah=%wr4&Pury(a4h3SRf-A12|#@Ppiye4&0=qE2X-+405EW!!2bopsnH z|6Z&1^uhxk9a&(jdEK1cS>imv4`90{ht<+%t>pJo$ozgW@Rh!qF}N1nUGWS+g=yF##Q?6^{S_ diff --git a/Doc/latex/general__tim_8h__incl.pdf b/Doc/latex/general__tim_8h__incl.pdf index 1bade594fc4c882c330ac3c500530b12589be085..99a1fb493ae48d357ed89695b1939c3e5ad1005f 100644 GIT binary patch delta 645 zcmV;00($*|vH^p#0kD2mf8T4{Fc5y%UvUo`OBmRa9NBUSg(exLbQ@Wcv4>HD>!^-d zVg*?)%YQ#f{!yFkVRVcU5`X&cF23*XbObP(0K+H*8WY5UO+rKih+>Qa;4DB4VoXs4 zF(ZglAQ)prC*~P(WR4_?5oJIoL5QYP@Hgj^0DqZeqC^1T-{-p$f4&0+3@dnW)Ld4D z27<1ydl5H9A+&!CZ|;AvS_(A_+M9d?a4qGy*Zu_`D3}=?!;5M<$G_h zkB6~!G1{!xYzbDvFs~C#F9j3KJ#O?-%z^Oe5>x)-WAH${G1Ly6yP(&r&qN_q za@cOOQ!f9N{NOkJrk)wO*mgbidVr9yu~{_iICUIhk#+z3hNrT4%CkS#{JA=s#H}3z zad*LD0znHYuojxj*T9Ei$?CFvIEW)^((5X=G#zz8|0Q6fe}q`crk!=$ECsZa=ii$i zxKpjOmiQuYspPIog@RF<PfJg#Y&@=4i4uuz*&@*b zMvE(oDI=J~BxIP8_c(Zm@pzcBT}|+|StIRE>GJ#}c6lRkAu=R}7M4dvml=Nl~8c%hGd8-+?KfXiszFwGhvFDpt3%-Z-s9DJzwV65{Ti z{rgdx1@4B~-Y0uGCa$uf`{lzb*SXCTog8G==r?=1Cx6(_Udw+0q~vH^m!0kD2me{E~qFcAK(UvVEcmN2j-`AsgN&?KXjZX-tV}ck2eu$_CQH+rXEbveOF{UVj zI3S2pAQ)pref^9W(nk`-hz3A>FGRB$xSR8dgS$#|ULgQ*?~7dpf8T)uh6ElgwGefw zfS~K^LBvg23T4gf`cYZxV^RKS7$xgWty0NtoT0wd>24*8Qkg%GLLdP(UndGiFrwC| zAI+;1o~bqM1F z*t=jb0k4A;f)47-*TRQ!$(pi!IPfEC)9Wj?(jB!y|0Q4}e>qP?+s>wKh638lbMJKz z?5WY&NPH2vl44h9T*4$v3n_p&ggF={d!73MC~)Peuw=**2a4 diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 index aab75c0..d0764fb 100644 --- a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -58861c427738147326054c740ac5c202 \ No newline at end of file +56d577ae2ce4b45bacd111b61cb7554f \ No newline at end of file diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf index 82cca8d7606dabac3153eaef18baa053b8575793..3ae7469acdf9c4ce72bd04505c51eac3bba33e02 100644 GIT binary patch delta 12827 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 delta 12474 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%0ATLCd1 zhp9Hgjlp8{zjxyNBWj0EG(9L@>&E5EF9ZAlmM<}^w$^JWUaMSW_nV23nb5LTxzLb| zIj1A4?Y-#+%Z+q5pV!3p^=!G}Ct3QI?RA-Sd@b8V*}oBM<_ME}HcSFJFq66h9h2rZ zLRe#9VEF%^iGhcK0YtEY2xbt$$jCU6fq{{MA4o7(gJijYEQ60A?mr;G)C44qo`YC3 zfP|hih=>6a`d2{2YlwL)Ac6@*u!0D7MpH+itZ4)T0{{m93^bE_Hy#Q$H8u(*B}Gq0 E3R^=jk^lez diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex index a8bcb4b..4038bb6 100644 --- a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex @@ -5,12 +5,11 @@ Макросы и typedef\textquotesingle{}ы для работы с битами в unsigned типах. -Collaboration diagram for Bit access defines\+: -\nopagebreak +Collaboration diagram for Bit access defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=300pt]{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s} +\includegraphics[width=288pt]{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s} \end{center} \end{figure} \doxysubsubsubsubsection*{Classes} diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 index c96e50e..286061b 100644 --- a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -591a0b98d98294b7a16c22b9669d8b64 \ No newline at end of file +c52cb47284eaa7377e976a0f04f0002e \ No newline at end of file diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf index 236624e2160b5ff21fb143e9055f342855f1acfd..09da61dde59f2247b8a0e593358eb59b3b2ebb80 100644 GIT binary patch delta 12625 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 delta 12015 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 NF*r90B_%~qMham}RRjP4 diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex index 6df380c..fce705b 100644 --- a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex @@ -5,12 +5,11 @@ Макросы и определения для работы с задержками в миллисекундах. -Collaboration diagram for Delays defines\+: -\nopagebreak +Collaboration diagram for Delays defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=284pt]{group___d_e_l_a_y_s___d_e_f_i_n_e_s} +\includegraphics[width=273pt]{group___d_e_l_a_y_s___d_e_f_i_n_e_s} \end{center} \end{figure} \doxysubsubsubsubsection*{Macros} @@ -65,7 +64,7 @@ Collaboration diagram for Delays defines\+: \end{DoxyNote} -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00086}{86}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}\index{Delays defines@{Delays defines}!msDelayStart@{msDelayStart}} \index{msDelayStart@{msDelayStart}!Delays defines@{Delays defines}} @@ -91,7 +90,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00086}{86}} of file Используется для реализации неблокирующих задержек. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00098}{98}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00094}{94}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}\index{Delays defines@{Delays defines}!msDelayWhileActive@{msDelayWhileActive}} \index{msDelayWhileActive@{msDelayWhileActive}!Delays defines@{Delays defines}} @@ -131,7 +130,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00098}{98}} of file \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00115}{115}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00111}{111}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}\index{Delays defines@{Delays defines}!msDelayWaitDone@{msDelayWaitDone}} \index{msDelayWaitDone@{msDelayWaitDone}!Delays defines@{Delays defines}} @@ -171,5 +170,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00115}{115}} of file \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00132}{132}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00128}{128}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 index 7cefaa5..2db04ea 100644 --- a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -e4a53f66d0e2072179f4dedfeba20d50 \ No newline at end of file +d5db8daac36cb4cc1a3fac830c6bfd88 \ No newline at end of file diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf index d8ab8c7c02cc43fdf5a7c2791f866b0b7fb19fe2..bb52b392a43aed32e9a187f09031856227b08cfe 100644 GIT binary patch delta 11980 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 delta 12025 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 DA%+ZHU?kdcz6H|(#F=Nj%EOk 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 Y$-n>r^A8K?lQc9S2sH{NB}Gq03Yh}|sQ>@~ delta 533 zcmV+w0_y$UXxwP9N-=-iirX*{eb-maLrW71vE)mVUBbd9Da*2Lah;StltpMA;g~v> zk>%3-eKoRd99n$g=x8L(oHJrTNel@k><%K9kO-nAA#4pXjY&u$UQrT4vSK7;u(ko4 z4Ftz)BOypdAzK0f!Ap5+;U|PZA%j;(?NnDAVC3Opvf{C>m2rR5hwjZd>T_BD>KUWE z+@wNFw+^Xqoj9ectPO4+Q+yeV7OP}}mX5an{@6_BrVn0XNQ|hTd4$ad0b-v`Zc0@T z+yR2`+4C^65N7WRt-6MDe&JVM@shvs){Y9^Sgah9ytbd_f>(>Pxm0u9z}Ad=Y!85? z|FEi9#tZSayV!qfaGt^%^+L!X^6>RmuwIl;mAnw2q)37F z*q<1@Sd}90m){}P>eS^@!z>r2R=^f)y`V5V8`HG+LEzXzi{@PB?Lz5dKJTs8QlOH1 zVI<7<_aO}vM%kT}KaA){8hxO2ew!w?4!rj^51x;?eUWIVQf$>9nbAkN^6Nl9gVjq8qn(Y~%im=#v#0IE$V|4X)46OR8PA-y zYisY2YcXtZ*Q>X}_WA6D5tS-@$@c0@D!#RC;_P3sW$IFsFf$(lI60G1GuR9fC~F+S XzyJXA1PkVqH8dayGzujpMNdWw6LJa7 diff --git a/Doc/latex/group___g_p_i_o___i_n_i_t.tex b/Doc/latex/group___g_p_i_o___i_n_i_t.tex index 429b53e..e399d87 100644 --- a/Doc/latex/group___g_p_i_o___i_n_i_t.tex +++ b/Doc/latex/group___g_p_i_o___i_n_i_t.tex @@ -5,8 +5,7 @@ Настройка состояний кнопок и количества тиков в периоде ШИМ -Collaboration diagram for Init defines\+: -\nopagebreak +Collaboration diagram for Init defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf index d82a7462ede301962710613c23a6a023f02215d6..dcb1e14581951138194b130104d7a3c75eb1c35f 100644 GIT binary patch delta 600 zcmV-e0;m0eYyWDnbuxcZYuhjoe)q4qhm9o+Y{`x?yM#iMj8eJ{*U8w!C_+^<$1Jgo zESKfqPm*QVVZ+AUeY*4AecuTK3Kl?6fHO!C3KB>b#z`Sbvmi#WAS8%^kYx~KNKL?M z1=0S}2#9i4iZ%d%=&?Gq@DpM{P{6Z;HnOWV;NbRll5tnpQoDcSUH76L^rfnQ_lQ;< z*Ev(dLhWq8!*)7&PRA#L7z2X@vUh6aQ9 z$-i}H)4n}7Ot;vD$CMuKv{eg1zE_DYCCdTx6TEd)kXUom<# z#3WuI|A$=3L&t@J8E2J}fJ2;y2xdpEoAxG(99k;Y94p?2QkC<0udNcyvbSYgz-)UH zqnKcXGrS~-#2-=e0ipSIn|4>=z1MXRdF<`0I8u}j8(WKC2KWICUt;h!CTc5QD=v!r^+d=*w6arNv_Qt1)BSACrEzOz z_t`DyHL-m^8>ZPwmVRV&S0)o*%QjK=FEx(kG?P^{AOSOzb~KDuCCsr2fIt)j(EP8S zAfgjkS<8vsOjdT*TG%;(V>-f_VDm@_1VGM?77#%c!pttf&=cFVHca!V`V!yC(kb0! mI>kd`5X1jh3Kx~AEv;PB0eoWg31X92H6RE#3MC~)PeuxvR2~Qb delta 629 zcmV-*0*d|rYJh97buxc#Yuhjo{_bCKA2yaSuqD4_aS4Sc8Kra^u9LA3qX^Z}9J9nS zvRsybzmqJx4jVS+?$Mp^?s-lWh!;abJeop8h!;T=qqBr)nR+3CI7z$^l4Rk96qXpU zT0yYCGy;N*m!kCmAb6|}E&PNK2;}f=p^fZn4b;26on+kAwbXz1c-OsX3w^2T-#wyL zSLlo@Ve<_1)bT?mt6H0%$HctL)c=&c84C;Iw=bHDLieEvrS_~pxP#To7{+$36uOf2 zfbAgoo<9s8nlO7;D%mxRu`|1{6RX$@Ytbv1WHtMRe(4|e`7}34IHbv2@4(FZ18G3S zP5!MrWBcYDn>K$08IwZf%;#%{dKNyP#MyIwjRa*t`~3eT?3EC?blmnF8VFESS21`* zVj?Gy`$MMWp(})fS-~qMf%P)9axO< z_ePq3B(>;7(Y@kz+n8F#Wq=<5`4WS-!KkfxtqPIfuO~w0qLrO0L<`ASbGn}`UK+br zW}oeHUK88*v*DVbWa&o6yE2*hTDFO@e*r6jOGeqhL@ zYIWD-3KxCK^03}o{MfoWvGwVS%}E=%XX2iW9;@Bwc$t}OtBbu34~1Rf*#g7q9vI*c M#yj=Jv;RRn0Uxea<^TWy delta 158 zcmV;P0Ac^Th5@^V0kCmFe=-(uLElsHj?(FI;`W;XZ}<26aM_R9ep2f)o9o}0G{v6? z@y?E;@rzO!WgX4<7;tT^_QIl$J#gr%$*Q)ti{+04eFG?=8hV#F>q`ABbG5vl9~g3} zTHQ6d!bP95Jgm1CKenz;Y<;?7bJ9lcnYbsT$7=UEUS=lS>SC`$4`Ek$w!m<@2L|{9 MyN30>v;RRn0lyAZ6951J diff --git a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex index a28997a..775dad4 100644 --- a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex +++ b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex @@ -5,8 +5,7 @@ Функции и макросы для удобной работы с GPIO. -Collaboration diagram for GPIO Tools\+: -\nopagebreak +Collaboration diagram for GPIO Tools\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf b/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf index 7131408b7c92e249edf16da194f7a67e3053ed93..fec6f21626aa73dad74d6a86905b993fea2372d0 100644 GIT binary patch delta 28 kcmbQ!&p4-_al=Vh7HLndpOeqJcCpB6d6jOCc5`F|0Hb#baR2}S delta 28 kcmbQ!&p4-_al=VhmeWppHzuET?P3w0;gz>J+Rc#>0I;14S^xk5 diff --git a/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex b/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex index 5faa0e8..f539f3f 100644 --- a/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex +++ b/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex @@ -5,8 +5,7 @@ Функции и макросы для удобной работы с TIM. -Collaboration diagram for TIM Tools\+: -\nopagebreak +Collaboration diagram for TIM Tools\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 b/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 index 81f0885..4e0e91b 100644 --- a/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 +++ b/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 @@ -1 +1 @@ -1691ab8f633ae5af69d18398681fcba8 \ No newline at end of file +52c11e57bdabafd5d7af3828f403f995 \ No newline at end of file diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf b/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf index 506f1705e74831f6b90d404e507a506df5492eda..bea594de56696f4c4a6186bc4178fb7da34d19a0 100644 GIT binary patch delta 14921 zcmV-PI=02lfdP$y0gzCCO>f&U42JLe6+Bu8v!tlcYlfjfu>$+>t>~fanzTi-Zs}pz zzaMEYO^`VY3@MaCldm7X45Uxbx^c;Hzi~euVTRq>uHfR1VD+lE5q9hIB{2MQ1XsGA z-Oa7u5`1$^a1D{5R7ivg0>SnH7LLX)T5B;_&eW11R%ong!^T~IEPLuz0}M-d(_Q=8 z{q}uG9q1mq4_>%?^1XClEqe90!C8$p4Ci1;)a?1W zU3x|J@P=xPwqB&WvuF)IQ8)OSC!8;aZ*3sw7zWi+q1KU~+KaOtm@9@*#!zL`6rRQw zGf!GaXm--{_1j<7zGa8&AooA8^z%h6#j3}KcHUcI$`5T)j@U=v*8@(Yt$x_?(cl~d zoV8j~3)rtse)1aWESd5+cn%43)@w!~l_7cbCUa85@kw%%pO_MItb4~br7t^xW-q z5|Tg&MDh|6KqEJ-Sx6)S!Wo1B;)NQj2u2i2TdTGes#ftTn*&%5ORCnkDuuSzwq8)B zN{8`XBua zp;5gEk@<@^Zhw$pJa+0KghopUi8n1>yKMEipEx53m3JUyh%alqZRxUw-5j*=0=%PL z-rBO{ANA4W2u&)6va!pdz*ed~1^MNW&t1NH!>vt^=(LdE4*7<*HH%viu{a=q2J(%o zTW(z|8g=^+s#PE_uU*%=_Q&04{|@o=lN>l}~^c6&-iv!kxH3ShxJo-xJ z`o2;GbQ#HfA3_*C0&}(qhmpk1jBklF^k@qVrUX`cqXd9MSV7S)LMF{^IE1vxi;BT$ zB=fXplYf=WBZ=gvy%Z1tQ1U5cw9#t8V&rrP6Rpl*Mp_-w8$?MW^9+*71aTsH=>Wwt zNGOr~xR=%d@I|l1!ho-ODHbYZxsMI-ryb%a<)DBUc=bS@W)F2K;MDyu3h)yXue zvtd8PVy|*H(2CYUyjp&v@jm0PU@48)8n3l*BlwW1(A>Z+;5V9XHE%U(4MfmZn8uoC zkbiovR-z%J|9p$FU=wehKH_WMz zXV047@Deg6F9XHCjY#tCapT6taDCheb@{XA$H}C)GIKri13nnnoQub68 zkB*fB%Q;dYT-UtOBazj1jC zfBLeFC|?E!W^teLVU$UJ!T8eRHh-yn=`f~%j5Od(0~X$7`Wah#Tk--j!9GHvIbCZ? z1I9soBim7mlLAa>08(SRsn66Mg+jBzFhnFMS$cg=yJEA*2E`~_+?1Iu zo}x(R`S&i zZM*$`$0Pc^hNIFE>tV;=^`AICH(imwbR>P*HoMzwu9=sT98SBz=jAQ6mU}In#WOew zHcG3lq6tG(;Z@2l7Ncaf*?;ti^EmAGkWKG^jKyfN8bb!X!(hiCdz=|l21evQCs%(mlEVLa1220?Y0~VZv>b!bd#nw!bjm5?pMsB7tX(X@# zH9bWZSRqo?>yhF#~{LCR@!?Wu^Aj`nVaGzA3~Ugi(v`7-Bl!W)zdi?eAdx(~ zKcm8$lfmde*3=H7s=X-!^dA}aLlJM6hf8p!ioVTbvFP<|HGyw|86v<8_B>~4$=GuG z;8Htf3wtRRHKG{IxqsU+p|EnQ%NiC81FK(tKa%5*eAGM8R-IeCDOxtL>{%&4*SpG+ z#phpn^ybZ*Hj-7Bf3>eBHU}|2c^DzS0Q8rDo}zrB7%}0wYyoLy9`gzE%zh2wNQ$UA zb4rwPdL!ik#T?~iEJG`DN)KI3>!FLP9s+IEOSKg%NsDwv&wpfklQ^M~DqVH{O_d<9 zKw^E|#8ht;ka-uP>(SeWv`jFtWhk|RRLFSvW%4`W@TLEGkm0qG#Mr z^n)W!0b&}^08s5=tcjCf4H33iVPOc&r(w|OhV(k50Wl3|02plaiYm2PqgP>J2+XHp zXp~P06D|#iX@5Wiz>twLd6XJy8Wx7Yd>U5Dqq?yM1DQ8Nw^O%A7uWUaPU+6;G)U*y zt<`ntcBhI?>ykRXUxyLa@PyNe+>vBos)d3mcNa#YAo6-q6A}==o8QC7`9A(MFZS{0 zd4hPEKM6UWr#hPMJ^+^#m)Q&uPq&=c(;@HX}Re}4xg1`IHb4!~E6o>BxqT{~sw zRXPAlXkS-J4KPsj{ShWcXaLq~TGt-=rl0p9uNOq5fbHk5$~?~WhkZ#6}xl-F^T5h??c~fSe|IfyET<>^3wExrfPtQkLr~OI4 zM;3}KMUG;j%AyF@TV@JNg?F+(=PyY{DZ|W*1bKa;2J16?W`nz0N`5i8iEdClX)1B2 zHHVTDb?2TmV9B5unhhNW-mfrQ&`6oh;7-|v7k?S20dSsKR{&f9Ze+k|#(T6xG0@dF zY`|8MqB5(N(eQz&wG`P>Jc3jbRO|pT_T?GJmU3zJ#%WaqPm~K0(ueU*ya&hedCdE9 z6`p}POgEa61*RLFMacpi=|HhW8^ktB9GKa9SfwCQMRn34V>cZycF%E-HJ+l!b#iA|Cln@4Bu<``VR(&t5vZ zij>X!_Qn@}a`VO)gu_=p-!Wsy>+1*34S&4-BmD5Oc@G?aA;jmAdPN`LK2 z-AesR!%E{yQ*XF8&yp9;&C4AzHg~>0W>^wllD{FiA-5y7O+| znfFwFPxu#MXFjD)y1hARAeaVn(*VPvgpiX4f@vT(4P;R>$d+9(Uz-;)>iJALoWUDL zWo0JFb4re*M&w+&PQydgs zqPD$+PlC?D5+*>DeLW6m8BG<*Y%RlhRAW|K7RmBuXm~mdCgxOMjLEf+6+5M2-Z#qN z&%~Lz9>wl1E1|EKP=58e)tEAa$4QyNBhxoMGJVS<(OG$%bpEuqTE{lcLw^<^OTsk(7z5i z9MY=(c3VXe69|zr(iN5f%flbGGFy4lZHkgNGCL?Z3d2^(CfOxU%rVJcq|4WMu`m*% zYzJfm=Aakl1WiWm2)!5Q=jrrfg!dx9l;y?Xr%=OCjhMq(5ZSzWGk+Q)j;L;Gx>|sl zE2>8rXBoobtWi7&nuBel44%x)j4Xh=+cGpDav~)~VBCR_Dz#P=l~RpW?o=gBUN~^i5)1?Vh*^>c+2p*724r=#>tGX@s-?8b|F`@6g_UMf2aRuL=bLUI*t#RY} z6`NK%okiYzk9|M7;(xU}Py88Q<6E_^wf35zJ5+M*=IK*z%lAj7-m%O*yK#1T(3fS` z=ayD)YMj6Oh8LJkxHS2Ruu=Fu%ECodUhQ8@R%TH~ILj0Zm~dy6g%pxeiD@xfi#B9+ zpnJ1+qQ`{ixu2L0alNKrnogoKS^tw|HQTbRSy^0xm~Soc$$$PSrl{kFjHqY1uqx{g z+XJ@8xJS*8`S#+c$X@Fo%y#5JnUX`wP;5Bj2{w~f~s?ErMQ89BO#RS}@T^af&=$Om(BVe4$U zr6qi7-(bINbYJ=2m#-Ok<*)q%fBeBdJn7~4aN&ewr7wTy*^e4me|+DQ9}+V9+~uF+ zn|}9KJg@8Y8zcAZdSc+*w~q|`t@EgA=hlMVk_URkgnv9ZNq6QzhMV%1oo)?dGP*Ub zOm?sen?~<3P7$YSqhd_EOkAPWmPzAn;sclmgY)n_m`z-swy&`5R+(Jzj)HKRyT zN3NGyDt}&u3JDE}BgIMugN6wjjg%@?4HgE_Q8R$b83v@zm--ZQZm6tSgONtk$Qn*_ zB<-Rfh-yZk@?tN=F=PkJiUBrjQ`XI(XKqf(tm>#a7a7geOR+I&XJiJBj}8Ty8GW0X z{4-LKhn&o5QJ`x-s)8*@yZ$KMEbIvtygC3Mwkh+9ORDfubVAN*TEU zt1y08Ce+e+3}`>+K6DH{!_6sgO(Ydh8%{$ z3|D5zjht4~?D7Zn>bah1}sWq(NnhCjn}H>HTovaw}x_jxy2>)zvzyZhX{ zn28b|nQLSa#yA6hO z9#$C1=p;Igcr@Jw(q@Poqk6p;Dw(Ql8t&ipGl!TSMbk5t3T#vLnNzgt^jf_}&wq(h z*eaU6*rK;lEd^q$U^7^{2o#c6(V6s4Jr+5^mf(uJ+XPkNRHaVVN;6c&;>@rHt!1iq zv2K0h=J%U_JX6y57Oa}O{uw^}{e5+7r@(Tg2~Q3vP;7rv3v zOSVIYEuJDzu}AT&_58s2L({V+ZGWaI-xT-sd3X<92!E!(EK6(Rj253BXOM`)&T}Ht z?{;8E(yng7!Khu~uZr>X2D#LIQ4CR6h({dRh3WS6^^6`@#+EqZ^Ox;J*rPDBN-@zb za0317Rxy^?%46iCi4A zF->$|V9zQUclSs7o2a*1Nslf1E3E1+IV7v7(}-G;h?36cMOM+`#jr&Mn>XVK@ccUO zex!HWIg;Q;_O@}N-okVWC>zG%r6uY<1;><*DPvXu=n}d~8KoIPYxnNm_RM=WUf<{) zS2DZy#0l=P?d_||Cf{KDk$--2^P=rvEmieJ&A=?~@4(mDsDO-MJJoD3fF)!IIj%R< zIYeESC#%p9b`%CH3}YSF874cTng+vi!zKOa8Rk*J!n}#WiFw!O?JV3=s2Lj=JEE#^ zvSD(dZp7Tc+z~4@ivx>CG#7RhzLR%0@M-W|p4H_PGZLh$H{WO1V1H_WOEM}(&0rvO zpgy2~4N8zZ6-n^?4_1$h3>gMz`BVg#^`b-Z{9`yAlAZ^~p(+BNbu!<>#UFg5+-m1lwtl-Q=kPZE3s`{@qouO$Z zJtG0LrJb6d2s=51>^^~cyRhQM9A<>Vs*4%+e5Ow9X_-J>Uw^P-7T(wdMCYPLCOd1) z1Jy!J8A^R)O0BBVIaJjw-DfD7wBgQeZZqB(fA{=NzkTrN?N7J9yXR+rfAr})H|>4# z_FMNhWX=keESX;(e*jm${|Lt0AL;mNsP*%|${en|WkP20I|YqAT0X1+qmQ#^JnBE|Ai|5Xbl` zS>>{;6ce)pb7hW`iJaF=fccVVn9BsfXUy3F;2q{o5lT+XeXzG~{r}u;xFBoQMPLrCL6lqe=E+UoSrhgPMGl2RqAUy^>mx`3AujPYY zU#8FF<3wXv3T1@-VQq*H2SaXCRscCI_5dI|?6L-OIYKCaeFj$mJFF08>jD9k%Rz)v z9tm?_(m$#wP?Pr{r{v}a%pg&@(*121o5cW#p@VIr&StlpT}&jIxgoAfQG^aU^EkD2 z$AqlItbbi_Q$`V>3Q+@|ijAivWaX|Wt9J~X-1Db_-Mu|{=DWKw-WA>#Sae{`mX~h{ zjN6LIx9>VXkyO2aubf`D{t&+LPjBP(y~`5cEneF(ZPvXrw(Wj(;ERrya%=^8RuA@X zHpsIKltrA3N?d;A%OLZ(CZS0;&(O-P64vNi4S(7Uy04VEtN(gt{VfDlyeZmFCDHSf%iT_kFw3ZQC2 z1b0hvf`C#?Z4#1-C1U3!J#S~GFmKR%ne5VQ(#{u1EuhNMqNaA$0i*V?RYG7KTOFDJ zbEt73oJZvqcjMv0PY?ZV;2d_m_XljoU!B!=Z&|$k$~$D1aa{ENP0!+}>&ag1$A26) z;{1UR2ELT!eTSFh@7*_P`O~VL+5(F8HK0K&)-Vd3P-MpvkAr*}KZ&2iFXcDzqRy(- zX>}&MRcAt+78~eUFBm(z{GH&B=E!zzCpp&iK3UUR#hTt2D>Fd*6zM;W$MjJXNKF^kol!6DD!_bU0;mE>zuszQ zx57>9FbE0+wxo^|4GC^+cbljxj*_d!s|#KaX<3vQfPQ#0X4M>Ze+ar@Nq z&*V+1YF>BcEozrs2Yl>JYipf2o7n?& z{x;?s2<%IRF^S}9Wd?=(F26fcSWs5MR}@~$Pc4jUW09rW6_Jg`t;Sy)zchUrv6h#a zF)tP6mbpp-4)?+lYetX}zJDTfm3fDGw>fDRcANK^&zU*%5ilAUgC7Kcld2Q5YFIMh zg2H?jGgJ0vk#37Qoc2!LY|Hn9ck1I@U^4Z%3spDO9Ca7!^)>U{-*fnU8ZD~z1>cGdiUQPq0*H}ME`ODll!9{A<4ktE z`krE-!_H*`&ZVTKp1YC-iaAd~VJR$!i^KcELIsd&FQvtBBKfuo47%n$(eP+mub8ON zs_3gAdn#}RwbTwWV@#X=BEl7N=M<$Gp(xD=MJb=%8ZF8_CY}(9U#tRq+L6A}bEI#~ zQtgb2ie|d}BD-l2nSVSJjdW%rJNprtXD>4KERG&04YBFfYl90Ar4JpO`UfQ)W0S~V z|4McBnFvU?2s>pg8uD_xs=L$2j!epdm}{c9y}&$NBw{q0M}Vz=unqP)PtTPwm@~Lt zE}w%*G~d-D!78d~>9L@#0vIgB?5;6oW7X?lc05QqEpH-8`G0U34yP*^=0uH|WH?mY zZ46hr-!gskbcflLnH$pIH1e8QySx2?dZp#MQMaDIyycp4`2BpJls~O#YV(2_*W5y7 z;XM$Q(|cFE`G3D}U8_yse8>79cd3J@UvqQ%A2*~!TK%v4(1THdU3&^tTb7S2V`kra2*&DxnNlnMLpmyM&^(4vQ7Z#3A&_C`$GubMOwDOT1Q;I_WlV}V%mKU~v#$oI{5G(~)22Qf z_$>Xkz<-D7?+3n0uT*;NphfM0M~8kmAYFiP-6UYcyiG3i8?;P+7rWaql^gmQTJq~Mk1=h}l+<26F!qIA7s2 zz`+}g*%q@Ix!mB5z*KF+{0`d?bI*3w+_QzXM}I(En^Mc9)zb-TrPOD37u54BZKj-w z;V;u|N^g@XZ77%qKe{meA3wTCopKn{$5ZJ=JfHsd!ZY;Si}c4AV92Q+O3I9*D+yvw zT~F#RbeWB?id2MQq{VKwqU_s@NEH=_>Ni^@?1F*>0#<;jqX^O}@HiQPE+)Agh89k^dOY__!?Sbb#R%9R&5y#4ORdooPw*~Qj@6?_0}1RKi6e_(sC z!6=QCu94~`zDkbE#4nF92D3^sO0sIQ*2+6&?ReLC?{%*0yfN(pW239lyHdN#xI$X( zTIKDNfA4tT{eI@}v(GrrWS^FkvNOm>q<=`p7=FAonZHh&Fa6cxME}Z%Adv&IWY%sqAd)i?g|#_N9^Jb%kR3%u*Vzot}k2suH7gRJMM;m7oUh#$k%afeMj zE6Q+r%3NBj(dys?j4VDu<1pxr!;Z0yLrB0lc#NGFHHLKTxLJq$blAyu-O0|ib?ii2 z$4<0$gD2WLrWbUX6i-J_tl6=Yj#-B~YSFV3Z5=z&ru7HdSGLogRQI^(DSx)}ypybT z?s3MQNhj|l4(;F~ncIL_Ao$8olE$Z1k zMx~8P^%IQ2lWVhR)`ZNW(Th!5OX|dWGXh5vN4y6NdZgzBOM)xzZ4)#&{Ygezx2c4} z4y)-ALxy#0?_GTxe_G#r^M9(D4^|3?uY9(v>8T%HSxA1o^^Q3Y-Ff8*qXv#n9yW|8 z(;>}95|o(H-6)CY;1+x2_%L#V0rUxkvosx8k)-m+ zLsRm1Ku)9rLVMARcm;Y99YZhU^YGR_bO`mLUm+K&ML$HF(04(4iD*8Q+>d6%BS86g zu_xJ!iqMaNc7BYG1Ap!f=q_{^Ik7wWH=yJ#-0$J7EkFx7s2a^gYtV!E`sB^15uM`i zLFMRrbQ4;OJCY5_hmyOJPobZnL)@>xxHh0nv>2Y_$xnqpCEr6M;f?R1N6{&~OSc~> z&`Sqk{s^r@k8w>rPA&ri1bPX*gN?%Z$b$;ewJ@Jv^c&pA z4P4ngP(>FSR%ryPfSNVvXXuycBo5-AlQn`-C=nFl_T*bYv7^yE80|Cg=EwNoBy-(hNHiMn6D5LO;hQn5m4{<8R@&@keA5SxA0BKIFd3Kg<74(*m=; z5v@iKqUX`Su?>&Iv+x4E9B;x~@wf4#_&7d^&ys2~mw&7x=eXruJNFV_1J4|OJ%5jI zpYVWqcA#P4)q&p*{5x5aybsL+de{u3{~lPQy+9`?(4XNsg+9arHefS6G7jK*_zrmP z!Vlsn@Lv2Z?uA}X;t%oP@MrjQe3=0I5|MaGfaJgvB2I_nT?MDZP@;pAxZ3eqxKYECi@*eUV z@_!qk=Y?nqH;n+LlD&8vxfA!2T;W!60-1oPqw{RUoR@>J_4V8 z75NkD2R`10zK@si%g{rp6mLSGpr?T=MhG{F1!4yNHCe%T5~S3b z4(59YY9+Ii8@Sei6|fFFU=WYcX!3BJxZKRpvt34ax~Te^vv) z57q`_a=f3x(-^#y!6twM0eC^Kb1$!zpU{LYQU~OI86Rf2ph;yO3mL>6-vws@uYQ2F#Y-C{^ zPg)#Y6i30DxFy0+&?MGPT$~iwux{iPbT;S#xvQ|Rb9+KUi<%?GCBY>vjSX?GB}V(O zMxfu?xa;;a?yFg7+%~CU>(E*+*IDOYA=7MU=T73*@qZTRQl>MZvr^~R8myxw%`4@&E?5&>-np_FwkESPj%ME$=+4Yk z4kb^c%sRPqZbL8-ukr?CEw#Qb2kM-CTaQPPJ;Q587IsNibz!^AmK0z#4Fy^U>lnn) zDO5juaAh$aQSe$Ih`791hLJP`VNT;{)H)7zE*=MH@QY!1D}TNOc4S3dH>tT(8c)mV z`*9&81?A4q5l}#||DVH4T2duqNctR6kkZK@sX=`jjz=Q#f&xk+nn|#yFvf{2KW1d% z#smol*Ge)ZuzYAHtZhqdd=V^vAV4?xfrNq*oaPXU%Vr>pGiLYg<2e zSWc}UH&~Z~;`T`moR_2^;^kN^5M|>aGR-s?<9rDIL`Kw05*jT~B`d-5PeTyYmUrP-$K0Y!$KVevY*zk;<91IxLYk&RR`JJ8mVRb-iYKPaR5}=;ilceJnIZTC*LWNaF>hRfC7VPMfd15?RCXAmHwDMwN2zmU;bahWot=||^5o9u z&Xz>7V^L6+f}MxR%jD(GwRO#D!bv0#Kj4i|-X4RsT8_t$EDX|`&dw!WhzmhCinj|h zpnTE;v48lCNGup%6bS}`4XrSjuJOninAs$ivrmeN9+k!c3iV_2GQqGkBrLkdD2td?g5EWbE`5i8TC%P?A; zAZnSUb`)kEDPUMGPVj1tlE&ttOskf4sMz@_Y=14(NVMiK`{&uLQvG!y_Rk6R<;r+v zf-;d*5m*sg)D0zv0e1pMJri*i_I5#=vsrNhcXUlqyoXpzvs0KIfJw_b2FqaN6m3XD z(4RW-c~@sJZ+=71L8zgv6i6%eykg~3|`bawG*@U{RH2IDeFYe4EkQ+%<`P8psctjgkOgBsH+ThVz-GT7T4>E6~sZxrZEcNbs$wY|aU<9Gp$*&iEz*H{!(`v)zpcG}t4 zIUndT5YM6=r^W$UvoFS4fRQ}HMuM4gT7L{S!BWagG8J+lCWF^?k?9eZVwQGZ7pz+X z7&L&=9Rr&cke9?LR**6cCH!wh!b6a#B4LepN)ysKoXV-}+ZkUrJiB}_JDCQsQ9`3s zF#&U7EE|Zg^v2s_kwKIeI_FN{?eUbs$FrBG(9jHOXG*+daSIF)^v$)4gHUiC6o1GK zi_{gQin^0pPK#UMHM+{Fp5iw}hBXN?0fUHwhUj$S9W&+TnA{991kZxS_R4VqQh6zu zPr(){H)g8ynF+!ll9tXn@Ghd;=8bDWo-J)@4N~D6r}VC_J{=g?C83Y=F zA%-RcGBh8Ki{Wc&0)J~G!IoBP*?%pihFz;_a=>ue>d@A_b-_RkP)LZaB`h2;+9Db) z?xc2OQ*#7X!rE!;lq))c;hR8K@!`eMW{_*LBu|#vR=0Q|2a9km&BdT06;T(Wi10r9 z3&&SSx|%eht0nAjO+-c3vR0W95ucex(Xc-N+9Pq|8V8kh@_6=qrWatN=zrn~p=)7z z6`(3FeH*xFZc1&a?_Wz_^`;+y}*pWos~*`s@ljp@P2axv%s(&fyRu9|+F6j*0ls>E2eD@2z;rZ8LYMYkx?Mu4 z@~c0m2u0#^=n)>F0QC|1^?&GL{7bYA()*ySO86yO3UDoitx#`=v_`Bzt0Ao?&!H`l zUI+O1@E@UKA&MTScr>KiZ-W-08BJj-oCl8*)QWK@LRJu+wm*SMQjCzR86gi$%G--j z7L>`2Fq}OIg_a|f2k++t?ub_rihM=?&kr^WC)tlG(d)1-1WC;AL4Sfv_$Lw&>6*Kx z+Q1dkhvc9v0U-Oif^IR(pWyO)!fyY`qudB|8Uo=)bVsuMhqyd0t9yc9NpQg) zTSkecdL&2h#fn%gL%asUJ_yGk@Ms~I4doKVcSGoaun)p92qz(k2tiD1We95^?1pff z)^J&zuUqy@)p?u;-hcJL1T35jor92sz`;0O(5nm0fUpq44hXv;hzyUGtbuShgkuoS zvl@kSb?+*LvAen-U`fx)wi1?YQL~LrEZcKKOiicFQq$UNRkZOc+UPR1cvOv=<`t@` zEmYD$Q@yFAuiD8uVUkW5_*#fDc@`3t(6oTh6I zaTSE!5RO4O0pT13k(`F-6g(f050HhtkBT5vL0AZ3H-uvl&Oy+S_aTZrvm`-&*Zt)Ppr|nH zG*HwLE(c9SrCd&TXf%+YySs9QKS4g~kt6;+)y3p36o)`yByT~_Zy_1NObE>o)J<$v8_qJ$rQ6tXl5KeP)V8inuO4iJsPw{HfBM&Y)N0MRJCWF+9k1h# z7jegW+!4kdA>5IRJ7iq0BuJq9+ESL(v81P(G99GXOa$p;Apuy?0ML8@WWq6sPe4er zoB~L4j*9HbrfE)3L6w>xHNIpGu+J;-;w!KXub@*9c-WvgSO}pH z!hbmkNeCif=fJ>su-F1|5rirT3nAPM;T!~!4d)yLg4U#lxQ`8t4!S5c@EH(z@(Mik zv^YQlN|xl4BGOcDhYwq_@r>+bHYrC=CrERfRclRP(}91RzWBEZ>8f?)A+m#tZn86# z?&$s!L^pnI7lqd>-Qhz2 zVQi*v9q@nYJLCVGFF^o2>pSBAqnzMzxBm}N^85k+TfY1Kzb;B>q2y>dfgw38Gt@)A zasC%yXQ-Q@;<0Z3T{Jo1ztcCxzskodTGfgh*F#RR_-BXb`=>&CwZ27uWj(Zcz<*!m zyU|~%VvV8i9Pk&z5F#pA0D~RjW1R-Gp`_P8X5PH=1YWKbY97`!Xl7`}YDzSPnt;Zy z$~4Rdxyw$zR1&b_D<0AD5O>%a;JW?Om%v{jWh4Di% zD2cd zVQ^MW{NegJ4c%j&doHUc7B69NG6`^f{5$mM>Ja`6pRcPug#Sg8Si>Q1B7gp@ZZ<9F zCf3Gc^$8qhcu2wHO%KfY-4u4<8@u@hb(`g*jX~6mKufD$F*IE;a;GPMw#f|jXuQ^!P z3ZXgvz{cfn>cPlei({$tz;N@T#mi|5Hhe7DS{q*+td+YaG=5EWBdwkgtnEULb#oiK z8kN@C?g`3-x?oFftY^y1vhrbl-9Ok@+03tLY$k22jP^C9{A;SqX@B(;+E+R4tDN>V zMVZ3-LX6aBHgsuGO>9!5n)VQb9>}&C{GJ-8w00t+;RylvUEafBy6i=UNGxs)*2GN^ zXw}H-k=3*cSc_Jf>Dg|o%6->_fcG%oo2rta*cz-skqtMmzZtpfR@AD0>){7Q8*Zix zuEvq|-}HmJy13F(yMKNILiO>2IrZ_XS@RpZG#V&vrc;WKPnQ`Cb%|u3S~v;{$J0WN z8$_gKm9$K!OCkRE{@tkFzyM8VKi7+>Hh;|qZE2=Bj$6$i% zaRjeVw~-ol`ae^PAUfxC*l=?SO0C6)RI0uSudGim$>5JJRy<^I#Wt{J*>Xl28>-FR zSgr_FgY8@l=}1UNLRtc830I`p!hVjF`*qrKzd>K?*NCn+GkTN3Hy{Ht zI5CstH*^AXfRkD{BLTCMemE(Ad8xm8|AP~{6>`zGV9>_nUIzaiIs$93CB z+n?fd^9W^{7u=Gb4K9Ar7zTGiq4K;1Wo;|anSXob&2qN-dk8{RCQ9=>7NMHQ#IXof z=80p88qFFVS+YiwMwZMac@OM8ke<0BmX%s5PsiZF%K=ZDM)+h3?`7HgpjtlPD&q2SQL3{i`tS{ ztwR0pJG(j}w|OWfr5L>5%52uK+tA*2x{F)&I~ z!a1H{LU;g-iHM-cMND`IEJy>gSb%?bs1^9jY@-?i0RBy}Zs03_aG7H-v$Cv=GvBrk#;M*H<@Ziwbeo%Hrj_%vs!wgUURFhE?8li%JsSgyfFd$Offc zRz@K4(M_veV0-Q20o}x7AjR=le;E~mF z%I)o!=3p(AW1z&d`6n!h=XxRV1m+x2V5#tuV;Ir#0>WQ9B5>w3unsTHMU5P2lxn$k zD3iNCW8`DI$F!^+V{=nvF#|C`4&eX=#67$}CbT2%-A?U)Ngwve=Ms4L)&JsfrCJrJEg`KkTguDKD41QI;0%O}vXn(34f$It-cUL}4%sd>c-=3cVH=Hceo*ToJFk9V zxDU`2pE7er3&Q$~H_~vwa8r=P^$?de+(Fq*0k^4`MS?*%H$V|4YHhuoM;V0=I*K<$_j-FWo~41baG{3Z3<;>WN%_>3UhQ}a&&ldWo8O7HZnCh3I-)5 HMNdWwGZC8^ delta 15012 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%0AH<|ryJ&sov}Cx<)aAPBW6k){mz^` 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 delta 14337 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 Vyc8lp;9%iqhNqyAP?CiI{{YHazr+9l diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex index 2f4adfd..94de885 100644 --- a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex +++ b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex @@ -5,8 +5,7 @@ Конфигурации для библиотек My\+Libs. -Collaboration diagram for Configs\+: -\nopagebreak +Collaboration diagram for Configs\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -18,6 +17,8 @@ Collaboration diagram for Configs\+: \item \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g}{Trace configs}} \begin{DoxyCompactList}\small\item\em Конфигурация трекеров и трассировки \end{DoxyCompactList}\item +\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g}{Evolve configs}} +\begin{DoxyCompactList}\small\item\em Конфигурация однослойного персептрона и алгоритма обучения \end{DoxyCompactList}\item \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g}{Libraries configs}} \begin{DoxyCompactList}\small\item\em Подключение различных модулей библиотеки \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -26,4 +27,5 @@ Collaboration diagram for Configs\+: Конфигурации для библиотек My\+Libs. \input{group___t_r_a_c_e___c_o_n_f_i_g} +\input{group___e_v_o_l_v_e___c_o_n_f_i_g} \input{group___l_i_b_s___c_o_n_f_i_g} diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 index 45245e0..21a4273 100644 --- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -cd205bbe89e6c9feea836cb8938585ac \ No newline at end of file +e21133381fcfb6b51ca1c555273b8ce6 \ No newline at end of file diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf index edcc34c844047609ac1cff2cf2158ea3952825a7..41f160c0a66f0d4cfa310f5f0f220a3c713634b6 100644 GIT binary patch delta 19310 zcmZs>Q*fZs(ls1Ttch*gwrx9^Ofuob&J%ND+qP}nwr%@6=hXY({WrZ=_3G;C?&?}M zy?bInv$8>{$(6(;=$RQfVaXdWtKMN*n24B&>`W|S`S^$!<;-l&oh*o0nE&HbiQj=B z2NE^L9o8j~JFYb^V!8fyvc7lK?KzC06UH%7CL^)Xb1Rfk#i}ci8)j!|$K*))o5+Ym zYhC1^7*pth;Vs+KSeP3wCV7U*tR?Rg!g0#t*h$2`sTxW*^g2&W%#H{91lKTHKst}R3N3MRkrJA3>M-LSI55xK03{ZiKaxpwRwx4YiE<53LWHc#ly#&qPP)y-bL ztXd+;49lg^q^A3LG^mv}Vd=z>aP6DpQlRT+PYV6T-G>Lk`mAkE6yFNwNQL-H28<MXBf&I$yrxdEV`YRzcDJ3Q&CKbDcJ|80;9mOQkt3jKg6t~|>Fi}D;<3ZW`iEDj|P zLbCD!MMtr^*Qtsi91&KlEDMgnnIs}O3OPuyM@!8ATG zI5i|uq|Fb~_zcEZ@ebiB6QpcLo}Jw{U3fOlR?52I3S`A(7_p7$Jao6&!!^iBVOfPM zqHwHvNYHTxZ+%U&la1?oez$hjo7<1YAO(!VtFsERi&2L^ z+uoPIACiTP=T{4u6bx#A<4&s_ylk^PTk;IPx6+!_z|o^-%#M+Xabk0c}_5YZd2=a{4bEjXE}- zD)a6QpIN(%V(C#++;+KunjXn)4k&|dTm+J^n!eImsa|P{A&LInu?~Ew(n!2eIEP^A zL88eb?$S^?bY_iUrMTT3n<|#4Oo*_eCB%05*z4Z1&EFSvCH%eqnV!wu2F)yjY2P3s zmhN7#X12c^ogB=JZT^e?D;)n*i~j;5A|hrcR`&nT&&(aq2B8VZ`d=;iFDD=n&n3zP z#=;&y0wGAR!n6~96n+Q>0<{hr@&A*Q{r_a?zezdc=>>S>?H~~Vc6M$SSOEdp|Es_) zW3$84OKotINr3g(=gGyTepS{besl6SCowMcfe5si0~o}>2>ud87}-WIktPbQWeEvZ zWu8stn#PPyqsI6V7{m-z*+Q{8bw}k|aT85t$x8U$i&B|UUHA3GDr(Y_K=zkF_H(r> zC+mIYcxo!Zdfz#1jVu9OT7qg%)#2v+z9xw0X-y`A0EmT77{Qyh#SAC37 z*oX2ULZf1<U9#|3Zt3yN>L-QiaG%JNLsv1Uk&VsgQr6N%&}^DWF_IvcOWmpzwjc z{#<))^J_a@Yi;`j?p#7(bV(a35&4gcbP7uh>-MCa$@PF%UkFn z&r1ym-iu9P$4;llE{|?Y<&>>Dbl>==MxoBD?%EE20*w)hM zuFdsn{6%MrFy~WAb2+(&WM@<8t$jac6s2J$xbz+e=@KyrqE?OovYAB(z0cG~C6_J! zd3x{dBmREd;Q$|W&? zP_=f)W0O`~DyJA6^`KmF zpo+O@H0t`c-$) z{qZxR53XUY^Mty5eD~|h4&lw&`5r289G&^T=?RsMiP(gv<*})nILPS4aBYh_IO*b% zB%j{)du4Dl&UxZ7-h7)6Rw*?HA9|Okhq=c*PX+#*-14_FH!8Bc5Liy{^b>4xH_jSo z0wkO^lU<*;w8^M7wmDcHj1&mGGY?ZB78M*uozYfcuIkorRvvcHSqL(ay5C~}6F;je z>i?L>v;vkj6XN^dRJ@6sGBVtG9mN^yWCei1F9DX z>O7EJlOr91pO_W{zP$qBKnaLfVL6)n>*-xWYO)eWjLYU5&zRBK`PnoXlM(5lRB+V! zGWpjcWlgpwB+6;ey4R!o@Yy*iu45UkBe!{>qokoB;rH_XFyqnPZG;`TF?yjOWnmxb zNQ7O^${e!95}jq!uU-cXIq5rD!yU%Rj3iAAn02tCHF@(F6Q^*@&1@G=pWJ9@Lz7&cH}j(Ec&{%u+c_zf zRc>AwY(C~FNA^5x7nolvJ)yezE9sD!b-HQ1(~$1=m0`+&UD(sBQ?qb+>c{mvnUGZ( zSu2}-M=LN>+2W+8H62;aRgI*k$cws7_6z0d=X)QMar#_FMdmszkWIzh;*aU1i+e&E z?lVDyyYvlLnFDD8Jt6JJ_^PCFaZ^9$@3XH5Y40CFB3m(x${ITA*+t6oSVUO|I!d$MZVh|?NR3fz=ax^mcQU^XrpxN{ieSCt zljtej4`4OBLH9Ik4ME4ahkH}LdB(Qz-3;@TVr?HAqV64Q>q36*Qg~`zG3)X%kvRbj zbdOeb5$4`&+Zih0Cyoc^f>wnF2o0ju@)`FNgr$Y-Y%;UDl$hxDYeQ3Q|V@IuLr^vd8 z8hn*a>!5#71xss$HY_>A=*)TyCDg-6NQEH@=O zR{xqkKH4!3Cr0wxc5@3Jw(kyX@@8e0Qg8KP`frI#F4L80bvg{9-hS{N$$ys43*+te_YQmNvCSZuDGjcsJJ)q$=n}Ko}>lK=-cCJQH;>W2L^cG+pv=*^m z!dw2At#K1>Wb4|aV=eg-t{Nuoe=mSY&6A^y*{CLs879kLLfLs*_EcQV=6S9PQ+Rf| z3hB@92k#sCO_Yt4_Z4-M)m0?4t?GS|ON~tm>#9qgV*<|Ai)Xc4X5QI?u}1 zRjZ`sTCq*S$s8l1WVy%|WyR{|5y=uqv4+S`!EnPPZa2CL*l3iTout~ZoZ`q&mN_TG zI40AOet;?vV$Xv$o=+=JI`ISRNJKw{%qkzzK9tL}LUflKcm5sBs>eJq&!}bCi+5NxHvxdQ!T{}M3n+@J5;)Ugj0$@R09hCurTPExSgj^$r z)Zs?h$}zril`9Y9$hrlRW0fl@%|#erfpn2qVI0hMA4a{u+0*-ytwV2;khpsDcR2p_ zdT<~00hd*a?w7rjdq*4h2OWx{1Q#{#ovi#eS&al!s7@CPE>>dmFG5O*Gs1Ut`n*GF z%w|b0ZTL7lJ+6)*)g3_3;WVOg1n0QiE!gmMjdryyc+zA86z(F^$%nNX^elhltU}`6 zTv-Cb`khG3dE{WZMO${=Au^&nVk(%a;hZYBSaw?Jw#5&QQ*P->sksQ5a;m3^7_L#V zD)_aNumZH-YNKw|XulRLiL_&KlSBT{fBBc;7=lgA5VOh1ff=UphF3G5>t+zs4ANqyGIA z6?W2hL05gXW9nlCdB1k&`sl~J$1=qg4?h|%$ft_j?!ADmSa~x$_aKl|$xsbH^=&YB zzd9j(BW)vnBVF=p6^+tzy7G#0Ywz1G6G{7yk`{}Vle|~U2s3Ff>CvH+p}eU)yK=!A z0j;~vy6Y$}mCvw8$w9@WhamvvIY9|Ma8D{1Mod0u1VRfpTt0{bnca^Bb>v#HySyFN z@_2lZxf~cf4%%<+Fcb43FgptRVhPVD20DRYAQy=KZZULv5&dHSdj9Yl0lKqa3?U+^ zF;^h+Kht+a;4`YC%1hHxknR6IAcXe4UWHnoFpLm^-BU&#bhXm5i_2I0$)@lbi#KNGwt98G=`rXZQbkWcf{!K@@h@$i`3DNZgmnD&8xJfYYb zfK4Y7MBdDxfIkC>voo6+(vrKL(98MQJsF?*EFZbfn+?`>k|F_4pH8acvSdrj49o-K z7UWFuQs>hZrf=9QxnZhnAhPfX^!YjR9oowgA(uG$-=tqpjQsBkvBASyBiAQ-`- zYCFN!0|W>;eI=7LNUGp11zO635QIX+0KK3u%0#h3IV%apf()u|v#q$c40)rgE+e{; z=!Kuxbo0ReE2*22;5)B`)`z=$>+3)CLjx7COf^upKtlxtQ+~BuS^{Aq)Cz3=v{IiU ztOtLL6MB%t=+f{<{-}1l)w))mr%O$O)LEvY2S4uSF0Sp=I$Nz)v&3Olf|mOm;5m-g zu=Vlf`WC(Se3>!RNqhmbJf+R~Eg@Z2B#hQh`zpQD$VHwlB|9HOox@t230P*IW=`eC zep&PkCX6{?N^KP<@1Xx(UMF7%vv_s3!~Uy^XPuw2C4&wni6&yxrk6CAGmz79>lTQ) z_j_l(HvA+!$c8Tz%~GO@)jTc*#;wM5ao4cpBw|R`p{KP}Y^+Ekn?|ond#x4lR@u)!7l2A)qjlf=oBHv6#9QRl!33sv*vG7^K@{n5c=0RB=R8)tT zY5s^yOUlhFaMd0yWZFzAP!i5zr_WH|@#w4Z@uuQSD6defI4_JsgUbj4Aw@(78FEg% zr4U6}S8Q}1Ac(2;>&Z^G9S4F;gXTlAHH@b;acrsumcdf^$$WJ9$y@PrKkZ~T{pnD2 zji?6X23Y*#?ox6fQFvKp2fzlgz?_N3cjwxw6im-Hgz~P?;u{wXRSkzfLe%uZ!GBC7 z+cG4}C?&Q*U$_+LfXR6QI%H7J3%)xQPKzwdLIrDo5q>$b2^n5++$6zFFv~`7eH}%X zZ?)uK=H6}j-8gdEzTL7mTl;)e4PSM>u@UJ;%ye_DNRH-Gg!p{8e;)7BP#NPcu=*VQNi1|>9xP4*g+N`tLr zyHmT|D5dQiE16Tw8Xf?PRo5{*oNUYp*D9RWHzSYK*Kak! zb~7BcCg>d8GxltB7kVYb8$Y9j=dBf1$+IT+NljycwcD{l7lQJOOovo!v~8Uds;i9kx7 zIEerQa|$3vyc$nGvB~JAUha9;X1W|lKk+W}F}AU5vn$~`H2T@TfMwYkd>kKv9uyi3UB>5Xl?u=UVWE{r^Nhw7Gb7-iq!Ue9g$xa)rTvZ>=!KHLTAp7Z z%_gh_4%iX$40`&Ra_tC=QBvf^DKh-7nxWl}tl8DczwcgbXASJQk=D;J-0eS}UPVPu zi3Y%7aPjNQ^AlTDriT4_&ku)XgmPR0FYg^l3RwbCsT8ET0l&Ljr(ou)ztD;ak@1AZ z8asec-E$pk+PFO7eIP}`!%#mgM@vIrlrCE0&-^~O`aVSKlW-dM+z;6wk!hBqVbhi%GNBvh0Q?!{0e(ubSce#5o19N=@~ylZ6pwHWaun$X+h?+xW8`gAnG z;>)cn;a6uvPtGkbQCY4zo7=fy_6*y~*Q5J{U`9JU`)8VJ62K)tdiIz-rSL=v=>mw6 zC}HTc7KIn8FG}z@B*bD2X_XB-bgCl~lU@AWLVdwT&O~pCsnIw=n*&1{DE!Iro9R6b zzJ40gwgqmN^n@VzLm+LWP>Q6Jl4p#5(V zdEK=4VZ|KG(hF-cQJ*Q^x4-~Q3S7Vw6+2_ldu&*l;1zNmH-xc1-1a<%a^#mL#f~rJ z7gAFZ!@TKwazlC}2WkysBj;-RCWJKwNa^B*rPO^LSgYCl^PPHgK>c6g?tXHe0ldva zXk90(m0mhR62*E_G_yAK?BBjTQu;x><*Wt0I#%NZN!rKFblD1MsabteGIK2TOd z;}2V0MfkYseQP-V;F8I@#kqxU<0ndS;edLaV`1^&V%&UO`&=W7x!Kj^9>x0PlwC`A zZ2RQWVaKww-PGn)$f7wNqeVyt)Fz-T=h=;00pPVEzs`W*I^qwxfyQ?^TTbJ zY&a8fYM0OhhC_BHNhej8BnMdL!qb>MbtnzJZ+CPsVOT`K4q4o77^0&w3P}@j587}-9Gn4pWXcYRb^Z1ddg5YM@RABT~@Ch`d!dk?c#3rv){nnsp8DYwoqys_Jv8b`G?$x(i&w2Y^Hf z&E_YKyBLd!bgA>gmNFVcf%K+ZH(NP7-^~^!cq^!maa#F=%gLRx9&-|kXn43}3q%h8 z`}0Q{q)0(;#tWo%{`#uCR2|OB^3urkYO>N9<7i1G!6tVPy3$I1XDMks7MmPw(+5!t z^CZzHL{xp%63lj4lLeqiQnh}m-Ho7idnHj)&b9ibmB>pc{ll?ex1=DmB3^OLmQXfs1?{n}%Ema|ATof$=izAg3((VoGk zaCQ*S6-pw9vFAhQD^oENt`j@mu52wUXx&gZX16A_%!<^U*av(D(MZQ;?7Q#2_gf5= zzXn^ooi`d+4QiL#{v6E$=M9dRQb9wtF2u`Mg=Kge&5B8-l9|o5-htgT_@$k zEd!c%4z93J*@P8^$NrdO&CouT;h^Hd@y+;4WJd{?nYe~E zx58jB7q+fH2|#5lr7q(#ro{k%yo0B5!nQp8$5KimUXcrdqTK4cWZ~ECBBPTzh9Nq( zVIhal?}1xgxfh4&0doJ*jHJr)B%+QvO1p zHd39FV2!%+u9&PKXIrr-TS7*-tjtu52%Vo#{bkrKEpT4lY5NffvtQ+id2>6wtk3;) zx<~zJa}KqY<1tzA@TUuFX(srCOJ397uqs-Cd6=)xc}8`-a3Z>&MlbHHSplUwA>JgS zLr;%-TzySzSxd38TG`5h-5tjpE)a6ex^i*xEcH^CzCt6(qFle6U)GCrS5F+xdfCA- zsP(LI2|%zIDcd4q?@LVi zO5pwlN@fNX0B@v00lDJG2FYSRC+Xy=Twz%d7+WB1%%m2A2zJWc=Lw3JV?(!a3SYA+ z7DfEWWcno9gVD3EzTOe+e5Bnp8ajF{`O0;Z}*TyOYm zGG*C9jlh|XnePw2iTFgFPO=4mwne8}N~^wO(HA@ux8)D;{Q1QHTsO^PYovDlvYDF| za@P0QDvaT-%?R)ea8w2y8gP2>f4P|{DJ0SJosPBxw@??Yht41SaQnc2=NgYBiT@VH9Vl?(o-NmA;R#eqPCTl!Oj+vLv=CZ*U zw>AZS#^h(qppox;JVwCx?5Dc1$~P|Q1fVtOFmy3GSHzFafz`BIV^dT)*|aniZFLLE zZm#Si(QeBwWJU%Tcq{r+6R`dd4BZbo=w&o{ zBq-Sc2RSGJTru_)lOlf0@6Qc~yU~2sk4zczh{${S*En0z3sD+InQt>G?nHSk9l$Mk zK{G+z^RAFpB~Rby>lFQ0!59gKIvG`+Z zQkfck9k&%aQ*QY$9F&|L11WooAdK%qTF6)$HLzHj)@U#p<~t#X*5=1`8HpYr;e#4P zQF0l*O7X?BM2qmW0qHpsPTKJs7NAbWpwwD|b2oit^6vK`g){G#!qwhYlFNwx7}9M2 z82Fjv3CyE-gW;J55ag5F6}hD*D12RxIm_J$Zy@-^(hz|Owf&^v zVQBa`;z<9D4_P!CacNSf0K%jJ)%fw?0qLanbf!4mBZ zmnqa=dt0atx-pwTs@tu3ZVMpQ0TKU|hf1@grf;Llt1d7RD3=0*mq-w%Mde@KCAXy% zr#6;E<*F3Ps{+qe$xD^3#JQItqw>nGS;G?CA$S^2>;$o&>BgzBTc3io>%j-^n1W+C zVbqU={!^KAKNu2m z`oIgI7I|5^)GQ*FAm3s(|2#8wcW?TOE5O%TY2=;iNH5e`*434-o|&;Xnr z>~a49ZAgANBeDh;gAOv9qp)^v!B5C{S$>p$Uek6{vZKeNRa4%~mC^cnh~LjVt2T5l zX*)$&rv)ung<7X%7jk~o+zKv8<9~Dzk`*xC?5(P&`DzGxIG?Zu&^D7E23`EC1|?wO zBhidVg}+ocr6pmR2!Hu*g8R)0_XEs0HFM11N1N3k@Qp~ZVG3y)Be?e*`r&RsI*1U^8yg3#_NQYl2*aVXGTmI@ zt*7UjT0hx0>+Z)1waW+fJ@9FieflqUQuo;?ukCHL`qy3`I)feh&V98rBnTft0@z4r zfgxlMlS*EKRbz`rW;kX1=$)Eba1+Qhx#QvMm|P_|BSpla`WU@izE^|;(iX*brB~Q= ztgm6zzOjQyX(B-PjVO!LshxMI5zC@UKQoT&v7jC?swGZdS2n~13UJHSOfp0i=u7#E zS2uyT&UR{2@vQuGNqjJsB-A?ecMH{ntB}o;AgmXJwQ0Y^T6OkJ@0|BpVyJ;j5^osm zLMd%F?tt3Gwm^^pKYGP-dBtBF8cE9kan(>|3e6pT7A_GcEe?W~mC7TP^a2erM#9_2)xxeiR=@-ipQzo!Cjwk1k7HX=`* z{cnntGa06AJ}qf0`N1f{WB_XmIk=#q<2}vCG8DJA*G-Y%Ibf^YHU0A4-}8-cBx~LFYn7E7ll# zK@=R@2HCPG-~yIUyiX8lyp>MTs~IdU#CU^miXt^ZD%pTa88yTDCieSQnJAw)_+*i! zMqF#6HpRTQ2QW!pV^W4ip_t@8A|$#f^XnUEv7B5fHB90AgyR>>ZSk!%UQ|CciZz0) zL`K8Y9wO64XP$Ce6onXooRd;%CgxBYLNRuUVDe6OJUmWWCv1tjWvLum$MP@=4%mna z6?KXCov^FhGW#T_D|9Y%E(^dN8n!lj`hBJ26K_-R4YbQQAq!VEMm9|o$#0NJCl{|$ ztSp9%l5U93iQchp%*UOOAhvrK2yOTa{ZfjNgk|xqb8a%_=xi4GrL9cgvv}zed8L|O zJ}<5ZHOfkKEb$0!+)5a|W~Ht+pIcpaG^xj4p=;M{G%oCB!`mdJOQawh9k6LK(dF&6 zWyJO#4^Ulbl^a)PlRbw7aVQmX=VtTGpBE%$81gQAR5ea<3ej^Or3dO6XgsOWE{2?^ zXxRANH?W#BELRCT3({F!*B570Wu-xCpAF^TUtAL&5>n1aC0SnBq1R~u6* zaB0F0+?k}zl7D)uQ_mFoX8l_0Ku4`PgCq-apLmWhewGPjmA9J`a5^%1BWMNIpWVK) z0fnl8YTnkjn#I5DDo~_*a?K?5*&%et8zBZH-6)6#FWJYDyq~Uxiuc50x=I4}waqP% za2k@aO7v{7BHmQ!B)Lk)H7s1jQg&XUrj93%(dGP_$Bko^O}{0}kJ~!b9YSn^_J2$x zxJ!z3H+NlnuYVtBD0XDOY@54Ed>H3$0LoVc)C;^$yOzUp#;G?hU)wKmY3k#R_awrg zmKi0jMj0;*ydqC#sT87ug!6FmU3sV&GvCg#>4o!sxRjw7F2MHQ_)Yb_^&wr+`?v`X z8A!%2t3P^M#O#Tg25;N)xuDGTHh6Z0LdXLf} z(zA)R*i#9S%CWetCB!vXHw6|64XxY0byw9h|6o&US`7_U#+0F;vpe1H;u8En+Dz+civ%>#AxJDNhRS zqh`+=7MY7jB;g{YoD<7S>inPG3Q+>jy5dsKU2Y#*hDY_~HMRxaOr8ORtF!Y#*6$j) zeW-m;l8C3u)u%c6Smt$R_noHted$j}x1EDG1gIP5??;TSndT1Qo0oLiMIqh!_#b|I z6r#`UszE@eFDa>CH338xnK9$MtC*uA87eaQJ!X)~63kPww#lXJ{4OQz(!``2NN}0~ z+e{$)WKT~lq)Lw?#AqDVjf~*x%s3YJ(EA`0#Ub7i$W{a^!TkI~GRFdOn(=ye`o`Nd z#rN0Puk|B$mIo@}+LJ8ZK0psr{z>gT1gHH{Iom$afJO5yhHef{D3Ko@kJ$?$fi6?c z^B>nxl*p}tatvZFY)>%TZpj`hh$YMA69Eh9M`JhU?JEm)i|W;nK6wu-mg$+dkUDEG!noL*G}Ct3n^9 zdThdO!srsWPSQ!xeN7LNOwb(IzOf4{9*8dNjxZc+Wl%@wilX!_4+qoumowrZ_j5Cj z%z=*(RZR(KQd9SXPmJ#%lBu(U`MmR=?MP^z54K6}I4u&k zVaBim=6;F}RFMCs$8M_^F(D$KkgZ>sA$U{_ZnCHE9Yj;tTnbCwwtQFpHCAUGzs3~x z^CC^#e``Qc5qq|EAeETW+#6qON)3I#9_b&sd{sPf&V^y_f~66D;j&x{oyD`gpN|C0;WMSp2V^Y4H`q$?Bb^{7 zs)_*ww=5|y9Ts}+Ia6kKHWJ`{iC7POqpkT!g73FGG+r;8y~B2xh(3>C3JA71S|TFb zSREKAC-yO_4;w>~!_3@;L->30mk?dVihIoh# zdZ&6h7`mh+$0~M8yJpM~KBcORat#sdNKgQo3->9~3ph_ZHReSjGub $e9rzx+5* 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 aOA?DpDvDCmfTw;K85(n`s=E5SaRC5rL097d diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex index 2e0c84c..2216629 100644 --- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex @@ -1,12 +1,11 @@ -\doxysubsection{General Defines } -\hypertarget{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{}\label{group___m_y_l_i_b_s___d_e_f_i_n_e_s}\index{General Defines@{General Defines}} +\doxysubsection{General Tools } +\hypertarget{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{}\label{group___m_y_l_i_b_s___d_e_f_i_n_e_s}\index{General Tools@{General Tools}} Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту -Collaboration diagram for General Defines\+: -\nopagebreak +Collaboration diagram for General Tools\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -18,6 +17,8 @@ Collaboration diagram for General Defines\+: \item \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines}} \begin{DoxyCompactList}\small\item\em Макросы и typedef\textquotesingle{}ы для работы с битами в unsigned типах. \end{DoxyCompactList}\item +\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{Evolve optimizer}} +\begin{DoxyCompactList}\small\item\em Библиотека для эволюционного подбора параметров \end{DoxyCompactList}\item \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}{Error Handler defines}} \begin{DoxyCompactList}\small\item\em Дефайны для обработки ошибок \end{DoxyCompactList}\item \mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines}} @@ -34,6 +35,7 @@ Collaboration diagram for General Defines\+: Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту \input{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s} +\input{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r} \input{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s} \input{group___d_e_l_a_y_s___d_e_f_i_n_e_s} \input{group___u_t_i_l_s___d_e_f_i_n_e_s} diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf index 2096306c1b0174550858e236b198469921705540..edd155720aa5aa283ea302d4f0899cd20799544e 100644 GIT binary patch delta 502 zcmVpH30Q zz!xE+6lRGwJ4u@?JC<%RJtXB4IwLc+Tn#~!q|=Ezv4rcLC1 zVzYmA3(KVoT-;JgO|FU#+d}X?zVDuF2%`^~R&|*qNtTpJo+umTNntNDIhfON?2@fG zm%rMA)A+;6x5)n~rf(Hn_V!0GpHMc4xQG8%-9QA--beH)IotoEmHV7juO|GP^l$aa z@^|Zwk!uPU69~JI0&BykOS>9NJ|E=?wG4lIw<4g;tKMV7PD>f9wlYlx90Yb2T8hDg zHPsVtxV|!twA$CH)G$g#t`(38nNKi`4#t$#br5(o)1o}&X*E$g8;_fb&{8=2H^N95 zZLTS%j9{`LoM9GT;qVj2<4dw`!r)^&4c%z;48O{KE>`Nr5_LjD#;x19pTELL*GF0N zKL5_u_DxTCbkGtzEsCmiXQk&3z6a}??4H&(Ya@T>sf_PdgIh&X1KpP;98~!a@WwO=v!XUK0fQa#O8@`> delta 502 zcmVy42G$Vfq7)BiEoFYnqMIj1-%^70AqX$f7VagezFykE25C|b0Efx^$&ZUH4BQjYb0008B?z5Nl)CzK5$?%}^xHxR+o_Yr+c&i4Ok>3$CqT?gu%yl8oJTw8Ge=fTrAa#CF+ERj9a&HKYxXhu8&z} zeg2)R?VFzP=%6KbS`=03&PvZ6d=J(&**&dn)>{6~QyJea2fYx>O4T}*6-@gxhdo}| s?~dX;=7}@`v!XUK0hyNfO#lD@ diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex index c759ed5..ca64b35 100644 --- a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex @@ -5,8 +5,7 @@ Общие функции/макросы для работы с GPIO. -Collaboration diagram for General tools\+: -\nopagebreak +Collaboration diagram for General tools\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf index 3959b958fb3682bac6b66712df8c2254d21633c8..e8a8b37be28e4647b5b30d773374b486500491a3 100644 GIT binary patch delta 607 zcmV-l0-*ihT;E)|Y{l33qKD0EUpt~BqaTah`L@^5>itbn-V2J_i zHTZ{Xt-w!Yp&AAN{!4jm;3ovYA%)kD+UmBlAlSphB;&EFwC#V6_wAeQsLy5ft7oif zbDKz`x;&!3wepzgva2a8ytgV}S-|yJM$of>~ji*g9pZDe(B}u!Tvh)3Z^9)93_ep@CD3%qy64la+ieNo3!ZuB24k>g+!ECMu-kE2vsMMDse@lRyT zKZbVf#Lt6~Ra4Vl`E{V50rgVDZi`Vn^}Ebf`m~uCnW{#&CRYtaiFTG%X+jF_Tp-ER!xP8k3tXMpt8CVEF%^ ziGhcK0YtEY2xbt$$jI2lz`)4B4~``yNOz6$1$^Fslbbp^`m#xO7d0JbsqSlEEo z3jF=0mf$C%kPQI<|G7Lg@EbT#Na3}kHma=*FmiV{$+)j7Wx9XkUHfJ_>RVa8_l(hP zZW5tomxt7kRvZ#lRt7&FQhXVWJswR^+|hRJuT5oc`rsHtZV>e+_pn+aK-!yBXi*=_yz!JS=JVcMEd^?~6-L5rd&?=0 z7-dVwLLRWMH26a4{JKmW7WnLp9b6u3dy$7ytkqvzBDH@H54kmuj-yl=i9-;N@sDWC zKZbVf#LvAJRa4_#`DLJ=!0IK3-Nr_3<)1Q_>En80WGWlg>RdJujdxB5w6T9pH&i&# z-E>|H+t;%ZMx0dPTDCvSq~mMbCeD5Ud%Wb*3T19&b98cLVQmU!Ze(v_Y6>zkATS_r zVrmK?ARq%YI5Lw|Ei3^zlYuQ?Rwc}_34lNp1JL~MsUU(|C}fMGGEu#M!@w#N^wP$2A}UF_Y*uECD!^F9I2pE;dM1%L#x$ z5ChO;{ecK}B8qHL9=utAD0r|yu?y{BP4M!_kT3vJ3TOaRn#_>g0iqS0-PTIO;qw(? s5##1`itaLx=qI!O|8f&dVJgO3ZPe}q+qw*(lgTz92sa8PB}Gq03c~d&CjbBd delta 606 zcmV-k0-^o!ZSife=`(-tYuhjo{jR^_K5Q&uU`z6kCM6V_q?FQicuvMXjAB$rIHrkZ zWO*$AeRZ~M95!sk)6<=G_uiQSB_TwVuq6bPkpO~_5w?I}NeQPAMlsqSlEEo z3jF=0mf$C%kPQI<|G7Lg@EbT#Na3}kHma=*FmiV{$+)j7Wx9XkUHfJ_>RVa8_l(hP zZW5tomxt7kRvZ#lRt7&FQhXVWJswR^+|hRJuT5oc`rsHtZV>e+_pn+aK-!yBXi*=_yz!JS=JVcMEd^?~6-L5rd&?=0 z7-dVwLLRWMH26a4{JKmW7WnLp9b6u3dy$7ytkqvzBDG-;kGM6Dj-yl=i9-;N@sDWC zKZbVf#LvAJRa4_#`DLJ=!0IK3-Nr_3<)1Q_>En80WGWlg>RdJujdxB5w6T9pH&i&# z-E>|H+t;%ZMx0dPTDCvSq~mMbCeD5Ue7EG&lg2e50Wy>4H7o%)lP>}plPxw#Q@aU( zKmY^Kg6)~JII+rd6ZO&W)QeyyTs66jgAqt*e}?Fn478`xTfck;ETa9N>Hpa5QG`3E!2G*#m_gJ- z4x)z<%sTjRn!Ywg?{<1mx=@GgEm5p@`Y#UmmDVfMm9~E^p`(Bg^1@rJhu^h2TZvBs zmz7yJxvpT6XGLXz1xyAMCR=L{^;sBtc2i}CZIRc3sW#JTJ60;4x$<3QR>S1#j8iUf zS}B$YDx$YEdPC{-G-NlX;B_}r`uQ@%`9ZIXY+-(2xDUu9)|aF^xBp1uK0p6+*-XmzE(7r9 delta 606 zcmV-k0-^n!d7OE$8aaR4irX*{eb-maLrW71wj^I7En#7klx5krq)AF2%3{2ZNK6we z*m7z9z9advPPY%GY$*Zx=x8RIGcy_nl!Opb5(Af<2#CU%@Bjqm1lKqs5l9x23CK7g zoCBkb6CUDMQi5A18Q~GIFcf4u1%GosDe#x+PE`Z|{QG=c!B>CaKw$+Bj+*PbFu=(5 z^}yq%D710M>-y0+>U~~(YZz13nOUZ#a(Mi5c4vrw$v|@|ob}6Rz#uyQnf{OU5k=T@3e3F=ix~tR z2fz7H)Ew#sV(0kH3~+HD^7WY z(@HWH@_@ai!5d1)mm%9R1+UwY(#@AX&JSvvr!)Nn!=?BOxBwQ2eux!D*>+^Kceu69 z@vNyFJLplVO_>(e$zGP7JNgbVd8*sZ(Q2W-=b2jF&IawYQkAaDOjRKJJBM$j!eQLpEiiv?n=lal&ab!+o0g~&*bq~wqDoCNRaLi%l1%$BRmde4K?@ie zGd2HyXE2Ot6Ucgg_StvuohcA!1&lZ}20sp+0D>TNXaqsT9G}37QO5_ye8;D7iyPK! z@D7(ofS2$>vx3)O#~JFS^~RoMl{b5>?=S&K*`s@#*V&Px-31)7-69!#A-Py%FZ)!(`b zQ#b1bA|sB06as$>U$4~}6!?4=m1A?7#7Te-@&5@pC?Qg5bsh9G6riE@M(-I#39LEx zgha_>mkR}poR>-hb!p@hSe&$O+B?td*+TK=ROYQKRk2(SzAC|uayzaCEOvK3@fjsF zrXeFNxFNwOLYCKQnm&P#*3;48DYviUSn`d0#}o;EK6+k837NX6*24H7PWvB?E&tfr zvokjjiq~yp?#eGC{RF6&7-w7DwG+R~T%?binUSezWv6n{0-Nrf_hyR^rf(_J%Y9>B h3p?bq<(i*mVN1q$GOPI7wwbek0LLZc#Ip!8Edih_>}LP~ delta 491 zcmVLpEiiv;+b|IQu3vE$Owlp_{B@OB0!yek)Q@WI@010PD2{7Q0k3Q>bd- z_TYa{o`xAhn0?5#YU?yj%k+ZdIW5w+v_WJLmEOse=eZ5Q0&UD@54O%9C;>9A>Thj{ zsoQl5D=UtL3<7@#U$52a75IFXC2={8;>5uE`2PePw3LZ*y7u~63eZq@qyLPe1kN0H zLaf!X&7_7|CJL>9d2HoTn4OHNn>*j{*j$VHRAh~(bUvT=zG^9~aywxp%yxI2@{my$ zF}C0VyP?4+O6S*U+CG7g&eOr*F}JVsScr{!#}p}k96erRl#X3g8EO4rj{6_2E&tfr zu@g5BT2xJK@5(L%{RF6&9A;bGwUfV#OeT+;iIItHRI4-DKseqx?ac-sOxIGjm%GNi h7Pil4D~vd++?9;)WK!|9Z4+nz0KFLFyt4>0Edlk@@L~V} diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex index c31b016..240a0fb 100644 --- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex +++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex @@ -5,8 +5,7 @@ Функции для формирования задержек с помощью таймеров -Collaboration diagram for Delay tools\+: -\nopagebreak +Collaboration diagram for Delay tools\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf index 5f17cab0f271f27d367abedb2ea9a2011011d5a4..0e443b755e2af99a857b9db7d5325bb1fb70a1bd 100644 GIT binary patch delta 533 zcmV+w0_y$LX3}P`OfY|Mn=lal&ab!+o0g~&*bq~wqDoCNRaLi%l1%$BRmde4K?@ie zGd2HyXE2Ot6Ucgg_StvuohcA!1&lZ}20sp+0D>TNXaqsT9G}37QO5_ye8;D7iyPK! z@D7(ofS2$>vx3)O#~JFS^~RoMl{b5>?=S&K*`s@#*V&Px-31)7-69!#A-Py%FZ)!(`b zQ#b1bA|sB06as$>U$4~}6!?4=m1A?7#7Te-@&5@pC?Qg5bsh9G6riE@M(-I#39LEx zgha_>mkR}poR>-hb!p@hSe&$O+B?td*+TK=ROYQKRk2(SzAC|uayzaCEOvK3@fjsF zrXeFNxFNwOLYCKQnm&P#*3;48DYviUSn`d0#}o;Ecp6<$LZ&XNwJ`pN)BZW@IW_*{NK#z@|Irz1iY}>08S5a^INO z!VdXtx#nkC*pl&`%qqUNZRYGB$r|IvlP5AC0yjC6NHQw|I60H30v(f*GL8!ZC~E{% X3;_Gf3;&ZWGam^zISM5uMNdWwY7hRS delta 535 zcmV+y0_gqHX4Gb|OfY|I+b|IQu3vE$Owlp_{B@OB0!yek)Q@WI@010PD2{7Q0k3Q>bd- z_TYa{o`xAhn0?5#YU?yj%k+ZdIW5w+v_WJLmEOse=eZ5Q0&UD@54O%9C;>9A>Thj{ zsoQl5D=UtL3<7@#U$52a75IFXC2={8;>5uE`2PePw3LZ*y7u~63eZq@qyLPe1kN0H zLaf!X&7_7|CJL>9d2HoTn4OHNn>*j{*j$VHRAh~(bUvT=zG^9~aywxp%yxI2@{my$ zF}C0VzoEe=O6S*U+CG7g&eOr*F}JVsScr{!#}p}kcp6?XO2;m$jI{nQ$Ni7imVfN* z*om75EvlxrcV(A>egf1>4zn%p+R5KVCX>g_#K=T8s@0inAROErlPWVG2{y4Ahf$2{h{PZ~tg6#Q|0 zbY-1$bgu|t6a&ME15Fb|39vXu5wMga20UhnV&G|vD1`~<44xb`mu;tLr3`>{D@95NxZ$#ss21q`C!3h z#^=2_ppM_!s3lPUtM{0&RzhU5+Z1oUg}^jJM=^Xbjyl4g>nqcxlAE>^3Pxp7DG4MX zNq}Lr)B4z4hoM8asyObdvI(Txj>o--MsaG~#^(mCwXh|Wob&JO&c3M#hYkv2t%|xi+O^74 z58s1vP4r)LleG}Pt5Rflvq3FnqLHmCMFW%bn#1yL%)#TT(zb)EZD%aMwAZtm7rNNX aZ719uGy@CWms>d4p1+3L(NM2AU>_5{SYO1rVh%iXaXnL@~r^h$w|w93u)zJVP`9LdXow=iqP8 zCl3CamApX!;6GHm27Uqs3>iFGXeruS0YNu6qZzk#EtDPJw9kLaLSL%-mqV0n3$p7%af4Np?fGFrS;i#2uwVRif^( z4fx-)`~FLZF!@kQ(Vp@=S9z5m^}EVzeJgLTj)$p9)e=qiVgp9$4{d@*{!cf3t6Ou| zSDJXU=rxEf__u#z2c_?%_n4pc^Psgp=S{Ew-&B8VkD9s}$3U>D3KJ6u`jA4@g-@4G zIX6BZ_z`vd2BX$M-LKwb!d7ygiEdMz`33^r3>`)PK|5**JFc%x*HY}-f=iebtdatV zM-mUiWUthzx%PdFmXe+JRnd4tmeZ+g3CWo;f5jAs$?AWaVj2-lQbIx+kSiQ~!gzW~ z*0dOW?AoF4je+4;zN^?mylA3EXb`5_Z9Ft!t+*+nWXQiWJNu?0EIKNPtz>m`GHVs* z9=-?d8t=cBI%~y$R|U`R7Nc6ocq3X_@CIhXn&a|r^uc4R(zJuEZEI|NX|H3oWQrX` a*$LMN%}5LP1`40@#Gqbb#HZTE%!2)^! diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex index 0f4eb30..2726bd5 100644 --- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex @@ -5,8 +5,7 @@ Функции для базовой инициализации таймеров -Collaboration diagram for General tools\+: -\nopagebreak +Collaboration diagram for General tools\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf index 9046fe7c4864d939c33170eb0211abd2cd842bf9..bdf8064b87560d3e45d3f66a1e5bec00f025bfab 100644 GIT binary patch delta 492 zcmVG8lZr{t=_O+ zgMYZR9Q>4(yh8xsKUc>NenJ2kGI$-Rt>_yC1l`}yA|9GXs9}G3-@mDW`cgH&ETd#! zsFX=Q#2MSOq?xd5v67lQ=058~>kxgXBCDPFJg+p+FnzZuFnED4{dQ zosdd#>#O9P#+HBV z9N3wg2g#bQHFp)4k$wWL7awO^y=%vRR|U@=H!~wM-icloyaPJjIq%I*KbWDVOfL_O ic`dBXXUh~ji_(>>-^r}vYujed{sG1*{&R6`;3sgPkict4ZB<(tVC4RO67f(~%5;Cr`}WOr)R&_A)iXx7 znTds#U7V#}T5*h3Q5k#qg4#b?dAH$Tu`uP6@9JG{)a=P~VSqjilcccG|q6E$y zcS5YyvCX80StbgtfO%}?QJ9^Kshd0B@7P?6`c!0%r*uA__r7W=ta3YHB+Pbqobr%S z7BRNq0lT5WCrannY1%%4kIvJ<;4!za@>qzCddCzgegR+Qz$hKNs4~*}zZ~~JT3i0H zvtuW29<->M+TN922Kot5FFDM%xN9eW7nw{RHxnZh*{D`$vVm~CbK08?KA5hhY%h0> ic`a<8&sG?5R=Fz~-^rxnYuhHy{sFuklPUf-5!2M69ektfCH+P;c&$#?S2l!(n0L?IB2 z=do(Eumcg#{*P9qf5aWog|;Wfo36FF^6LaYf#FL`tG)3$h(Bd6vd7&*$V_yySGnjQ xnsY9PwKIRvFkp7Lhe^F9cC2U5HLqmhS~fq_Eh`|DzS@A8`kCq3ucWrfY4k{5ru;VE7W#YHz#_;!l~2>~XgcG83KbRW3S+ x=A6r6?aUuE44576VN!329qZY1%_~{Bmd%f|==fH)g|dGETzvxRm$N-HEdh#!N;Log diff --git a/Doc/latex/group___t_i_m___i_n_i_t.tex b/Doc/latex/group___t_i_m___i_n_i_t.tex index 3d628cf..f8a6cfe 100644 --- a/Doc/latex/group___t_i_m___i_n_i_t.tex +++ b/Doc/latex/group___t_i_m___i_n_i_t.tex @@ -5,8 +5,7 @@ Настройка таймеров -Collaboration diagram for Init defines\+: -\nopagebreak +Collaboration diagram for Init defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___t_r_a_c_e.md5 b/Doc/latex/group___t_r_a_c_e.md5 index 8707b6e..940cd9f 100644 --- a/Doc/latex/group___t_r_a_c_e.md5 +++ b/Doc/latex/group___t_r_a_c_e.md5 @@ -1 +1 @@ -af53452e0ed934b43a42a30e5eaddc2c \ No newline at end of file +231806d9df0ebec28cd371e85eb1e78c \ No newline at end of file diff --git a/Doc/latex/group___t_r_a_c_e.pdf b/Doc/latex/group___t_r_a_c_e.pdf index 846dbe5aa87aac40b388bfc8c82544c1235c44ca..0ef2bc927fe92cf12ffc373d007b906b0b03b3d8 100644 GIT binary patch delta 16294 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 diff --git a/Doc/latex/group___t_r_a_c_e.tex b/Doc/latex/group___t_r_a_c_e.tex index f560dde..3dbdd57 100644 --- a/Doc/latex/group___t_r_a_c_e.tex +++ b/Doc/latex/group___t_r_a_c_e.tex @@ -5,8 +5,7 @@ Дефайны для работы с трассировкой -Collaboration diagram for Trace defines\+: -\nopagebreak +Collaboration diagram for Trace defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf index 611bc45407fb3b9cd0657076a55cbf103c5da7a8..14702b15ed79a5d92befa32eb208f646302118af 100644 GIT binary patch delta 526 zcmV+p0`dKpXq9NN2{C_BYuhjoe)q4qhm9o+Y{|B=xP(HJj8eJ{*U8w!C_+^<$1Jgo zESKfqPm*QVVZ+AUeY*4AecuTK3Q`~_z!@Y61qmdnah8xQvmi#05)#Bf$Rda_EKR^_ z1=0S}2#9i4iZ%d%=&?Gq@DpM{P{6Z;HnOWV;NbRll5tnpQoDcSUH76L^rfnQ_lQ;< z*Ev(dLhWq8!*)7&PRA#L7z2X@vUh6aQ9 z$-i}H)4n}7Ot;vD$CMuKv{eg1zE_DYCCdTx6TEd)kXUom<# z#3WuI|A$=3L&t@J8E2J}fJ3|t5zLNSH|xqzsXl19kXn~A1r~BEOOXJqc z?z3CYYhwF;HcYdVEd9vlu1qGrmTjW!Uo{=&Gn45uAOSOz3NzRY7f{w%kbwaJuwDxO QlkPJh2r~*LB}Gq03a4oQN&o-= delta 527 zcmV+q0`UEnXqITO2{C_dYuhjo{_bCKA2yaSuqD4_aS4Sc8Kra^u9LA3qX^Z}9J9nS zvRsybzmqJx4jVS+?$Mp^?s-lWh!;abJeop8h!;T=qqBr)nR+3CI7z$^l4Rk96qXpU zT0yYCGy;N*m!kCmAb6|}E&PNK2;}f=p^fZn4b;26on+kAwbXz1c-OsX3w^2T-#wyL zSLlo@Ve<_1)bT?mt6H0%$HctL)c=&c84C;Iw=bHDLieEvrS_~pxP#To7{+$36uOf2 zfbAgoo<9s8nlO7;D%mxRu`|1{6RX$@Ytbv1WHtMRe(4|e`7}34IHbv2@4(FZ18G3S zP5!MrWBcYDn>K$08IwZf%;#%{dKNyP#MyIwjRa*t`~3eT?3EC?blmnF8VFESS21`* zVj?Gy`$MMWp(})fS-~qMf%C@?6euC%Ce>P)9axO< z_ePq3B(>;7(Y@kz+n8F#Wq=<5`4WS-!KkfxtqPIfuO~w0qLrO0L<`ASbGn}`UK+br zW}oeHUK88*v*DVbWa&o6yE2*hTDFO@e*r5H3UJm9^Ta?o|G?Tb2i>J&#Gpx3W!?{R`h6-)XacH7Nn-Rz{Wp diff --git a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex index 692bd93..710c717 100644 --- a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex +++ b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex @@ -5,8 +5,7 @@ Дефайны для работы с GPIO трассировкой -Collaboration diagram for GPIO trace defines\+: -\nopagebreak +Collaboration diagram for GPIO trace defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf index 6cda337335bafae6c88f24d0e4330f0df34a21d9..05205070bf1047d632f00ea0a71555dbc1560c4e 100644 GIT binary patch delta 428 zcmV;d0aN~>YNBeeC^8GKUvVEcmQaW#`6ZJxGADllB@x7wuv_4(B?%$qOTtzVE)&8j zL=h((;wU7X!O}Ub*AN`uYXw0n3e^w*2%gJh13!TSg$!OhXsg@G0weeLlZc0^(zZL^ zx4&!$eJQKoJz`BOZ7PiF;t+ai#WB@oW%2Te;$kdb@OWY+9qj&n+Du8?J16Lppw*u| zz1(aH6New#gDdp}&~ z4)M)?YcH;1Jg2ZiPS9i!dh_*~l)mxLXLTXIj**iTSRenNfP+yg)1J%4aAPbpRQxS0rC7?! delta 428 zcmV;d0aN~>YNBeeC^8G~UvVEcmQaZGVmp&FGADlm2_lF|KyQJqmH`LOmH}M>UnT(~ z5JfCt5Jx;<6qe3my@v4cUMmPwQK%*Wfbh9IHt-V|5Xj)QgSNV@EYRToeiHFeRoZsP z`}UXZpf6?hyGN{PrA>uVT^vF$tvIH-tSnw05nPnU3l>kTq=VhRPn#)ed*=jQ614i0 z2Uvfv(Lmc*BWA!sxcn^W5ep7rD&U;$$!9IXbz%&~LK`Z10Eb z+#$Z%Z|%iZjOPSa$O)PhxHn&~N$DH^d{&ph*D-RE0`24f6L2s}W!lr((}oZ@9eu{| z*)hSrCjN%h=wmCDfteJg(Lfh;wIDD%Sz9SLcVXC}g%S0sl+8k$Vm|NXG)f>_J7E>f zc6W@hm=bzRX~a0cA^Z~|lYui8VZ?o$BtQunho`a%Wlu)`N0j0p2|IM6;K7KhsWF#) zAK)i&e5ql#bzVF5r<5vt+)RYbRHIuXRRi&ub2^fZdner(;Rtv0cuj0y&sJD*)`f4` WJ&#Gp*RoBN{R`YE-)6J-Gb;fQOU(2D diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex index 1e30d7e..da953dc 100644 --- a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex +++ b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex @@ -5,8 +5,7 @@ Модуль трассировки Hard\+Fault с возможностью сохранения RTT буфера во Flash. -Collaboration diagram for Hardfault trace defines\+: -\nopagebreak +Collaboration diagram for Hardfault trace defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf index 320d6c2e3ecec9b0cd3873f2dd380f8f8d251d90..13b5452d1b968123d15d6ae353b438553fdf3b8b 100644 GIT binary patch delta 140 zcmV;70CWGhaJO)k)Nme*zCc)&*|<*4ga+gEw4_(r|i5{dm-%779w z4Nq+(%AQRAk0`}I687j!!Gq>?+h8v7KEh96`I6&qYrS^zPbFmjxS0u=%T{$-$QI%$ u=X@kv`%d~X!V&K0@tWA7o-H^0tV-9ieIB!puVtGl`xocx-*B@FH!J~ESV~O* delta 140 zcmV;70CWGhaJO) ub3T%-eJA}G;RyHhcunk3&z2j0R;6p%K95<)*Rsu&{R`h5-)XZ8H!J~XL`HD{ diff --git a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex index a9a1ee9..79ed0f9 100644 --- a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex +++ b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex @@ -5,8 +5,7 @@ Макросы и функции для сохранения/чтения RTT буфера в Flash. -Collaboration diagram for Flash RTT Buffer\+: -\nopagebreak +Collaboration diagram for Flash RTT Buffer\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf index 2967bb47f0a23b43b023f237116eabec922b0fa2..aac06fa3ec33bc6b353060d099a7cb752a5ab4a9 100644 GIT binary patch delta 140 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 B?kNBO delta 12541 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
=w~D?k%L*7Q>&rw{Dc0D5?<$SZhxRhj^= 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
`VgdvQmlr`o=VvgTX) ze`ZU>_KDI62*%SmHAc8WNGJbCC(b{j_UKI0qvDNjU9RFf!cSoN660!Tz4qcyU5NZ~ zI}$-uzKzz-xCi$StnK$iYr z5ceC9V5$NVhQC0p2|z+O07PU03B3m(;yc7V77)P%B3MBLJEKVmP}U@yfdK#u1q^$W R7c?FUG%+~}B_%~qMhdA;q4NL$ delta 11933 zcmV;OE@IK|YQJcZO@EP1OT$1AhVSz$-sA2e>Fie$uSF>oJZR&o^ibNSDv4ks`1hUN znAR3Vklh*H-T8W!HDFnp5oegO>*$>f;_8o>Z5hXbIQN+BaUr2kVl2g8X}ytK#-0r0 z9-iZ_iafwF`UB>~slW7^*D+@tCTSIdleD^{S(9-l(@{6HR(}g^D|OJ$sJG~n>a}xf z8&wOP*`RL4mt(9EY1NC)+>e4m)23e1T`lMZCKHJ3mlReQ1i9qA{FB*8R`><`NiZt) zafWH58xk$j?fyh}iEJn2i8#%RaIVU2iNNS!e35$};=u%;7nM&^@a>I@a);F!J61aH zM^q`c-$zD!iWT|zNiCk~D!I7?_-~sPJVm za%Ev{3V58|dwG0R)!FcK&b@Q*>~klX%#xX8?qrsPOdya1LLibGNP-yIAtsneLWnE| zNeFIr3sn>&Dz&YxwiVRYwU)^u3}8P}wYFLnzSi2-s?Zj@v)q4YJI^_j0096q^n(Cu=cbOHKZbv>3m|_d0A1C2^;Y%i!^iFh zP(J{WuDrZw-KLp8a>oG*n*l6|b=}upe#!lTD{+J$1LPfF-_^19zZ#of1t>RS-Hi2E zkyUQ|J(e{rN7irJdhM*MB^Q?0V!66|b7u#@u^m|6gJo?~$F+YwlEJhW%g3>-_H60u zd1&Z^zXDWX(OL?WE!Kb!u2zP*Bb1zw{eN`@0uc$Q8B6S<#E z0dHJ6Q+>92k@9i%!n4&-gShe~Cex;doFQiv69OW9sS2ZCY6kcMRB;r5z^2suh69G* zK$JX|*dA}za{YfUe-3RgB$pYpNtO_aKq$*YqmWNYGBv8@Sgq1ZLL^VVT?pk%CPHF` z(MYY58Urg>i3Uv&Nqqzsu%z)bSZ^bmW^0P5f}m2hu$>AtnL07zaL|>Ad^BRSapcVr ztCb@kYj!pZ-O^u33iGJdnk3ptQ=Z*o(Gj!NhKOcv%8P%gW@5JLMO%|uVcpEWSm&kQ zIPxJLZ(DdW9*-|n+Rk7WZ>wIYoW;D_nN?K^H79FMVjf2pVHv*!A**WI)Opuwbz;~b z$PM@cf@F;;(VSQ?W{irlaMWwd3xV5_9YSJPwkl((zz_|QfW;FcE+;1WrcekX0w%!b zB=NXXtyF)*39(C|q)@iMTQX&3XWKo94|UrG@Ycl3 zO3Q2FPFyEjbndHDr?rsjQKuw^3nFxSMOLJ|OmutXDKuOlNwSpV$`Z@VW>h+bi|M9& z#*Xg!{n+l2VY1|py9v2Bwl}n9-{$SlT@#vlJE4Eyxass9TJvLa_V|{*1LU&bzd`y& z)+N6+wWojK(pwkr*!{xTr~Mt3#0eA{Qy+-=;vC3BmM-B6 z!)8;L#hAn7YO_fzorq}57?u}cX<^nM44=EsX8EQCYO@yR)&`blwfdF?IL(g~>a1)2k<5}WvclWpjcfher*`rWJ5&Z$P3Af6a3zBgZ330X*+09la`|>L))9S2$+TshD7N5Yn z-gx{>FRSBvjw*e&4I8*#w^g6*t!66Cb($$1)5hK{ek~7R3G|>d+y#cIX=D_Rf&_mc zD(<9Es@b{~P^Kz0TTskmHr9-Eix#sVk)duB0%~PVJgaK;Wo@XH<)v-COesB*6fOX# z0_A1kbjcyN8}*QcVudl(OyRPFC4WEg;n*qSdh55uPQLuWJhZ)Y=h-*uQtQm7J8pP_ zG3D z1SPSjKGu~-3pCjyUX5v)S7S1=6fxZ5vfD9Drv9cmnY1h-lbof1Q!u|}VbXuIxR_32 z`7_PJBxo@^9K3u+%VKi1Xyr31QWk<=%OWq+x7>;u6$$TYFYWQ}@g}^ZUePPi@*KCW zNh3|}jBdFzI^>R`>qwm$aXRTrL_X&R!4S>EmI!=dU}g&gku8e1IoU#hvPFQ%mIiG0 zEL_fMD{TpsKH8m%lRV3{|-ICK} zHkxI#ASp4YWcL$?Im=Ig`9tOcdm-M|>(@*+v)fE0!H|^{rVe!*xNeoz)YPCxl{?FG zW|Wt?-5z(2GwiI0F-6L8-v01aZ?`|RL@|#PUvXjIV`A((d+U1^mfe4NwvXO+<)+$u zUpf0M*O%?Mx4($`;v_QHm)WJ+L=j0?tPtmk%f-vZt)gUd8cjx%E!%0bfnX$-fP_i{ zW>e8FBQX}J*(945I5WI=W~AZF2*JsPFsdp4%D`mm(~Lkq)tnOqB5{EvQ(ulS6#=F) zZY~pv%f!fKvM6i*3v7QgAGh~jT>>YRwvV@*fEv!|D*STm2IZyO?Ki$KZ7Q^FA-J&s z^3xK)kS|$=DLV+_)irwe@!EOV-b9pT(V(6?P&j zrI89xS;*yGJ!yaQBswWjYOk^1W8ZC0*$unxd+n#}g8fkHbKTbWH`%Q${ID~(&m?7M zi{N%^w=yBvB_M{w`2o zXf6u~mPs8-2cW|_Gwx&noljO2)z9@z;7lIg9p9tGsnFb;9 zG3P8IZ)p~`>Y$}Z$mX1g?DAh<* za-}Uta;1MeNa=B=G)Z>Ge#y#SPU8EYWMyy0QfZ}RXEKm@I44b;dCnA=F))wwF(%v_ zv6_?PJ0mxf_`C12*zQCecSAH97B)@j+^ffW%yv9g%xHL!){7bRqVWjvxYcT(loTfK z??zb{nuRis3l^`(6L9ezFd&b|Wi>1?t8$j(h-iOcQMLufrdQ0EQOTd_6@2rP3+K?Z zAIovMJ>i%j$##k;3)E&z7pm7D*tqxE`F$5ozv9hxq`ZE|&DZ56yjLE*W5<(A6qBdm z*??!w3!7WZHf>n{a4heZl?_jAU$kwJ%Wlh!M9o)DzM!So+k0oD)^X94Yfpc%{eqd~ z?V^8xQnax2!uCrSUvLfcg|}c*X*dW1*~YARn3~g)5fG`>_d$ZHcuqyr_(&7Aq-881 zGERDSf(EB?Bo)(Q77&>*YG$V$SN8o)h8axQ1{Pga&aB{h#dJNNI!(_DqCD54Ii3oK zA!yibIA#zRV{+Oc1PwigenZM2qR%x`L3e+{Y$WcEbIPYz>;^Ilr_qJ|C!hSemiKR) zq>FEo#7V{2xPEfVK1ndqERr?xP~!yT}Og;}ihuOI&~I%PnmNqb@E zEhC15pEt0$hQfn*)?0d*8YJ_Kfjm5MQKypc0Hf!;^VRubZRUIxZ1R7^ zR1*nm%%n^zdsUN}8JWq;YnW%^p4F5a%sUsXn$t2?kol(=wI>XOt9O3?n z1sj}i$F8Ogo>Q1;fGQT5@rZ~*(ezeM$srrK5wp< zN*1%#Y{Q@-$L(@wy9LQF;E^iJj){NQ7zh!!*%<0b2o*eiyEIe8ba89VaAV`F1abd)_kV_N-(kG}UwalRglW~1Qx@yzTYmvMiI<-1J8 z;Vbn`^=ZBy-}kKFw>@Dq=GuyE3E!ws^f9Fj<_0VBj5fjQ2$)F@jk~f%0Yi=5F5*gM z>(bcYl&y)LjAT3+FY8H5#)8gQ1cBa5bakJWR`+-ySg{L;Ph)cOX*Qm_O7eWY2q^jztn@UNLjmLHsw!%t9h#oM-#cyAkQ@jnA*ceX&$ zzm9YZlG(uzy=W+0eC1`jv4p3iHCLVsTXJ&BbHdJ{-Mh1MZ@K#7R{wv@vSoEgjtCFz z?7gC*;gYN$m>b&H?ELa_-L`h1u&SBg1DTrt-Sg>tQU;NkFZ6x2FGSoh0T;i*N9u!S z5Se*R-&cE0KIl1I{0eWX51K(_=3jkZ?O)R?&EVpAkWtxW;*NK*X_sk_DPbBl9W$La z$zTeadQAPM-RY|1rj&ol95fLivPcD!BpgbOrbj4l5^f?O86?px$x#D{yTv_XLL3#3 zi_)lgTBIPV;!!M#V#eW$B%W1e?i|>-9`+EP2CY@Y9u)DrLm%Z8f%zOv%f|SXwLal`xeE`f7ZOeXD(YeMfwf!xw+_ZT21Wi9z2zKI;1^x~v>D zX@2{oxfr=ZG(r_}6dgWM2)~^icDXC~t&n1ORuD3!HLp95<^^(OQ4g58GQO8lxc9Vd z=JLeA6iYCd=ee$dLVPk!m_FcQ>gKhr-_9!C%CoGI|FyOcz^- zgWtD0_{qm1>D!I7$x(0&NDVATN9voFzJqG(U6_A~wwdpbE0}LtlnKS-@m_Wl_3=6L zJGlj8am;H@_VPHK#YZQUvpgHWb@k{whE_N^KWuQ7#GFc&lC20*flc*;sYvz{!(>eI zU04j+!+t0T+pNY(WCtb#c>m(snZ@5&e&bJ9ITO~t4L59byG#AI9{x_# zh8J%<@&|H3;EF9>br*!a(Xs{G7R|q|C>Vdg@cMP$Wv$C9!-2ePbELfXhSpWPFZnT# zLmo=KZz#b1%|&MOIK&)tG>gr~myDvDsg654r=mifZEO%PGG6U?)bN2rwgPn~>7gOX z@b?Ssn-vqR7u~{AJ=l36Q^yeo2c$3ZpyA~``v=umbrhk zw`KgMO~13>*JR^Y_H1=#T%DOmndVHCY0gBMW~Q1vP%-n{D|05;G>-?H=C+*KE$82h zrtkXOdbuuUu0(69*%lE8j1?s(hKT#RB@<8!3lnR2m`KW7?ui@zK?{LGr?h)a(LBdL#QvEhD<2d`vu zs8zu_fwz_kxN!n5Pr#)KxEUQ;I96d|Oo|}V@57zgYBLi7+=?mgFiY-$U~wn~P(W;1 znJ_Uc!|E)vZomaiSy3xV$;Nt9eY@Nv_shFv5oA@~BPZlh`KT<(?Dm@pKxTiQg9$)p zKgY1GT4uX9zmR4Kzn|7`86}3C)-24u$o$qyW?qcnR3D@p!AoWgUj8o!q>oQ1C(~zv z6CYP|k({k|R-yTqmn$!E>7+O7LBWktAclh$_RC0_X6hy=Y^U99!YC1gLx~wL{7n0dvfvoO(F>13fHmmhysaxbo4(_M1wt;5eelN~S0e`vQdr|V(bxs%A_+t(QIx-H<&T@irOk{bvDCv*Yv<8bcK1DYk6QDU2Etvb-LOE zqruk=zs-Kz_ipyPu2Y`>^1YjPJeUf)gTZ)iwYxgEF}EkUD=1H)5!-(h_bfWy)=2AZ z4Xy=&OUzBSb+&h<_uZe9kL?P{5$qPl0seqRc7izvrRuFUPq>@*X0D1b0x2hOC}X4} z7+E+S=UrnvCPWU744oEfazqv7sFNs8&DrkkcZxxNovoh|omouyPJU;_r00#zlD6NqDnzACYk_m?u{il!FO^4+p z@-aCji$kMuS2}!F{qa>-|LF1SuYKsY2X}t)$ZjGGEUl&X&l_mg zD=+`-#W!Dh0YLW{0=q6o?um2}=J}vtjU8@=6j@F>$hG7qaxZ<6zNN<0sp>5C$Dx8$ ziv3m$d&n}`_Sy>vU<7^%9;knV@52r7Ew~*eu?lPMfMxg? zu>M=bml}amcnIb55WI@Cm%vSM5ZuI@`VcjFyYL(AwH+l^0JX3LHp5-y;?z~p3dh7- zpb{>IE1`$0~|)8Cp{dQ?G&>=eQO}y&r~PA3jO=DZELnhSRAZrcQ$oN?-xL&j`FmMuoAn z+s0}bqmfIKpbA?y!~cO_z)=z=KckxsRzsOVGkkw7^*Xp<8mz?CK88KtBcITl@VQxd zQEW)fMJ?YB-(cK^pTnO>E-598NfVt!H`51&Eoeg}*moMNg$>B>@8an1kT}^#t@McS zi1?KFg_JjTJY`3T#Nd1I1Na%S;hUO^v}Y##3#gG%N_XEm%%2u z3!Z<1Pe>M-NtTjJ$$D}Fxt)B2+)rM`6VwN^mad>z&{M*Cp;!2+I2WJgVxM@6;Wopa z(g$PBV=s*T-?2|pWvSa>DeA*ET>ZDGBb}y?Cb`5X zF{>7zhm+#7_-?P^$k$3%auYozSz(9(t-?8fE=(2U!mr>>;TVy{hv1K*nRtK5N&1+u z1hwF&;v7RWgoN+IPlR4_BRoUv(V>4~+=+U;h&+jYVFf88p9(1uaQ_>DO5rbX3tT~e z4=2%%cffbZT5%oR4dvtpcpn}`tC(cCQYw~m$V+sCI6$+>2vG3}e7hY_#?ht#$Tg1;`C))gd=x_F*-8_kw!)zb4OSf6FPO@#0BEg|TQP zTo6)&`FR0z={iCBMoLX3qkyl^rrhdZ#M zV?srHLdB|v^Jx-lJ10}mr__-0@_(V!bV_ZUk|=65R8KBZ>%(f|)w-~nB&(J-BYsz1 zxJ6BzStfqaVnlOduhSv{lY)8@L4kTdNb)li$T8+|p4O7<9qFvg?L@n(8~hWpc@&;?x;CXm_L$t8F6EHQvTCPR_8# zW#gPBY(;7q>X0oJfCJc1WL^Axe5bTv$ixSz8FwJWpP-d}u)<0p0 zDq(ftpMV+=KKZxvYdX?3QdIdTFqG-ZxT;}$22aG}iQ;0WBJwcX|sP`R$+~Q2(;38OM2{DRai7WNmq-;d3S>EP6#8Fw zN~V8KvtB$q*Dbxw#H{%F<=N+z&s&~#K)?m#_S(2&)xd!Hyf#!deZmFl3^g8BG>6oA z30R4i8O3ihH9C_)i$9?u%jPix)IYr{T|AG_pT=A8!?bg9Ndr2%fq{mw+Az>Q(2-2_ zuL-M4c;Enijy^ZgQ{SFZoMh_Yo&H3_&K7^<)p{~(a!HuA3=FIt1R;vkX#PRMk;-{@ zwj>tETf&Jo@o*^I+=cHlI18+y747p7qcC?cOm-|C)X0wItC|lecuL)|qIrlCI~pFu3FXx7Y?+AM9hHiyqtNj*02{CGln}9cWyR8ps;WGyUcX%_{4dAmPO7 z@UnBwm+1VDv*GF!5^`~1BrF#7uSy$8yH}W5}l&E349lB zvZ2IAf1utIHKqjQjL z)B`MX>g>R7jLYen5?9908xnm2K^KJsvDZoTFHzfD)OPeCWGOP+uOATK-wnhNc2 zIC8={kTsxI4WPldp|28SolWiN*HlGqP`Ri({8&OJEMTP;97rcLMHwOX=igXjQ+%*Z zj-IRG-_3EI*vLoaK}3IINrpt`UqpK23F?`NjqK&gvQ>OvKtVC)8KMi2y&7tjpY=v7 zT9Mv1^!^K2SARxedN-_T$!q|q?}JgYW64BM*qX>{Tz07+89SNp+%mvp&mTRr+EM*a zqhG(Ud-yMf#Vmj0))RmGeDB$H3K*AS(S-E+T^^?LoUuhPPl12W_kR90<=^l491>PZ zRj^6ygGPkg>65S>^NYwY;1+gfH2eY{#5^0zJ4ApQEI)+h2+}m9$LL1CxeF;>I9naE zaR-2P34rZyIym+KI4=aqz81h+1mH^m_`BKv*^9GMTD@=mp2vnFf6weDD5DJC7q1iz# zDTIf!a>^XFlLhvtQKdXpG2M)?7vV612&;vBtXD9-8KECxFT!DjqX-fJrmR&(*o?3n z;W%p%@`S*U8dPcv1t0eH;R`qf51c|sAqcom56rDKg-Rwve8<%;KrA9D-<*C0^( z7N!dQBfi!jF?G;45qp!qiA(#l6?Fc;x5@K&4 z_6GDL>_XUskU&5!!&E^~>B|VOAiM!n5j2D)2u6Bz2&YNXBSW#d!CE(cjs5~W$njU{ zFL{6d3Vo61zoI|q`AeARWBxLIaVS3swH9m#?4w|=U|x#t2Kuw%NLDaa>!gQ~cR@@` z5o!l>mWEl&w3 zapgkco&a&=lg0U|d|C-^H+u6dr_q@twtb)2KK;Z7rdkudo8H4*H{F%a?-}|GT{rpe zQ0!2!Hivu%@`qGJL`Y7FZfyD zMDW8vk|O#+;85^)YEmRa!QW!dQ~QFi2kr>IRGKtm&9kv2!R(;QNe={O2A_VJlWxO? z2Zn+-v20)P#=!jG6#?GRr8ivGhb7GsTozjuyb#B$3#u519c2a;(8qUX>k>G#yl`AWgWW81*-zPWAi{%+|nOq`=9g%cvOb zMyt_mG#VwNXrx9ky4W9U#M!3plK9>&i7XX4u27azeV3=iNZ}$#WDAY7ars=*m>BJZ z#x-i<%<^!OnDM}C2+t)LQ9$F0xrv$a#-yBDmZ*$3CgdfTHV+bVcME^kCg=`4vaM)N zk`$}j?q^p^2Y?Xg_PhKnFWP=rOAC12SJ!xJvgSCe8tVQ-(wHztOoUX4sK>oq9mgWP(9P&~9GFC6lscUIzOp+!} z2P*jo(xK}7gVPytmu7!-pc?aax(9T+DE3FX2+NSpWP&KCi<(TFP9%(OurE?yHyDX< z8jlKnoTksCPNaD`iZszEr*Zeg%bezAcR!;^%;6+~0FvYfI0?yx04E8MTu#z-j-)hA za>qEy9egH%oTCZoG`8az8ryNC`N}_>{MS#{+<2S}&u-~#W!Haq?cw?^g!aUpSFiW7 zlZZOl*^<83i?y%mT+ech#aqH%b&1Y!ojN$X^*=PXvgX<0xy4`&F6CgSM?>$ zgGQL!GOtz7hpB(XjB4AC=a;!|rDqP;;n^YYP5y%zx;ze+cuT?>o|~{Cu%^kilWSQM znigxavpd>!llP|CA^$=0c)Cf!YG-&Z#J676cNKW+H`M9hKKx+S)~gu9^)%l1RUd4t zPiP%=eOmz<6UECL6E%3~ACzURZD+5Pn3busSn89hQN4e13Rccym4Yx%$m*(Doyn9Y z{CD|ZmColeE9j?(hKZI>wnATvkjQUbLD3_uNMD8>#K4N}6@4xEf_)@T`Z8mrmmQC% z{{j!#J7-|)RcS2Ei>>Kg?}=UdGAtSYFlNQaIkuG#%h?%kZLYNoGlWv8#n^c&=94j> zjCmR6WkMaPmK6&Mv@&QiRt7ERx}Yr81v8_z#NodIvCk|zlRhmV12r`^lVL4Mf4gqO zFbqX^eFevK2>gg22w)f}(#1m`sM`;4B-#;B%YrNq{`*p5kOCcS9+A9P5|v!Km(FMp z$%k8Hj~+&Cl*4t|oJ6?dq>adOP+I!?D*oj>Sdoyp-&c=wXU0V|4J4mbT)o@j@T`_A zJ_!Iw-kn0H%>;+5Ia(YBy)B)iwaz6~=%62-?(QC<7}NV30szO;ZY@smjO{h>;nI>pU_A z%4eL<0!wB|oTrf~kY~Z3Md+!xrwV*#J_pYed!C3(-nR_<)~v0gmYG7hBFO#3;Ywll zk6FphIT}-Zpg5l}8Ex?KhIX+*6~AA5V~zZi&MqJUGL!EvI0jfoLsCabvn?+R0R~t` zLsCablRhxP3O6z`E-^MYIW{?xF(?c$AU85HE-^MYIW{?y5iu8&R54otFq644sDEv5 zn=lam&ab!+o0g~&_ytl@MU|Rls;X`iC7JeNsw|gy1TDeHHq-L&XMFM%Q&P@pjla0+xu0)ik;(ttpcECYfewGOKlMEgr4Aj)_tbN~R+b9K=0 z9S9)E;kAP{vaJo^;QoFR@le;&bbs5s_RVzAr>g$hBSy7_$+!|-oP%Cke#m518+Uk& z+>6N~O#T{+4z%AsX)X%WyDpr^t+V=_2Ux9~;cQ<^VJcY<*bbtv`O~nnCd}TIO12GS z?949g#47g2v|SyTU_b1twtpQS&G|HUVYW{fx!!?m_nT$HBEI=A?b&wV_J0wijw5Gc zpx%7FCaEXl<4K$YU)jh}2Dp#^PrzOYkxNf+Posmt>gqE_&z2kNHS#B9N*>xmD3}$z zQW9{8(-6VzXiTH;qNqbl#hYVQ=uoP1KJVpKf;;}U+z6O$?+79ZMtF&FOenoU^aDck z>oVQAzoj<02#DEkK;_vRD|Wo~41baG{3Z3<;>WN%_>3NkVvFd%PYY6l7+ARsh2Hj`sC zp+mvIz{tQ4Bp8c8vRpux-c=CyE0AES1QG@(L9Bitp`!yLT!Dn{4iIr3Vjc^KU;+`W jAcCFISOq9+Y|X#`0N3CP9g{~j9ttrrH3}sqMNdWw>NhC$ diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex index 83a034b..8d43b86 100644 --- a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex @@ -5,12 +5,11 @@ Общие вспомогательные макросы -Collaboration diagram for Utils defines\+: -\nopagebreak +Collaboration diagram for Utils defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=273pt]{group___u_t_i_l_s___d_e_f_i_n_e_s} +\includegraphics[width=262pt]{group___u_t_i_l_s___d_e_f_i_n_e_s} \end{center} \end{figure} \doxysubsubsubsubsection*{Macros} @@ -56,7 +55,7 @@ Collaboration diagram for Utils defines\+: \end{DoxyParams} Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00151}{151}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}\index{Utils defines@{Utils defines}!Divide\_Up@{Divide\_Up}} \index{Divide\_Up@{Divide\_Up}!Utils defines@{Utils defines}} @@ -85,7 +84,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} of file \end{DoxyReturn} Если результат деления без остатка\+: он возвращается как есть Если с остатком -\/ округляется вверх -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00165}{165}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00162}{162}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}\index{Utils defines@{Utils defines}!ByteSwap16@{ByteSwap16}} \index{ByteSwap16@{ByteSwap16}!Utils defines@{Utils defines}} @@ -112,7 +111,7 @@ Swap between Little Endian and Big Endian. \end{DoxyReturn} Переключения между двумя типами хранения слова\+: HI-\/\+LO байты и LO-\/\+HI байты. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00170}{170}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}\index{Utils defines@{Utils defines}!ABS@{ABS}} \index{ABS@{ABS}!Utils defines@{Utils defines}} @@ -139,5 +138,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} of file \end{DoxyReturn} Берет число по модулю. Хз как работает библиотечный abs в stdlib.\+h, мб это быстрее, но вряд ли конечно. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00181}{181}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00178}{178}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. diff --git a/Doc/latex/index.tex b/Doc/latex/index.tex index f277ab6..cf39486 100644 --- a/Doc/latex/index.tex +++ b/Doc/latex/index.tex @@ -2,35 +2,33 @@ \hypertarget{index}{}\label{index}\index{MyLibs@{MyLibs}} \hypertarget{index_overview}{}\doxysection{\texorpdfstring{Обзор}{Обзор}}\label{index_overview} My\+Libs -\/ это набор библиотек для удобной работы с периферией микроконтроллеров STM32.\hypertarget{index_features}{}\doxysubsection{\texorpdfstring{Основные возможности}{Основные возможности}}\label{index_features} -\hypertarget{index_utils_module}{}\doxysubsubsection{\texorpdfstring{Общие утилиты \protect\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Defines}}{Общие утилиты {General Defines}}}\label{index_utils_module} +\hypertarget{index_utils_module}{}\doxysubsubsection{\texorpdfstring{Общие утилиты (\protect\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools})}{Общие утилиты ({General Tools})}}\label{index_utils_module} \begin{DoxyItemize} -\item Битовый доступ к регистрам через union -\item Трекеры для статистики и отладки -\item Макросы для задержек и утилит -\item Поддержка Free\+RTOS +\item Макросы для задержек и утилит (\doxylink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines} и \doxylink{group___u_t_i_l_s___d_e_f_i_n_e_s}{Utils defines}) +\item Трекеры для статистики и отладки (\doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} и \doxylink{group___t_r_a_c_e}{Trace defines}) +\item Эволюционный алгоритм для оптимизации параметров (\doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{Evolve optimizer}) +\item Битовый доступ к регистрам через union (\doxylink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines}) \end{DoxyItemize}\hypertarget{index_trace_module}{}\doxysubsubsection{\texorpdfstring{Трассировка \protect\doxylink{group___t_r_a_c_e}{Trace defines}}{Трассировка {Trace defines}}}\label{index_trace_module} \begin{DoxyItemize} -\item Serial трассировка через SWO и RTT -\item GPIO трассировка для отладки -\item Сохранение логов в Flash память -\item Обработка Hard\+Fault с сохранением контекста +\item Serial трассировка через SWO и RTT (\doxylink{group___t_r_a_c_e___s_e_r_i_a_l}{Serial trace defines}) +\item GPIO трассировка для отладки (\doxylink{group___t_r_a_c_e___g_p_i_o}{GPIO trace defines}) +\item Сохранение логов в Flash память (\doxylink{group___t_r_a_c_e___r_t_t___f_l_a_s_h}{Flash RTT Buffer}) +\item Обработка Hard\+Fault с сохранением контекста (\doxylink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t}{Hardfault trace defines}) \end{DoxyItemize}\hypertarget{index_gpio_module}{}\doxysubsubsection{\texorpdfstring{Модуль GPIO \protect\doxylink{group___m_y___l_i_b_s___g_p_i_o}{GPIO Tools}}{Модуль GPIO {GPIO Tools}}}\label{index_gpio_module} \begin{DoxyItemize} -\item Управление светодиодами (включение/выключение, моргание, плавное затухание) -\item Работа с кнопками (чтение состояния, фильтрация дребезга) -\item Инициализация портов и тактирования -\item Поддержка альтернативных функций +\item Инициализация портов и тактирования (\doxylink{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l}{General tools}) +\item Управление светодиодами (включение/выключение, моргание, плавное затухание) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s}{LED tools}) +\item Работа с кнопками (чтение состояния, фильтрация дребезга) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h}{Switch tools}) \end{DoxyItemize}\hypertarget{index_tim_module}{}\doxysubsubsection{\texorpdfstring{Модуль таймеров \protect\doxylink{group___m_y___l_i_b_s___t_i_m}{TIM Tools}}{Модуль таймеров {TIM Tools}}}\label{index_tim_module} \begin{DoxyItemize} -\item Базовая инициализация таймеров -\item Режимы прерываний -\item Формирование задержек (блокирующие и неблокирующие) -\item Работа с энкодерами (чтение положения, обработка кнопок) -\item Настройка ШИМ и Output Compare +\item Базовая инициализация таймеров (\doxylink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l}{General tools}) +\item Формирование задержек (блокирующие и неблокирующие) (\doxylink{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y}{Delay tools}) +\item Работа с энкодерами (чтение положения, обработка кнопок) (\doxylink{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r}{Encoder tools}) +\item Настройка ШИМ и Output Compare (\doxylink{group___m_y_l_i_b_s___t_i_m___o_c}{PWM/\+OC Channels tools}) \end{DoxyItemize}\hypertarget{index_structure}{}\doxysubsection{\texorpdfstring{Структура проекта}{Структура проекта}}\label{index_structure} \begin{DoxyCode}{0} diff --git a/Doc/latex/mainpage_8h_source.tex b/Doc/latex/mainpage_8h_source.tex new file mode 100644 index 0000000..3b60fb4 --- /dev/null +++ b/Doc/latex/mainpage_8h_source.tex @@ -0,0 +1,110 @@ +\doxysection{mainpage.\+h} +\hypertarget{mainpage_8h_source}{}\label{mainpage_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h}} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00001}00001\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00002}00002\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00003}00003\ \textcolor{comment}{@mainpage}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00004}00004\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00005}00005\ \textcolor{comment}{@section\ overview\ Обзор}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00006}00006\ \textcolor{comment}{MyLibs\ -\/\ это\ набор\ библиотек\ для\ удобной\ работы\ с\ периферией\ микроконтроллеров\ STM32.}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00007}00007\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00008}00008\ \textcolor{comment}{@subsection\ features\ Основные\ возможности}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00009}00009\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00010}00010\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ (@ref\ MYLIBS\_DEFINES)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Макросы\ для\ задержек\ и\ утилит\ (@ref\ DELAYS\_DEFINES\ и\ @ref\ UTILS\_DEFINES)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Трекеры\ для\ статистики\ и\ отладки\ \ (@ref\ TRACKERS\ и\ @ref\ TRACE)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Эволюционный\ алгоритм\ для\ оптимизации\ параметров\ \ (@ref\ EVOLVE\_OPTIMIZER)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Битовый\ доступ\ к\ регистрам\ через\ union\ \ (@ref\ BIT\_ACCESS\_DEFINES)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00015}00015\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00016}00016\ \textcolor{comment}{@subsubsection\ trace\_module\ Трассировка\ @ref\ TRACE}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00017}00017\ \textcolor{comment}{-\/\ Serial\ трассировка\ через\ SWO\ и\ RTT\ (@ref\ TRACE\_SERIAL)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00018}00018\ \textcolor{comment}{-\/\ GPIO\ трассировка\ для\ отладки\ (@ref\ TRACE\_GPIO)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00019}00019\ \textcolor{comment}{-\/\ Сохранение\ логов\ в\ Flash\ память\ (@ref\ TRACE\_RTT\_FLASH)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00020}00020\ \textcolor{comment}{-\/\ Обработка\ HardFault\ с\ сохранением\ контекста\ (@ref\ TRACE\_HARDFAULT)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00021}00021\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00022}00022\ \textcolor{comment}{@subsubsection\ gpio\_module\ Модуль\ GPIO\ @ref\ MY\_LIBS\_GPIO}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00023}00023\ \textcolor{comment}{-\/\ Инициализация\ портов\ и\ тактирования\ (@ref\ MYLIBS\_GPIO\_GENERAL)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00024}00024\ \textcolor{comment}{-\/\ Управление\ светодиодами\ (включение/выключение,\ моргание,\ плавное\ затухание)\ (@ref\ MYLIBS\_GPIO\_LEDS)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00025}00025\ \textcolor{comment}{-\/\ Работа\ с\ кнопками\ (чтение\ состояния,\ фильтрация\ дребезга)\ (@ref\ MYLIBS\_GPIO\_SWITCH)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00026}00026\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00027}00027\ \textcolor{comment}{@subsubsection\ tim\_module\ Модуль\ таймеров\ @ref\ MY\_LIBS\_TIM}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00028}00028\ \textcolor{comment}{-\/\ Базовая\ инициализация\ таймеров\ (@ref\ MYLIBS\_TIM\_GENERAL)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00029}00029\ \textcolor{comment}{-\/\ Формирование\ задержек\ (блокирующие\ и\ неблокирующие)\ (@ref\ MYLIBS\_TIM\_DELAY)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00030}00030\ \textcolor{comment}{-\/\ Работа\ с\ энкодерами\ (чтение\ положения,\ обработка\ кнопок)\ (@ref\ MYLIBS\_TIM\_ENCODER)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00031}00031\ \textcolor{comment}{-\/\ Настройка\ ШИМ\ и\ Output\ Compare\ (@ref\ MYLIBS\_TIM\_OC)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00032}00032\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00033}00033\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00034}00034\ \textcolor{comment}{@subsection\ structure\ Структура\ проекта}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00035}00035\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00036}00036\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00037}00037\ \textcolor{comment}{├──\ inc/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Заголовочные\ файлы}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00038}00038\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_include.h\ \ \ \ \ \#\ Главный\ include\ файл}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00039}00039\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00040}00040\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00041}00041\ \textcolor{comment}{│\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00042}00042\ \textcolor{comment}{│\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00043}00043\ \textcolor{comment}{│\ \ \ ├──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00044}00044\ \textcolor{comment}{│\ \ \ ├──\ general\_gpio.h\ \ \ \ \ \ \ \#\ Работа\ с\ GPIO}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00045}00045\ \textcolor{comment}{│\ \ \ └──\ general\_tim.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ таймерами}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00046}00046\ \textcolor{comment}{└──\ src/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Исходные\ файлы}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00047}00047\ \textcolor{comment}{\ \ \ \ ├──\ general\_gpio.c\ \ \ \ \ \ \ \#\ Реализация\ GPIO}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00048}00048\ \textcolor{comment}{\ \ \ \ └──\ general\_tim.c\ \ \ \ \ \ \ \ \#\ Реализация\ TIM}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00049}00049\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00050}00050\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00051}00051\ \textcolor{comment}{@subsection\ usage\_basic\ Использование}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00052}00052\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{Инструкция\ по\ подключению:}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00054}00054\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00055}00055\ \textcolor{comment}{1.\ Настройте\ конфигурацию\ @ref\ MYLIBS\_CONFIG\ в\ @ref\ mylibs\_config.h\ }} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00056}00056\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00057}00057\ \textcolor{comment}{2.\ Подключите\ главный\ заголовочный\ файл:}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00058}00058\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00059}00059\ \textcolor{comment}{\#include\ "{}mylibs\_include.h"{}}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00060}00060\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00061}00061\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00062}00062\ \textcolor{comment}{3.\ Используйте\ нужные\ модули\ в\ своем\ коде}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00063}00063\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00064}00064\ \textcolor{comment}{@subsubsection\ gpio\_example\ Пример\ работы\ с\ GPIO}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00065}00065\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00066}00066\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00067}00067\ \textcolor{comment}{//\ Инициализация\ светодиода}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00068}00068\ \textcolor{comment}{MX\_GPIO\_Init();}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00069}00069\ \textcolor{comment}{GPIO\_LEDTypeDef\ led;}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00070}00070\ \textcolor{comment}{GPIO\_LED\_Init(\&led,\ GPIOA,\ GPIO\_PIN\_5,\ 1);}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00071}00071\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00072}00072\ \textcolor{comment}{//\ Включение\ светодиода}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00073}00073\ \textcolor{comment}{GPIO\_LED\_On(\&led);}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00074}00074\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00075}00075\ \textcolor{comment}{//\ Запуск\ моргания}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00076}00076\ \textcolor{comment}{GPIO\_LED\_Blink\_Start(\&led,\ 500);\ //\ Период\ 500\ мс}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00077}00077\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00078}00078\ \textcolor{comment}{//\ В\ основном\ цикле}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00079}00079\ \textcolor{comment}{while\ (1)\ \{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00080}00080\ \textcolor{comment}{GPIO\_LED\_Dynamic\_Handle(\&led);}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00081}00081\ \textcolor{comment}{\}}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00082}00082\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00083}00083\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00084}00084\ \textcolor{comment}{@subsubsection\ tim\_example\ Пример\ работы\ с\ таймером}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00085}00085\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00086}00086\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00087}00087\ \textcolor{comment}{//\ Настройка\ таймера}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00088}00088\ \textcolor{comment}{TIM\_SettingsTypeDef\ tim\_settings\ =\ \{0\};}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00089}00089\ \textcolor{comment}{tim\_settings.htim.Instance\ =\ TIM2;}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00090}00090\ \textcolor{comment}{tim\_settings.sTimAHBFreqMHz\ =\ SystemCoreClock;}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00091}00091\ \textcolor{comment}{tim\_settings.sTickBaseUS\ =\ TIM\_TickBase\_1MS;}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00092}00092\ \textcolor{comment}{tim\_settings.sTimFreqHz\ =\ 1000;\ //\ 1\ кГц}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00093}00093\ \textcolor{comment}{tim\_settings.sTimMode\ =\ TIM\_IT\_CONF;}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00094}00094\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00095}00095\ \textcolor{comment}{TIM\_Base\_Init(\&tim\_settings);}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00096}00096\ \textcolor{comment}{HAL\_TIM\_Base\_Start(\&tim\_settings.htim);}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00097}00097\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00098}00098\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00099}00099\ \textcolor{comment}{@subsection\ dependencies\ Зависимости}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00100}00100\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00101}00101\ \textcolor{comment}{-\/\ HAL\ библиотека\ STM32}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00102}00102\ \textcolor{comment}{-\/\ SEGGER\ RTT\ (опционально,\ для\ RTT\ трассировки)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00103}00103\ \textcolor{comment}{-\/\ FreeRTOS\ (опционально,\ для\ FreeRTOS\ задержек)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00104}00104\ \textcolor{comment}{\ */}} + +\end{DoxyCode} diff --git a/Doc/latex/mylibs__config_8h.tex b/Doc/latex/mylibs__config_8h.tex index f001a96..0764916 100644 --- a/Doc/latex/mylibs__config_8h.tex +++ b/Doc/latex/mylibs__config_8h.tex @@ -6,16 +6,14 @@ {\ttfamily \#include "{}stm32f4xx\+\_\+hal.\+h"{}}\newline -Include dependency graph for mylibs\+\_\+config.\+h\+: -\nopagebreak +Include dependency graph for mylibs\+\_\+config.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=229pt]{mylibs__config_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -57,6 +55,14 @@ This graph shows which files directly or indirectly include this file\+: \begin{DoxyCompactList}\small\item\em Конец RAM памяти (чтобы во время анализа стека не выйти за пределы) \end{DoxyCompactList}\item \#define \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b}{GPIO\+\_\+\+TRACE\+\_\+\+ENABLE}} \begin{DoxyCompactList}\small\item\em Включить GPIO трассировку \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}} +\begin{DoxyCompactList}\small\item\em Включить оптимизацию параметров \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS}}~20 +\begin{DoxyCompactList}\small\item\em Максимальное количество параметров \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100 +\begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER}} +\begin{DoxyCompactList}\small\item\em Подключить библиотеку для оптимизации параметров \end{DoxyCompactList}\item \#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{INCLUDE\+\_\+\+BIT\+\_\+\+ACCESS\+\_\+\+LIB}} \begin{DoxyCompactList}\small\item\em Подключить библиотеку с typedef с битовыми полями \end{DoxyCompactList}\item \#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{INCLUDE\+\_\+\+TRACKERS\+\_\+\+LIB}} diff --git a/Doc/latex/mylibs__config_8h__dep__incl.md5 b/Doc/latex/mylibs__config_8h__dep__incl.md5 index f2647ba..92c2562 100644 --- a/Doc/latex/mylibs__config_8h__dep__incl.md5 +++ b/Doc/latex/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -eca6e9ed3f5c38fa565ac78e3e494b4a \ No newline at end of file +4caffed778a6832d18365a032a821f0e \ No newline at end of file diff --git a/Doc/latex/mylibs__config_8h__dep__incl.pdf b/Doc/latex/mylibs__config_8h__dep__incl.pdf index a60eaa9cc3ec4d0cb81ef256b057eb9cf3c748aa..a1d76bbce778fb3e2c7372eddd2b1daa80c7cd5e 100644 GIT binary patch delta 25307 zcmZsCV{D)e&~0t)*0yciwr$&d>TYe@wzjslwQX@6ZUqekEx#`}flI zQ_m#kaC>tjUuO7wCFCyo{HMJv{l|te3?8W`DU;eEBwi*_SMNyBi@2_^_DP z9y^naTn17@b;ghx$1VqSMJsOJ!qD1ZerU_EuF3 z*3_$M&RtzNAy(h6Y6@!r`nLN1(V?AhtPhWPyLXo}I%bbEoppme;|(f$@n129K=(dY z-SD~B1K5m!WmD^?BbrRLqQ*aR)!n=MV9YI>Z{P{jAV4BtL-1}>lJ>!lzX3(}HJ+Sr zyi~QWepSau{%6= z04J`_U|sa{^-(9A-$=iwF}!b(F7{(6hCj=Dw*HJ8m2RJ9Xv~reSf>s!Mm|1vaCvu( z2Pjs%l&Zr+rRiy?IpyF^+Cs0uC|b!Ct~alHUiNGjwtFhz-`i)<6Ym^8ZYHu2i%1cx zs(S{i-0Md+P;V0dJh^VgJBEjdtV$Y(5vvHMFKbDr!dHzcp=)xpvTC>XZXQ3jje2f= z-K_E#(5Bs`qO-L)dV+fm)j#~5nc$sR2FiG4Ah4;SFm3V3$yZ%)L?@A~i_x5G2NGIs ze*Z|~-6AjNM(%c}2CXbp=sqyW2?Q#a+0~}s7Y4!hT!&St&xB&?AU&AN!|TjS(2nSc za)y+2*2z|IG6m^8@q8YS5iaIC;GYbwkPSfmZ^s4Oda@OL5Qy*(DqrOm;QK42fQfl; zBedpDEaPlimoldCoF^&d7xiklg${5?C8~`WyV~xt;KK~aQCUJhP^*!- z8tFQ@QuPG6awB0Bx(kG9yb3;4cL)oj%kbxv($AK^5+Q58C#SC4&J{N)`H^3AgoI}s zh9Lytt-vx>qSjBuN{pvU9_5Lwfxv5yJ^dhdeJQ4Mu^FLqaJ(ASzzPd+Ej^?&F$ad! zPH?ZjHRk}=ROL%Mdi_R%&9L3Wj};!nf{zyalf}5xP5rt6{|#V}?%ftaxT1T>w5I@uD)QddNjpXSYC6}jS4lqpSAz%tuEB~Xbg zjX%=zf(#xxt12Cd)5op-MG-FhkD)!EO}&Ju5jShQ*G*rYf=wMNomL*Gy}j7I7rDq2 zY%CCNg^#7PYG)y8quoCiVo2syh*@jYF>Wr0GGtq4a$w;)UFY+9RASAr++k3#+Amn> zD6i?{J^rTp_+|52;brus0@BTUmJIkpGYU{h3 zVuxMHkJmm`97T_s=DFxgLrluk7yQl#OWhI~%KaAEcJFl&`?Lq&4Ipto>{*_1l|u~O z&N{o1XF5mJtqi}qrX2h;JF0}pG^0~u+rlP1+1)d5?z9{0!1(1WfD8m~Lw1GdXi>U9 zk~9$Lbxy?u)KBU~HZKG@z$w(ESRAB^(iLK3aPY@6Q2~)!WOfavWWJ zU20M`T%)p460SyJ0>*{=m^yQ;oM_PnMxMzErLK)TP?yS1<`Q-XBb?@U%PZ(DAz)6G zY!9(L$~*-cl(Cg%>tMl$>4mh+;46fiVFa{x$^1(JL${JA!#PgF$ zQDOiM&g1Ws(!4aL-kTo`nBmz3rCht>06N34fAAj9Gf!5hu#=V+&<>KxwlgVC$@qLl9)}%-J6% zn8m<|WEd6K1n|r=B8VU8|1BbXeNW(1cxz3r2sij8xm z{6$ppyAlzYSzVGmgCjQCBkMAq_5M_-&pkLoiuhkCr!mNcYE@bg*h51-;=Bn-`WSq+ zFOhbzurmk0bQ+TmezJw8tZUQw#=nY6fifcOPC?%y+kcQhV5LtIu%RMp;=mjYo(pHXuMB;ia*U!B0`ryZF&u z+_O!&iiR-_451bd&JDq{6TT2^6Lhz30O!*f2E50_Gq_$Mj2P?heS7p;?9PKt?NeuD z%A{QwjA$3wHY6q+iq7LVhe<-5##rPkDnpm)b@C#O?Bkr4RB^-vrKi*rCZbEh2HqD- zc3SXc$}|ay6~e?_S%@V2`*&t^Oi}O zROpVF^`W9w(Z!q3+Yeib4zszw@Y_N4-*@%4P3Zw?@qrQ8dacP1(^`$~wQi?|oLZp0 zVm#c7S0BQam&EY@2=ZvQH3+~S0K`(eh;1ww4dgA2S=ql6eCv1{dDWSVZkRLd_@jf% z`YG_sU^9G+WuP!h^>*gMSYjoYhX3l9b_C<9v%-c;m=OkNdMu5X28)QGN9rQ_5Wm3{ zVc6B+%pJ^J-CWF#?f(Zkn%KaxvJ){8{SP1_B4S}@V*bBza5z@hWJ_30P|oB&Sd8Re zJu)y>?&Nn^L3&lDy{MC@V=xdH2+)N84Nb&Ku7lO`j{e?^Fr%Y845qEa zS~Ty6oX6XNU?Og$E`&U2CfjV1Hwohk1&Pa5`Ux`v0gg1V$5?*|VR{}gH@zc6ne^=2 z_YDB;S(%oW7M|sN4=vsvVN4=Y!nMCd=fkQoYP|c*HHk%Bbx}xMF&(y0{O`skpGnzn z$wP-P(`q_AmVf1Yslw3L2#x1-cpS&d*7y-=!#zCwAL@PvEqp zHsi7_=_75~Ks+6h)wEx0IaPcD247*g02|==A`Cvk>&1Yp{4rm@)o2lindDa3YDV9Q zK)>1HE^BO45db|^BsQxQ3+2!V1lO?@G39|3AkXR?SC|Qd_(F?7Lj~Z91IggZVV-|t z2b*=HB1?Rw`1JOc2UPjg1;{A!+kj~Gz|1F9Wssgo35EWMXOQT)iOve_6<6-XB?e;h zgnkLq1$oeO>s19L!(8bgUqC*6?4IP##hl~hIBTa@?JmT8MU(PiIk5dftz(ON|y9%%QxzP z+O)-VPUZ(AmHsnibwl`hcJO*aeF`X)Y7tsHt*Eb5x0Dz51TT#&U+GfAU`>Fy*NOc+ z0ktxWguUl1!BL6poK#y*D8rGQMx6?yd^v~~JW;{iJ-PXb)U&qvSET+?TnNz(1fUb(-6+84FN} zFGzoww{hd$2zl97vgDle@#*crz5$>*SA*Ee2Jk~#Y}xM7)8-Smu4jp9n@${_#R>fC>WR~?bpK-U8!{QyQs{>##j#i}7)FG1U*rsZ zB>xc`BRdrXNIMti&$<`t1xWZ!D3SVh1ufzx4|+(jdApRWm7SRq?w81C(D@No2yz zx^zv;7VWxQ4CRZ5kFTG3b$0#{fgj3QIyp#LHm>|hc;aBh$}wAR_mI*w|6aBU;&-hR zk4559h02Fa+9lN^bk*?{)=6IZgSQKHP=Y96a|~NI&9#$YT7ZdLHy%7GxHmsx_m&vT z0;-rbgrlGWV$iuY!dR0S@E``ixgE>(pAJY+W&a>P`S}Ng;(?2okwXFSX$ZX9RZ|}! zWafW!#-W{^_Nq|jZQDL>n?~P#ltM6V>r2Iw#8rYeLa#saavJBda-63#vWZPuH~w|R zUMq|sqgf6Aq5!C5g|xi^Y`RCg=U)_T+@|4Rx`1$mI4axk64-K;hJY3JVl}w(-UoPV zjcC=MXDP-9iBzSPLDJRM6+w?EL+lLoj%!X*ISIdQobV`R#ZX5DZ+c!i3DKb?sn(uH z2+Kx>LImE`Z`~t&4H=nVw|e@}k@W4nUZ4Tm6M-w(Cm`T;_u0)wu!||kv6r*c>!4kc zL?$1@LJ(5`Wk-YqZLoRWCKs>8wEe;(!mkizuDW~kiZ$Zp)bHKCevK=Cj*w&?Y=(J; zeWn}|H%#JH#y!ro*S5~FR}jCO#Vy{EQW-o9@05;hDsR53Q3dpqf4%RyRzUHI?`TM6 zE&qwE7@)9w3v0wH{FB1JEgdP)5L1s;3%y5I{0QPVZ_N>n# z(143D;y`EY8&^nW?VGfqMV%f`=hI6YE9N6h#%10iFst64F2}0a`mAe9iC>{*8fUb`ubKEnV*&u zoBvTm`>rS|@S0AXKP<`ro_~~#Hwvln>h3o+&rMNYqC%9mysEBZa{71Kz8O&gfc4Me zzKuBh9G$gYLX&P@U0+T_I+Yr?8MGySAabflZZ#^HRYt3D6=|^E=V={BBnBH$P4ALc zt!;a@A@?C2v zY@P7Ba$fNG7n^P1>nd}eL)&x;805Kbr-qm$3y#J+dRtu#DL!eyMwIpV9Gc#ukwujo z>~>)wcUOUbZ3X%-X#vTLcLoqV=bl|YMQKsiAwn^JhdWM1S#-k$nS zYPnI-J=Ig~#8iLECYT$evTx8U@0IrrhD8t`aew<)tSp&<*R)kHMS=()aM!xXVQUAU zE!CS`YzZvg##dmR`BuWk4YZ{AnJ(o*q^M^hM&1>H!@+7lbj?2b|-CPdu*Oe~sG!$4C zA_Uth%AYI_$?tsfBfNu8pvRCYAWbHVyQNrb1zd$Pm5;h=S@pcHHxDX9pXOs7WQ6Fk z+zUi5Nr!P69R448Is9?6kidKS5Bbgt5ye>#Ej%}?IU4~GvE`GBRJCj!T2(3KS{wSw zeeB~H?wn$-%LGu$(kLN(MN#Dng+S-sTgX4Ulnc~Myq9D`ng*_`z&!POI!FVu?K=K> z?%js_40TIdRE?9Y@)36i9Nhrj-x#Me7iE3(*ydT~A*J7=L8e$=a&Zv`6u@9vUhYvG z-32$G!L_6+@wN8Q937u9*L!wsyme|Wc=`?H;(^YYb#Pz>O*8RTtq3P~G5`w>by0Xy z#%cs2+^SgAVxjoV_k&)Rz-~5V$lGZ=P*~^@x2YP`2>*}FB78^KhmQmJ9HmUSi~D}# z7TF>?A7H!;*d#{Pt{4*5C4QLX(e3?5E236?4R7niaggm=M8I20s%X9)q!!5%gvPH3gZ zWeGP;+`;*8$oc`^1{fVRiDm?vm`**@lRwb#DJxp%*!FP$_FS-ktM_FQojTL53#ENp zb4N}(VWa!laj=xfJVh|4G#R;1D*;j_P};wwHDoZJ%8g^3esVpeU(u8cBj==CuVH)U z%TGucjf?1WI^?;)rNLSG$gOZYN^zf7Sfm9Dww80dM@gKXNr6rkHnBrBSWBVX7;N?( zIeoz%3KoKMg+hmQhd`7`BeVFzXHr}rBgo@m7?PtWhhrw; zIKlch*L)UN9D#q?JKsBz-xUU)yQ!ut@wkBfRyz^<$HYiA&|$TXn{EHR)%RLu&CX6M zBYC~)^?CP*`&D(BtzPg=0Duvg4hnSE@rs3jWg`f&9gl872q|<7uRFe#peMh+a_CzBugZ< zo8=n4t*)FTbR7;?>4J8C#Q1C9Lp<g4szAeexlIXzSHiy| z>vlo}>TEPlw_bz962W9l2%<$}XkCid)DT9#MxPVIlxWtBD9xfgO>*6?UD^W?^f(wm z(NXnhZjQ$_=dU3YCD2_F4>>MZX-XF?;Ne+Kso9_HNm!v_WLv>!tjVYAg^Ean>J~*cugsDJU7T{TCXvaZZ8-aI zLN#RLQCJ^|(Ma2Bm`yCo$83_wy}Q)iOlEVxg(ozSUI&C@z zVTCPnO>#}H=6-`Z#5Azo3P24RSQ^>?{^VT{o)k3HCk)E za^r^h0(6l`^dB0KAo4j6E(!KmRnUIxej5N8y?71+oCb#daiDuqbtdI@^%)!S?1$Q1 zPN9lIpEHP5cHKDUY{uq`>)z-t*l2Hv)Kl({&L_tpplQKxek|*A)gW60KGV;Brngm4 z!?OCV@7AK4g^s!iKnY(Sau)x5KyqW>5wFV6_9LEI758jnnkbhQx zMr@~JK$s=Bf)3a2U>HU<)xE(*@BHZSZsc#z?a`3@-=A;wIX)w{#Q!`PetS>>_nTD3 z*5_B2K)2?Z1hrpYovi;4o0CApV)$V~iJ0V4I;Y^NgQ#VPMob!+%yOn_%(SpD7TYbG zJ7^{s3H8pcqB1h|BCAI;a($gKn)9F>cSJ-Qr=JBEmIlg(&MTFYs>^H$m2lST!OOPz zj@vfJW4v{4b_mX_J+#ZmH{v^&wVa*pI-6UbKtzCv`ZPv$ET^#-!3~L`yVakUp|$u) zkl66S`@es`M31P^h-BHZbtr`%YGy&Zmomp>bD9 zOr*XgS$r$Oh+fqoXO^jw2I~><46HrH5Bbpd67$`Y_k)QqNF$sz%fyqNu|aq#5O<)*$6~ZbFdd%bhlBL zfc_Zv+cIgT)z>@jP4)2o9Rq#VKgnX-e~au3;$Vo4ft6TSGhe&JzU-c`!~}Ku2o_Rm zqm^jwMM#w;<0de*#PLhHn=11r=EG>@8t~2g-FgDozS!MsdwFmE+{tTd_+htbOPfa5 zX)1Yp?ir9d;`!$3Ftz18b$COVEZ@%1eOT93^d8`9|6cSOkI3-x`nlcn{StGa&;M5i zbx)s|+SsdnQ5$>7w{MF4f&wNY1k}*FsR~T(3$E25@#NjgI%r#$I|2DyYEevkB*-7zg!;z!#`eTye?VoN;-$q!LcsAU@n*lqHnCuq zX|HRnZPqp6oqXwVDm$wfk{><`1<*@QL+h0&DU&Pv(c`&A3<*=?9R*H64&}5emHrZ( z3BuQ3>x*wgoey_6GEs&is!fV$ks(~rS)BCQ&1QN*bG|cf!WK`AlC;7Y>xE*;uc2s1 z&BG%Zp$aA(C#Duvwz*!7MdW`B%tfR1=h0C?1z-NIxciMP&dyyDz6{o?1fTGyq6kHni0S_PMbKM`q-Gi8hc=~+}?`_5T z4BB^w@vR+keeWaDv2%U@fTbr$Q7XjgfUPcs(9}L+q*Uh3AV^N4pJ+;fguGdBgXK$e zO2=rO*o~O;{urHhTnVluAFe%9H@`#Xm3c+BzW0;+b5!39LYFf_W?SHrUKpXG9tzTh zE%LUCy|32j?!_=7t<)1to>iqs3^GkPe4xoe3&A}o+d|%^{%xHH0i7LB5ib!Xxowiy z+am32_CDJTo9vGI39b_awo3R>l3ARG?=vc;4>G+IOJ)u&{4s>e1k8j)`e~Xo_3JxI zyN5ezfa7QLTjhb&*HF_HC{rA8a;Yh0lmE@LKKog=@P}q~+D)og;D``1gqQGg-d2KK(*CtnjLH z@r1F0m9XGfdDJ=|

v>d zOJEbMImTG;u(;coOUStnV)IVFhgUGb#pyT6{N32j?Y^&om!sLOp)~c)r-jLKMwX*5 zJ%8U&I_Dz?pqfKF`<0sl&zp#BICh1goFMUrn0vyfH5nrB-H-uIyM7br)ud6@LjzTS z{+p*w3w@fno~HaN>I`w{s7ky7MmM)pVLj6WN2iRHvJJg77Z!dttK{zf1!ECMwc0u& zQnIYVx}Dnef+LqHa@sGy`7qxUtRvEfT8(lBcAT3Cuw3u^BRwJ5`e+-d3lhn#{np}e zE-02pDoD`gDcuJq>YmYhs!(Zp;a+`S>H3(`3ItNWOzgIYe{Gu(|1= zu8ZdhxOOd-fhXK8HRybSZTf3qr?c+6+r$6OUP|&S!#}{~iOq1_Fp94t&G=~&ibg(#AHMn?) zHRl10bqGGEIv9R1dssg2;i%hC+`z8=&2O;>px$TW-Aep%{?0wGPisHUV2^h68QDaq?x-

dl0*D#St4u=bR{~l_o|x!UqwoyAe#m!dizOYA+jfGQB_1j%wvgXIX8- z8jBaftz4>tWa?%f`E4&pvrYON>~qH@o#zhuz1uQ?o>|+< zS@rVcG4#7c@ba`cY4hZXXDApp+MwE`RogC*>{CNtmmp~kp-~LJ+qG;_sZ*oLVKBbUE9`+zJ5D9$`b$U>KanO=%JD|xV4u?b(cn8Es* zR{ccV4Q?H>Vf|_jXd3O?%)bLX-@OGTZTJjA9J~>??s2$|9}?&Y#fq@rs(Mv-jxfwLrL{K)2;b z7WH!bQw^nVy)OIP0H=?E37f6R6Wep56AX8tMF-aCRuRfhR>O+Un08p)0g#<9G44^x1mr7^DcVAkp;0kt_*r#rHBKImDKPm!xc< zWQ}KyHwmFtf#R?hbt`#Llg9e8bwzPxt_SlkcXkv%5o4tX8eFzKQi)d}>Z>HJH`ggN z*Xi1RJ?Kn>;U5v$2!9ZtlP=@6SRWndjXb4gRHPanHp%GXkzBlIxnuZ^gs{(~^8^tgcb#K$U zERi}X)}^=!2us3kd^x*zH0=AR<<%vqx;l&Ob^095=kt9i8*Bf1*>TL@3hQXYE{?n& zggEd!Y&Gn?-@%nkY^)zk2cLyKtIV-e@TyZ1`pFuUWC=WF!dPkz#WkW%eG0xu z<$kx*YdJ4<`z2Q}NHZ1w{6|!V;1rIFwaF}V{1j=D_dnYc6eRtZTTFL@K71Y(WdFT{ zNUG^K>6BX^j7TUWFe5i2OQhZm%cF~kFun}Vy;(M9+(RRfBG3$wvo32z!lzYCbVmc-pteJc_e@cPi%0nP4&0=kQ-l+i=BP=e_c$Hu zJE>DV)RyMtBq3-v2e6dUTl;pNH%Q0UHykly!bj-yDJUp?(YrI2FAiU1j2;h`-oYDfa)`_H>%8IC`g>H!wtj)Gsbyh&7;?N}({9PM5t}SAA>D;r!>e zabHF3ILICR-0O?cEl?98vGbf+lS3jlGoN5@>S=aX;mdI>9=P03-tC2cX+k#}f@w_! z&vj?1`A;gx@NHyL!(xO%Oq2^1BN5-v`kTR2ns*?DNnWbyRS&}tVk+`13kjCZ9y``to*9lR|(oA04Y0N~1n3kK(PKXIYWZ`wS)Y1Ad8Lr10K85%n9yb@ZbVG{odjrCJ?+zOcK=x~Jq06#k`4&s zZLHh=E@!Cx5kCmdJ!>M=`N&!6Zp>D&D2#$jB~nUOQxi&Yr0H>*6=tcWY9H(5#{4$S zu5(rA0;dBZV-?9nY9V!1x?8m327mGJT;#7eSb9Cslr~h_s+pl0FAi2l;KEIV?MLqH z3U)S~vk*=}L)dU}k(V;;>C>aCHs4w1th;ahdb7sm=lh(YjC$8|5sGYAJOAc{X)6S-mu=}HBGwUM5MUCf3s-p*4v@F8rk<#13+is9!H>S6t86 z>iuAmA{j^JXmc}HkSdZD%*4P%nG6~7cpW@&BE)n?ZA4Q!meQ^da&*G$3rRkaG+<^$ z&psMp$w+`yAZy1eu>QxP@BKuV15y5Cm6o?0h$T?|>d|ih@~a~?)$Y4WJ2r4MKdU1} zE>G`qxxDkdBi~2A#E9=AyHQkA+~9LRh%HTAGUqhB%;$DI`Rnz&zZ7jXrq_IDOJB3M z-)vCp7U70gATs!9HO655liOgw?Fb|u)C;j6iS7Wiqc-0)d@go|sud@&w7z#h#tzB| zUc2soDUx;FD7KjSIg{xQo?5vFE&SbRBvcC9dY5PX zf^yLi(U|))_Hn;c#dD)qa-Xf*g7V4ATD?|=G+Erkr#8ScvSV1q1m6PN0^eryoGG10 zRzKZ4J4e2bVvgmMWtC+v_CVq?HZFS$;Ph_O+QfVQuK{jf2Z(vEd?fj-Igfva-FLhb zt`I!pdUEKUxxL!A323_1PvIfmJvl#hUFGoqS%qDh%rQk^|3GTrq^}w}S3|*c>e7QP zKL|(d8o6m8n}$Q79XW@m(1NLwsAO zs59jEq$$V)?a9J zhKW;ueby_b>Vnib)7hO06zQU-+F_;%#<0Z2M+^=)5lu&?m1O-TBbBBe zpge@_Yb6Tr_RvJ2>C#t5%|VBa#6rsUXTI_fQllC(smKU{Ij*20?fCDC%~;9x45S<# zbIfijNw3+Fe3XNEWkj7&i+WNaed@%Np^3wx-+|7a&9@H{S)NM_I6+2|adVbuM=o(^ z0$qSx+jHjij-o)ifor-5+ClC5Uh1lD23P!kV2B}5Hg-<*?@cL3) zdx1XZ=(T?l^}Z?I?mgzNdieL*$X}*ld&+P2URvGu>0ly^A@wKH6X|z@HRXe6W5vZ( zxf!R9IrpX!PR$(v>3?y(ls%-H$aM9Q)}y#!vnw5lNW>YoiH$3%E(RG?j+n~+7;ACj zLG`#X4dF;p?y^T=S7EDm;(JSQBx0{uq$3?){whLD?sC0h_=yTq#zRSfUy**U(W+|m z(BWS0W-?;%XmkWu*|%+Bx`R7&$t3qvrGd(|s3RJ81&M?M$d0=RAjNKAH?na{SN_M< z#^-$A6kc7|>o%RCtl0(sdUR;Zi2EuxF&v)e&hM!F`Q`Fwb&x5%)QU@USfWv+ZSok@ zwxN4k$H2f6{{))=M_Zt>dwoN%cdN6eyR>Siv-L{(7CB^2oBuxrzDa7EM9~%$jvwEv z*A3WnI-lt;PnmbajvFV_RRZ=G9YD+P@c8jC}jsrqWtryX<`J z3^%zpjSt-`!23VXRNBtpn89cN>+-gyD#`LCizc$bN!iwkrD`vueRCK$;rMU-FF1X) z=F(5}C>D#jZ|EDRwa~Y>;L&udW#d`BHX;4Mz@;PK#}C>$1>+2)X=^eTVx}LoWpOdw z?MsZ6J1{7s`6em%|Xm5eFSz$2)>TG{+MU*rJ@c#a~qV7E6-<5Uwv}P@;tM_^pZFzsWS|i$z81Ts}w^nj9c+;S=MH!Jv9kUR2JU7oS@0vs74~Kk&EO zq)B6{yK@LqO=t&$@^2d`SBt(mOpi+f%1;tAaB>&57`FxaIS5pwNERPAq6vG|Zc_*9lq3rK%nbp&xS3*0N-Nv3r^-tuqwp*>G`fJUUoc&v@elzxVwR8$BsD*D!fN`# zXVhWJlZ|~SCF1zmMQuHaw_<0(VBZzlUV|Mlu^a9Nrp=`$6U~PJwruv8a_(a6tVv|H zEM`Qi(#@GQc$G_)?K|L(oS39=VcuKF+jNTV@ek8T>4j*^Llh^(+kb{prb`?2yrCs&RurJu^JINnH6E z>{o6XA1S+3#dU4L3OlDVsX4G~E7+k-$h5>=?Cwwz-#s0UQ+&R@xP`rEF5D#aY? z)t75MvX+sG*uT@RZVR%cmtGIOyx{=toI4A$O>~TMi;yk<#pF235if1x`-R~TA7XFG zWWPO3HQ(57U>uy|)6$Uzbs|Zw>qN%4!oI>e#XhxqU~~7G@R8uV^aiB7sr@0*2A_0k ziqU1zbJRAqZxyg#r@YmC(xx+*(wL$QZAPDIuW#E$;z2AsNjF2!4#KcnLCQ!@vG!}WOq#`n^HBll)wCjUHl|Y+Pu-on1e`0 zlM7eK-elO#=RkyAewtF?sUJrzS&`2}&*uy2tTTB#ph>CYmAodnL>Rys@7O?aS)o2T zMXv6kj?g8Jtuvx@qNlu_vv*naBnraMkpJ%~1@{EPG=#U^&d3+5GJD z-EmXz+4mA)rnvXiv6&BC)Ez$`()WUoIfH5#^qW28jfv7~d|k|V8uSjW&0!=5b~!t+ zKSX$=blm?#cMp8G6ucS_fxka<;zC9`9vI-uSmC7L&w-A(-!me}xy?7739c~D9Xp2BbZ(_xO8GVkGW3k zJpbv*gsIRujURfQsk4?xojip%3UB?%Tdx1RW5^LD{R_~fcf|!+X%TEB4HdnTF6^ZY zTT2#Ma$ge8M>BbUByOW1YS-K~htWP`6%D7u3YNT@Pc1 zVNI)h7I(mM|LcL^Y4Cl+{ms@Ju>dMxd5+8P6{mjYz=M1nLlTC!HZNzW-(tx3cz4}t zS4JbXKxCP$xjedh0~sFcU#ZB6+Mja9QXCwpGdTl7*NN!|`T~??L;g7Xcum0`zr&%# zO@sHl2mCwl^t#so%fljCj`*Ww!3>`7tWixI;* z)UDFDmwS_IlV>-O$E287$-$f5!}?hrs(w%6p6Z(FnfMKLl_);ogU+d&QLAUJJwcCw zK?~5*M=?%k;{`t4%)goq=Sn_o`v@$JwmFdVpM)VlBm})-EeyIK1=&PMxo+0kaG^7C+t7%i zs}h#o{x#GV>2B-M=@pF&X!kpxuvD94S6$A2@9IE~8wNg!fRVttzb&SO5L zvQ?cqRh{u>Bs}dSRn&(+gU`LEGfwl1b&8!1SsJ{eDeSR`xG^?5@sIKRTh_gL5&<4X zygeAB=lunFnAiEf3XJY#e|yYH_E;jdIc{$3G@9%3I`1dFb3O(9wz%{@iCga#y3Zr0K8*-GC4lfaAkT z*uay~S~fjJpvpSDkNWb zd2|GOI&_;DScyGOJCDV?#_x1_h+l`&<_fA%wCK6sj*xeL4`=LPZ(%lk!7Fpm^S9_u zTMXzMEBvl!iua6m5iTeg%yH8kzMLM~O3$YJy;vskpz;8DOh~Y~=OsQ-dM7JeN42ip z*fq#T$5B&LXcFu#V&}JhwFX=@nU{q%hMCi&*P`F1=EV7LA|pjB*un0%)JsLDr{!jmhz9c zEkvzp;G}}ZAhMl!njx3aa17f(H#MEKc05Zg``wbB1Ps4ydSB%DM)l|jExv7GvaKx8 z(}ecmiPSapdyE(l(*xpm&2SR>|9;D0dpltZIJiaQ4KMyDiGVM>o>`zZ$i|RF66QcJJB^=d}3pd+OZXeO{1PWc+%#G4yMEIM;Rbej3T<;NQf` zNvtqn^Yl6)(EA=B#oB$Bx*R$F=IK2z*L%I~itoOw)(lv_RaKYn^FAK!TkdN-3S&p= z=?a>Z`@nF%xATI2T5aTu9B?pAe+ugQeM7g)obx)Q?(ntC6lMGJ@4637a4V~TuXY4^rJAxmc1DZmLzl|8 zWd7us|2e2J;Q%ADq)u2a@;*a!=>(=!Up1Q=42#Qv86I5I2cOC~>$bDfb7z?h@YWkL zfA;$9E6wc^+67!R=Di->*>lcyey`*W3AML9G8~!;wdYiz^v#^DKt=ON^@!!x+#}A* zrHB=or+EptmUkM-4P>3gRj@5^vbc5J-YX@$rJCnC8d!C-3^vK>AM5_Oi0eK7>i-u0 zJ2R+yqZ&q8yk5aMTfUTHNhPQPI_5O4{D9}O1d7Cc+IN{S6thpX%My_@KD-|Q@b#0H&k<9) z-z@dLA23#;V>T=)Q`zisZ%>UdApf!s*)1w zb$$-tUkY}5-++hUD>`odTeRe;+1>1td-2|k!G5+N^lp0I^sU2Mf1rO}YAmkr`+Tzn z%-D`*udHv#^2GxDgvyBl;R_*Tu~0F6gE!dRW}W`?I{6N##-n?khACSp?BO3L(-ot< zfo@(87CYIek=ODs{wW?1*gb!lefC{hJQgkGo*ProFCPY;I$UEYC8_=7{O^@zOiGLM zANL&ypX3o2Qg2HkNWD0uRv9BlYZMhtgdk zRC3`1vDEg^1a+5C6mqQN<7`k#l`BLqNLQpX9A}IAiZk9$ZcO@Z)HX71G^vQqv2KcR zQIb}c=?@ZjK#q@7L?bI|ky*7)(jo-VW{IHi8)pFX$h_~|ni9Z}#cv2Pw z8LdgFeMI{63+kV&TQQ=o`8VYW8F)C(j=%%Ur0zeJKK}R$aC>(FVUZ{@6J_CGI@k=D z5w~^t)Jo*INrKLam?3BLf_Eb*QB$Bxz`sg)rJnO(E!m11#2~nk+P?T$>2tAyO zaScYQ$S_r?UP^_y!LPk5{_D1dfmSNG#BG&und1_bh;W+p!blmMa_QtHD#iiXaTe>$ zZrJTWM?7P1doSGe$!+@$hSmu|k@)dlRRbYKDnUtTIp5UXB178S!uC|gdCJN5 zvm6!BZDrtNygH?*ghekioJ|~qt-M_WM68Z|hcE2wPaUbuG#l>-86@*ScpT)6>2O#a z+!T4R5%Z#aGO`L22TELNT&WVdZ*#N`O$054w9I&vZrcB8>#Sqq`ntW(AcMQRyTbs3 zyStUbAcdmE-8r}p?i6<^(n5jarC3{JkOIZ6WzZHW#R|8-=XvhE$$Q^@lJn1A`6g?x z|6X+p18{^ zZUXO?{c5=%ZBQ90yFGvQ!$0iJev7Nw%!Wqi{?9jLKhODxv}qrbzwR_h?+N-$_)Doj zcXM%~ylGY`?p`^lVpP8^;XsQN}=1NFNDNbMvYg<)Cv2oub3s%ZK@hj5rKUD28xsTkni`>~z19&BdLRWZ9F9eAokc zkd;XuP|@|iiJsN?Ox^ak%NFiV?x?FM{I#l`_!{rmM=06Dux=!=HD(b9MU{#jaV_*yx{glnVKqoAzgHLtTJti+p!z&0OdCPffs(s zCY9%PbqupUVHX4PguMtIW zJeW}&NPwjjT-s4&SG%(8;)hgR4S`>&G@;A;60fQ1Y_5lDZN-H3xr1MXKmP&oFq{!I z+w7)$JWoj=6Ok>k%jHe)uk~YWiT?U%atH`V;d}!Al)cL_& z$tF~06}!Rs8MSa;#X5#0%M5NG)UtE}7u!2yu6}LEsN4yPUoQ2}Xg}_nkVWkVDam7TpgE$NXOi4H4M9uw zk!4_GduRnrv`;~P*hQQ*4s#Fve576XktL}#xN>r?^{`B0&31J0!84NDa`6@6VpNA@ z)U6y$3vQG}s|BOsBHgfs${0QWo&ktD9>M^<_>E~9LU`opt+(4w77%8ouO75stRPR* zaV6uwAek>Uuig;(9XbeVsisPl)vqaFBBBceA|4*rF}K#SM6bEGxIcMSwt#v#4RxN6@gHB@49w2;i~BsjTqbU zcIr-ZJa^ZyOobB{VHXz6N^3&o+9c}1*?`tRGq_u@ma+oHa zX=UV_b9f5O2FBieHwI>o?L(+h`jk`gD0v^US<2m24TXy_G6~1Hqq0y| zGZ}O51y3Fxw*f+DUlb*SATUP#fZ`w#{x(E6G~c0to>js49K+=F6Gm*Qs^E?TQq>Q= zA3if|8j4U{NV1MQV@P07?kfLL-Q+q_jtU^>-n~TzN6^ZDg$14(X7!WmsD)RP7)i(qKC1}zaNrXWP9eyDGq0*pIk8~S{E(BEv2#t*R9<-h+n%SE$P zPKii42PEiX^$~3pv&7A9XRU=5y=lpB|+$=QLV$; zXZ%654-6Yg>D#2&5Nch=Z1O!<5ALqKJ4tzPn)!XmgPv`ZS9(xS*X!TTKYoNh7B)|N z0IH%WjN-~iKx71-taM^pRp9nD)*lSqWw^VSiZ|ZOdx;O;v;&0lQDvhu+j>Etucy{EB{F_wk570*^)duMN))H_?ij5Zw3NE;JW+1y^p@UQ z9uJ?yyx9$-7<*?Cq_NB{!+UQMWDe!E0CWO1G(vWFvSq)?GG0|~ob(g^>iiwxC=b>m zK`E}xsb;VkL`nN5v`GjWJ5lts!-ZQBhUt(rg*y9y~$G_MMn`;MTU}|y(Cs=Oj6c@JpGPD%GoDlO(d56E23alwx z#)rn-Mc&~CmiA()=b2q&*^F@BkjZD3&DhL57CaU|S{88j354M!@AG&!Eweu`&I`@g z)E?AQ*E-Il)&8mNs-_s4wy6k5Dm)a8bH1Be3-Vy>DO>mnI+s3|9@@WgCYFdpsm*da z3-IARWg8vl@Ft^V?x*7t6$`rV!0mIToKDKu*%EMuPWng`)VOxy54Dye=` z-BNc^Y$ji2o?&rsYW+rK_&b4wW>t{dbT$YjdK2~NU%9=;iPYX{GU|h8&ihc_|F{us3i|R)Mu7tVg=b76QuWdR|q%UZTJ2uf>8XtFG4TkpNr4utVLz}Lbiuk`$bk<|6imN^ zbXN(R?uZakvuk7%XK3F6OHhz7Cf7)nmkg?3G$x(}*!5nk+-^|0WXEkTu7%u|hujaR72l#rux2?04h$CZnIQE!n zPHls|eL@*+pHfXa>JJhZ8Ug0a$4M}xeN>0wirN2|8o*z+!XX0!ID5cWX?lu+gVCIp zWBye|8x8iJ0jOQz+dJZ-%y16c_c#_sR@gq<+DJ|g5Wi5(voz6bLd53FSvwKY-YD4L ziR7_u5ETZ#+EGZkeBg!ajr5HtqQC7sBWg%H?c&r$n-6kDeZ>?e{>r8+VCwMbNweka zu&;Bj`FsPl@6Lcvm&IS_Ytt5K1p2EZ7AAU#KO`(Jnh-WL(#h1bm|8!v$kHJjPqCZT zuvLVT;a!JYr>}nVs}Fej#SUy$6hW5BN@WU9*LO~G%;Kk(qaHkdqj)JZfFeS%=g?ta znIUHTtVE|H&NPMKRfFOb`({JKf!N!DqNk~gRkw=dvu9_3^Y`WMpbp%bl3A>u;k!G! zvy;?decPV|U>GQEbSoMe^f>1|i|3J)HlwrL-Qgbg8QQ&W-7X?77w}r79`(d@5~T?A z>3YZY%5Jl!05l>Iv1g4c0)_C9!qaKXut&ycDeSvPt}#+X=A9sEjFicvMPO6=pUZJ) zt|DA=9M1v$*F4UAp*m`GFNI%^tK`pal!sP^^7gEro*2!F@pFH!yspH!pb=e*=D5XE z$0?N-*zG;Y8GI!3IHgFPlLXyi8>q&lZlB8wCB{}_ z6i=RAvEihpcTRc0$3^ffg65;WxBER7#4pCuA}R3k_^3@@oB1QrdY2q$KoqWWZQZSK z#aB{s95ctX<~lI4GIXrWBmuaRHq9=gju>JggZh@A4)kSfDR#SYlBFQifjZbt`=wOY z_j%w*R7ojSef1#<1#QP^fUcmODW8>N0bs&0k~vToZN5h0Tmx2Z0}cO89vrF4k2^SAAe$BlTsTA9*Ss2=JH{xbJ{QDeZK70 zOd5S)6g>P?T4VOQ`tgmWs3@y3+Kf6rlo27LO^b;SzLE;QTI&>dP@pa^dKl7thYkoa z{5@mUaYqE*(?aZPH1_~>eBBB-SXn&p3CjI^yH6b&PrQ#8={;8fL1O_*Y)iAdl8jVE zbB(*AS?8~!Ad}QCdN#rA{MALcr!Y|+Zz!_Vz;U==SLliM*@Pmwx5eCIr?cP=$xkZ& z4ocBy*UO#6V0r=BW z`#sx^wiIM=<3l-HDA6CT-C+T1!CCl<%${b5b(3{3#0(ZqlAA|o_o$Ub4jc~lCsOn0 zY_Djz=LB%OFbT0hn&^E96xR)@{4JAdy_^Ntd^tX!4mXFYyHvy+>xue`!74bWTu(m7 zjFI%El@?I-0w|PIg)h~)`5`O-zVNWh+5IPzs<;l_QVc2$++1R2 z_ExBt;N(`2V?>xS{7N7jNZX`}nGE8GL>+Ws{-4Wu!olgzXN%2ypI$g+d z=^v}7#X-}%EVI}$iZ`RT)l$AK4QM~>@c#+H>7Y*k%y*xzAG7H6(-h(eyt)ZZsOWwO z+nT#oUj6=d3L^~efP;+jJ&81ibtkQZEY7i9u^lH}m?zM+k$)$kjaV@4MIvsjMZ`vp zCg(ao@9t76;?qPP5X5~@zwYp$9Mm=3}@VSfM_he|k zCcKW+8HJi%_$enTg0j>8dEvK;$xpQ=Hn|ubGwyAj>T?)!SynQc@f6RbNkyA+DHTYg zHgznh65yYiSyzHm0lDZL!!E;*F59Tx@HC%O&B7xiG!JYD2rVg^cJ|cXqD~!FRLQTP z{1cDr*Z{(+Kx2ivV;lymp`HKrpo6(X_%XWE+>5_*p5jwMWGTOS8&ogJHGZd8?zSUU zrh{PW#bmhw3`XaLRa8)blDmEN5nfQNLV69$P8NKs!`{mdn6$xOrO+WP#icGiD$dTH zlA17Mi{}Y>wINz6W{1UjB*eR_pRv)oPj@<7(ehn8mYat8*!Ex`Elg7N65ljf6Ge+s z#cE!@!uF^(%OUMxv7C9xDl~2ApQ=>>2<~7dbG+KeEjo!4IueZq%ZwoG%#WL~KBy1Kf!_Q#t4;b+{?kQUQS2%4TleY!t6 zxLo`#ERIFWBohn7bSn3df1+g?*|Kh$xNyeZvm$T^ z92Qe&0;JZ`twjl@tuoR+uE)enSIA&hkPTm1!pxK|4kW?^lz2U(eu9zxHHZ)MXBi@Sx6N4@(z;5F0SXl?-8pG;Cg zZwDkB`f%>sIvf_vcO)(4;U+3aJ3I7x`ftN8nbIP38nQ+W6U~&D(YCSB8K(Aem~G;& z1F)Kjt`wlC+vw=T%!w{8WWz78dYOu=*)2ho9_eZev+R~AE%*wU$Hj!<_{_LbF#*8s zR)ZV_e>e<_P+=KE(f*h7^b4#m<-Zbqyt7c7yBIMpGr_W3m4 zmzRE@@MP&FG+V`uTE(lM%rMBP>1*>`E)>>#)HK*NpE8_$>qBS?Lc;Jz3g}b=;D+cY z-(|SaqP*+`)OU;NM?W4~sY4lT(*Q3jex*z|iGBnf)6jB)tz)7YJ<+53>5D2(ISw zRbb0R3#*{px_lCtDc=DYgQ;?33&C)yN%9J9LwvJ^QYuvBzGtfq#Q{s1pNetjdR5Z| z>~BsA+8fcFgK?EawaU&>ZQy7ugfvQjj0N*?WE-s#81)(T2v00mF#a$t(T1Wa5d>?V zSz}K{TBbII&Ql*qOM+izZDwvVF~YBf&v~>rnOfT}{m)(V9w_FNG;CN~J1Er<&Z0T2 z-D+_raUCR|FwQ@x**UREuPCMsEvquM{F5(D>{1Qab=s)zA{@dz53| z#@D&u*@gy7!k4Qo8ehrG;fNe+cl&dAgrjx|j5T*{FHUv8W$3a_eHLm&7FJSYf{DdMvtOtJPa_GBsaDf{ zG?(GR+ax};+~hsucb9XG z)3KVQzdAz|AtCgaC}gb};SV;wO_I@+&w6M3RoGHYxCVTnbB@y=`v3{fY~;9oHTNnk z*V^xC6`y`?={OIUUI!!ZUHl|&s=C2NVw&|papU`BDW(nLl%1R)MLG)1kpe(tl;Jh( zI7g~FV?-_+!J?U^f36j+QmuDY+dRy{Tp}k&c@}Jr{C1Wxr1ZYkye&N3DYZ*OF z?uvNUnCj7K+Nq4PBH`gL8U}>#=GkU=Els&WS2JB00d;Bir(Pc@H@2|L5`XWVNZ-1> z772Nb(BEiF2=1F5>h=IeI~M}BuEl|un5PkCOSOvDA*QaikV*!iwi(EO_M8~ca#IvoK%fo7qRw{gTa zi^nzH6#RACbp_g!#c6=6gAvap`Db>2^QP)Ae#{Y8qMe*|>PDQOR%8TR?QhAP<|n^m z@w$rmCrge_X1{tx#>+eUsmO#g*gQ7y*MXfmOYrVVR?MoBD{jClhGqJPMkcTL?*M`r3WX7c}>6+1jq$uquOsSRUX&a#Qw=$v(>*;Sn~ zSW=gsyqI;ydo1x6W1l|;(m&!^l{NU6#89ui-lCgCOk(V3ye4rS>*s|gykf6ItMe@I z%qS};%kV7pjFR3VC|1x@u<`*cyew`zejXfbe%K7>gC@WacDGoMZ4iTP`if;rX*m|9 zZ)MH}CkIj5^UCv{6B5WmedwU{`zJ!Jtea7Sm@f#2E-9}A7Xn7hN>TN<`=W#6e6hci zFjG8RBv~Mt=5^R8@^^hUeI(RcwWxR$6i5)rdH*Q+47A}v(-c_}zA3B<=ySK4nIFF~ zTdrq6ygT(g0-FXupc+q1kN$s33i;oXLWD*BQ&1d;SoXtH0kF2BrkSxuwut#4DMa{h zpwU0b$NwfyN@Sy3Nd0$+iUl{N$UpE&K{ZbgKNSbx=RPi8ex5!|5V7`H3tUtzF(IM9 z0%AhhnU-`UqW_N;L@0aEl9gWUpAe&espv6@ivL^A#mCo=Nkl?8o5_qFI4RilToor8 z-@Gwf`w(A4MRakkT$x<1kd3E0>poG87fOYrm}#zF|C~CD4sv%C$fi2_`d(;c_Cw^Y z>i%wij-2{NCJCw&4#WvNQAZfff;yfKFCPzsX^C1HgX`V10+bi35oiUD(bxph^8m9# zBD@7BHZK{QhF4dN6wH8qLI>;|>W^l*)C`$(Uxwnsez%V6v(t;n2*tFKR$HX(TfS zo2c#L+U;W-QzNpSj*syiCDLhe+nelMU|^JX{V$bqgNi5#l3`asOG-%ZDazO0Kxx^H z)+PV_m#tl0C4qk|ng_x9OKzV}8=YVM*tZ1SQbtX!nx!RzvJCL> zX*}e*9F_vT^^_}oZV}fE)6>P<#}BVRwKOix2I9BN?=$Yoi)`;D+>M+1uYSK7j&Sky z4GdXYZ{2`mZ%cjwZp5IU2Dwo7f~ni7M0vZypyk30!Q&>MBpPLRHWD~44)f9WFJUWh z-IGmA0dw*bdfR>Xes?Wt?0&j=+|m%7Pl<_)x^|b%clWd0{^vy?XNfN(*Dv6L#^0zr zh=}Ej(hzS?ch&1^EdkYg_gO#Eiz75_PofN*dg8*E4KY%H+#>r=?2nT8!-o06;>XUz z^FA)^RlU3)AE_k8TDFuqW^Lun)owW26ISm;R>T%uO}buKwRGZ2lY50wE%Psw`YxG7 z1$T^9%^Nayjh!g>hqMJ-d-fa-+>VPIN4*q=+R;oHCWFG;tgwGahhM+fo_l_laB1z) z7{YUTjM6g=C|6D^iQFU^dH~ai2 zlC452tJgKz=gs99T7q~pqIGV>-aAu$-rcyxA4pPn$~t4E?5_Ir;^jviC7n zev_Ve!H#pU`DOI%PMURAGAn0rm=AZ|+Pkx%kNEGf0q$g_T4l1zlchJL@Jgb7HnCRf zIIqY;aXd^tFD@k2;VikCGF9b?WXUtKcqDs6M6(uUa+oCkUDW(b!KK57wjTwxf@gQ* zg~&^chkCTBi`xgr3Se_%KBhMyWJY7H=~X+iJ>)n1$oBP+1KQM>iO`c?T&Me89-tnDW zw9ib+ao)KdU$o5()!p~LI2`Tlz%R~G{jv}V)H&-(7O(lQ*M>{K4F2(kTRhP8Yw6}d>R+TEKCp)cjW7+B4>1ud zvP7$(Ct;Bgvx#U_2gwD3t}Btrrv1lNJ=No*{dK9ho=)x$xG`-S<^R{5|K*4Of%*!I zh)UpK|Hpg9gtND7S^r+~z+^_9O>c(-{M&lXm|((8B1|Gy|8h-#;u|(|Q$Z?iqNUh$4}%UF3IuVyf{S^92bkL4#IWo`J9=DkVMz!M LJG-jB8qR+Kr!=ft delta 24152 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 delta 291 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

+nVqbOAn!Yx9*6nr5p@{2#W#)N2cE2(M}Za=O} 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 diff --git a/Doc/latex/mylibs__defs_8h__incl.pdf b/Doc/latex/mylibs__defs_8h__incl.pdf index 3033b99f9ca01d69f4edd55b2fa9b24e8a7a5587..884406e2677816d4354318b9b55edd145037868f 100644 GIT binary patch delta 494 zcmVf8T4{Fc5zCUvUo`OBmRa{3CV=g(exLbQ_+N(uYxks;G`= zVi{R3%YQ$~mW{)PUQXZL>F&PogaLUG#K^-LkSy{-2*b$3DTHb05d=|`c?4n;Krk#! zz;X$}?ox9Ia$54n1AyRB92)oy1P~PP(m`w4RvNH(dppUvt178GfA_Y1)gAO*RPQ~a zRm*fv74Pya^sA+ZT#8ED#}~vWF=PqgIPoV2#)tm!Q2i)iXCt;^JFQj9&XU{@lLZvPwXU0+An4Fi(fTM@<4aY}=e??mQ_I$dY7Vo_4M8Nv z2xmBnQ5=0m;TMGF*KOJ@fzM9SLEf>qAN(NbO8zk|B6A2aUt1U^;|^7tTlJGM{$9zp z{zt+NohZ0dv}$Twi(Llz0SsS!xUEgphJOggi~H3?$bvVrRg5v&~d20iMnHB>(^b delta 494 zcmVe@%qS6Ruu3!m07TF7(7;b1fS`nz4qB_WHh_cs`$@(_T`SYMf4A+c>7dWD{@o)+ zx7-v=i!RSW-&%Gkl&p<=d_h8zK%N3l(r{v6oO++L`r@VFrc3ECoGe^;?|Ojc(izV7 zO>rYtJz!gizL!tK&6+TKcfOwFYqQ^TRsWLJK0Ag-b3V;okR8v(t+wE%{9y^Oh@bgu zd$x@`KZ49r<4g?Hf15A2-1PH*I*D`O`xvPy0QdR-N!V#2O66JY*>ezBIeo?G*-}Bh zH2#G`t3%6$h8bs4E5ISnLIks;F_-2piaNB?>~fU636-wq^Ilagm}6_hjDXqZjv$g? zgma8zLg`0DKOi)}ZPRTDy!VO@@{YZI5eLau>W^&^*+YokUqYIWJ5(Ft)KACwN3Gh+ zKN5E6M8TbAb#rmG_;rAv!15)A+uBBL#GB-zd|XY0EJdSQ%|!#rSaZ6Wjr}g&8o5n& kYZ>1X+xN3(hMiR9N4CFYGV!f!6J`GbYbN0Ov&~d20qFAjt^fc4 diff --git a/Doc/latex/mylibs__defs_8h_source.tex b/Doc/latex/mylibs__defs_8h_source.tex index bbd4b3a..01eb3ff 100644 --- a/Doc/latex/mylibs__defs_8h_source.tex +++ b/Doc/latex/mylibs__defs_8h_source.tex @@ -7,7 +7,7 @@ \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ mylibs\_defs.h}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголочный\ файл\ для\ дефайнов\ библиотеки\ MyLibsGeneral.}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00005}00005\ \textcolor{comment}{**************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00006}00006\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_DEFINES\ \ General\ Defines}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00006}00006\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_DEFINES\ \ General\ Tools}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ MYLIBS\_ALL}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ Общие\ макросы\ и\ typedef'ы,\ используемые\ по\ всему\ проекту}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00009}00009\ \textcolor{comment}{*}} @@ -59,135 +59,132 @@ \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00055}00055\ \ \ } \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00056}00056\ } \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00057}00057\ \textcolor{comment}{/***************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00058}00058\ \textcolor{comment}{********************************ACCESS\_DEFINES*****************************/}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00059}00059\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00060}00060\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00061}00061\ \textcolor{comment}{/***************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00062}00062\ \textcolor{comment}{******************************DELAYS\_DEFINES*******************************/}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00063}00063\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ @addtogroup\ DELAYS\_DEFINES\ \ \ \ Delays\ defines}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00065}00065\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Макросы\ и\ определения\ для\ работы\ с\ задержками\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00067}00067\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ Этот\ блок\ содержит\ макросы\ для\ реализации\ задержек\ с\ использованием\ HAL\ или\ FreeRTOS:}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelay\ \ \ \ \ \ \ \ \ \ \ \ \ —\ простая\ задержка\ заданной\ длительности;}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00070}00070\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayStart\ \ \ \ \ \ \ \ —\ сохранение\ текущего\ времени\ начала\ задержки;}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWhileActive\ \ —\ проверка,\ активна\ ли\ задержка;}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00072}00072\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWaitDone\ \ \ \ \ —\ проверка,\ завершена\ ли\ задержка.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00073}00073\ \textcolor{comment}{\ \ *\ Эти\ макросы\ удобны\ для\ реализации\ неблокирующих\ задержек.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00075}00075\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00076}00076\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00077}00077\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00078}00078\ \textcolor{comment}{\ \ *\ @def\ msDelay(\_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ @brief\ Задержка\ на\ указанное\ количество\ миллисекунд.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00080}00080\ \textcolor{comment}{\ \ *\ @param\ \_ms\_\ Время\ задержки\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00081}00081\ \textcolor{comment}{\ \ *\ @note\ Использует\ HAL\_Delay\ или\ osDelay\ в\ зависимости\ от\ @ref\ FREERTOS\_DELAY.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00082}00082\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00083}00083\ \textcolor{preprocessor}{\#ifdef\ FREERTOS\_DELAY}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00084}00084\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ osDelay(\_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00085}00085\ \textcolor{preprocessor}{\#else}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00086}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}{00086}}\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ HAL\_Delay(\_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00087}00087\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00088}00088\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00089}00089\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00090}00090\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00091}00091\ \textcolor{comment}{\ \ *\ @brief\ Начать\ отсчет\ задержки.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ @param\ \_pvar\_\ Указатель\ на\ переменную\ типа\ uint32\_t\ для\ хранения\ времени\ старта.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00093}00093\ \textcolor{comment}{\ \ *\ @details\ После\ вызова\ этого\ макроса\ переменная\ \_pvar\_\ содержит\ текущее\ количество\ миллисекунд}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ с\ момента\ запуска\ системы\ (HAL\_GetTick).\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00095}00095\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00096}00096\ \textcolor{comment}{\ \ *\ Используется\ для\ реализации\ неблокирующих\ задержек.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00097}00097\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00098}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}{00098}}\ \textcolor{preprocessor}{\#define\ msDelayStart(\_pvar\_)\ \ \ \ \ \ \ \ \ \ \ \ *(\_pvar\_)\ =\ HAL\_GetTick()}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00099}00099\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00100}00100\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00101}00101\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ активна\ ли\ задержка.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00102}00102\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00103}00103\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (@ref\ msDelayStart).}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00104}00104\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ еще\ активна.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00105}00105\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ завершена.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00106}00106\ \textcolor{comment}{\ *\ @details}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00107}00107\ \textcolor{comment}{\ *\ Возвращает\ true,\ пока\ время\ задержки\ не\ истекло.\ Используется\ в\ проверках,}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00108}00108\ \textcolor{comment}{\ *\ когда\ нужно\ **действовать,\ пока\ задержка\ выполняется**.\ Пример:}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00109}00109\ \textcolor{comment}{\ *\ @code}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00110}00110\ \textcolor{comment}{\ *\ while(msDelayWhileActive(1000,\ \&tick))\ \{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00111}00111\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ другие\ задачи,\ задержка\ не\ блокирует\ поток}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00112}00112\ \textcolor{comment}{\ *\ \}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00113}00113\ \textcolor{comment}{\ *\ @endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00114}00114\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00115}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}{00115}}\ \textcolor{preprocessor}{\#define\ msDelayWhileActive(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ <\ \_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00116}00116\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00117}00117\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00118}00118\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ завершилась\ ли\ задержка.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00119}00119\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00120}00120\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (msDelayStart).}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00121}00121\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ завершена.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00122}00122\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ еще\ активна.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00123}00123\ \textcolor{comment}{\ *\ @details}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00124}00124\ \textcolor{comment}{\ *\ Возвращает\ true,\ когда\ задержка\ уже\ завершена.\ Используется\ в\ проверках,}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00125}00125\ \textcolor{comment}{\ *\ когда\ нужно\ **выполнить\ действие\ только\ после\ окончания\ задержки**.\ Пример:}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00126}00126\ \textcolor{comment}{\ *\ @code}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00127}00127\ \textcolor{comment}{\ *\ if(msDelayWaitDone(1000,\ \&tick))\ \{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00128}00128\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ действие\ после\ завершения\ задержки}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00129}00129\ \textcolor{comment}{\ *\ \}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00130}00130\ \textcolor{comment}{\ *\ @endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00131}00131\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00132}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}{00132}}\ \textcolor{preprocessor}{\#define\ msDelayWaitDone(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ >=\ \_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00133}00133\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00134}00134\ \textcolor{comment}{/**\ DELAYS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00135}00135\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00136}00136\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00137}00137\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00138}00138\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00139}00139\ \textcolor{comment}{/***************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{*******************************MATH\_DEFINES********************************/}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}00147\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}00151\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00154}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}00155\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}00162\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00165}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}00166\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00173}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}00174\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00181}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}00182\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \textcolor{comment}{/**\ UTILS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00185}00185\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00186}00186\ \ \ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00187}00187\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_DEFINES\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00058}00058\ \textcolor{comment}{******************************DELAYS\_DEFINES*******************************/}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00059}00059\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @addtogroup\ DELAYS\_DEFINES\ \ \ \ Delays\ defines}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00062}00062\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Макросы\ и\ определения\ для\ работы\ с\ задержками\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00063}00063\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ Этот\ блок\ содержит\ макросы\ для\ реализации\ задержек\ с\ использованием\ HAL\ или\ FreeRTOS:}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00065}00065\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelay\ \ \ \ \ \ \ \ \ \ \ \ \ —\ простая\ задержка\ заданной\ длительности;}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayStart\ \ \ \ \ \ \ \ —\ сохранение\ текущего\ времени\ начала\ задержки;}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00067}00067\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWhileActive\ \ —\ проверка,\ активна\ ли\ задержка;}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWaitDone\ \ \ \ \ —\ проверка,\ завершена\ ли\ задержка.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ Эти\ макросы\ удобны\ для\ реализации\ неблокирующих\ задержек.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00070}00070\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00071}00071\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00072}00072\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00073}00073\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @def\ msDelay(\_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00075}00075\ \textcolor{comment}{\ \ *\ @brief\ Задержка\ на\ указанное\ количество\ миллисекунд.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @param\ \_ms\_\ Время\ задержки\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @note\ Использует\ HAL\_Delay\ или\ osDelay\ в\ зависимости\ от\ @ref\ FREERTOS\_DELAY.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00079}00079\ \textcolor{preprocessor}{\#ifdef\ FREERTOS\_DELAY}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00080}00080\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ osDelay(\_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00081}00081\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00082}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}{00082}}\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ HAL\_Delay(\_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00083}00083\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00084}00084\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00085}00085\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00086}00086\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00087}00087\ \textcolor{comment}{\ \ *\ @brief\ Начать\ отсчет\ задержки.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00088}00088\ \textcolor{comment}{\ \ *\ @param\ \_pvar\_\ Указатель\ на\ переменную\ типа\ uint32\_t\ для\ хранения\ времени\ старта.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00089}00089\ \textcolor{comment}{\ \ *\ @details\ После\ вызова\ этого\ макроса\ переменная\ \_pvar\_\ содержит\ текущее\ количество\ миллисекунд}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ с\ момента\ запуска\ системы\ (HAL\_GetTick).\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00091}00091\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ Используется\ для\ реализации\ неблокирующих\ задержек.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00093}00093\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00094}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}{00094}}\ \textcolor{preprocessor}{\#define\ msDelayStart(\_pvar\_)\ \ \ \ \ \ \ \ \ \ \ \ *(\_pvar\_)\ =\ HAL\_GetTick()}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00095}00095\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00096}00096\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00097}00097\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ активна\ ли\ задержка.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00098}00098\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00099}00099\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (@ref\ msDelayStart).}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00100}00100\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ еще\ активна.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00101}00101\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ завершена.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00102}00102\ \textcolor{comment}{\ *\ @details}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00103}00103\ \textcolor{comment}{\ *\ Возвращает\ true,\ пока\ время\ задержки\ не\ истекло.\ Используется\ в\ проверках,}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00104}00104\ \textcolor{comment}{\ *\ когда\ нужно\ **действовать,\ пока\ задержка\ выполняется**.\ Пример:}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00105}00105\ \textcolor{comment}{\ *\ @code}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00106}00106\ \textcolor{comment}{\ *\ while(msDelayWhileActive(1000,\ \&tick))\ \{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00107}00107\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ другие\ задачи,\ задержка\ не\ блокирует\ поток}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00108}00108\ \textcolor{comment}{\ *\ \}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00109}00109\ \textcolor{comment}{\ *\ @endcode}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00110}00110\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00111}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}{00111}}\ \textcolor{preprocessor}{\#define\ msDelayWhileActive(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ <\ \_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00112}00112\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00113}00113\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00114}00114\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ завершилась\ ли\ задержка.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00115}00115\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00116}00116\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (msDelayStart).}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00117}00117\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ завершена.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00118}00118\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ еще\ активна.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00119}00119\ \textcolor{comment}{\ *\ @details}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00120}00120\ \textcolor{comment}{\ *\ Возвращает\ true,\ когда\ задержка\ уже\ завершена.\ Используется\ в\ проверках,}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00121}00121\ \textcolor{comment}{\ *\ когда\ нужно\ **выполнить\ действие\ только\ после\ окончания\ задержки**.\ Пример:}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00122}00122\ \textcolor{comment}{\ *\ @code}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00123}00123\ \textcolor{comment}{\ *\ if(msDelayWaitDone(1000,\ \&tick))\ \{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00124}00124\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ действие\ после\ завершения\ задержки}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00125}00125\ \textcolor{comment}{\ *\ \}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00126}00126\ \textcolor{comment}{\ *\ @endcode}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00127}00127\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00128}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}{00128}}\ \textcolor{preprocessor}{\#define\ msDelayWaitDone(\_ms\_,\ \_pvar\_)\ \ \ \ (HAL\_GetTick()\ -\/\ *(\_pvar\_)\ >=\ \_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00129}00129\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00130}00130\ \textcolor{comment}{/**\ DELAYS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00131}00131\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00132}00132\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00133}00133\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00134}00134\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00135}00135\ \textcolor{comment}{/***************************************************************************}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00136}00136\ \textcolor{comment}{*******************************UTIL\_DEFINES********************************/}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00137}00137\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00138}00138\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00139}00139\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}00147\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00151}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}00154\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}00155\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00162}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}00165\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}00166\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00170}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}00173\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}00174\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00178}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{/**\ UTILS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}00181\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}00182\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \ \ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_DEFINES\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/mylibs__include_8h.tex b/Doc/latex/mylibs__include_8h.tex index 7dc274b..7e1d759 100644 --- a/Doc/latex/mylibs__include_8h.tex +++ b/Doc/latex/mylibs__include_8h.tex @@ -6,14 +6,15 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline +{\ttfamily \#include "{}math.\+h"{}}\newline {\ttfamily \#include "{}bit\+\_\+access.\+h"{}}\newline {\ttfamily \#include "{}trackers.\+h"{}}\newline {\ttfamily \#include "{}trace.\+h"{}}\newline +{\ttfamily \#include "{}evolve\+\_\+optimizer.\+h"{}}\newline {\ttfamily \#include "{}general\+\_\+flash.\+h"{}}\newline {\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline {\ttfamily \#include "{}general\+\_\+tim.\+h"{}}\newline -Include dependency graph for mylibs\+\_\+include.\+h\+: -\nopagebreak +Include dependency graph for mylibs\+\_\+include.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/mylibs__include_8h__incl.md5 b/Doc/latex/mylibs__include_8h__incl.md5 index bae04a1..4d9f480 100644 --- a/Doc/latex/mylibs__include_8h__incl.md5 +++ b/Doc/latex/mylibs__include_8h__incl.md5 @@ -1 +1 @@ -12974059edd310824ecd8821917889e9 \ No newline at end of file +e8a6536a4a1a8e7b4caa7211e99459a4 \ No newline at end of file diff --git a/Doc/latex/mylibs__include_8h__incl.pdf b/Doc/latex/mylibs__include_8h__incl.pdf index a601a4495b65ad50e9f247c6ba7124428c73a69c..4da492e7a9bef240f4a39bd8e9fb5df72dfcfc26 100644 GIT binary patch delta 25301 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 b-omO&qIsvdSdyXgaSCvu(9+7P%c1-aM8MG2 delta 23801 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 aj2BR%{S+~KdR&l@2pETzRY6k`=f41;VddNa diff --git a/Doc/latex/mylibs__include_8h_source.tex b/Doc/latex/mylibs__include_8h_source.tex index 13262ce..031799d 100644 --- a/Doc/latex/mylibs__include_8h_source.tex +++ b/Doc/latex/mylibs__include_8h_source.tex @@ -34,157 +34,98 @@ \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00030}00030\ } \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00031}00031\ \textcolor{preprocessor}{\#ifdef\ ARM\_MATH\_CM4}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00032}00032\ \textcolor{preprocessor}{\ \ \#include\ "{}arm\_math.h"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00033}00033\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00034}00034\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00035}00035\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00036}00036\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BIT\_ACCESS\_LIB}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00037}00037\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bit__access_8h}{bit\_access.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00038}00038\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00039}00039\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00040}00040\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACKERS\_LIB}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00041}00041\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trackers_8h}{trackers.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00042}00042\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00043}00043\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00044}00044\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACE\_LIB}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00045}00045\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trace_8h}{trace.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00046}00046\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00047}00047\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00048}00048\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00049}00049\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00050}00050\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00051}00051\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00052}00052\ \textcolor{preprocessor}{\#include\ "{}general\_flash.h"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00053}00053\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00054}00054\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00055}00055\ \textcolor{preprocessor}{\#include\ "{}general\_spi.h"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00056}00056\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00057}00057\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00058}00058\ \textcolor{preprocessor}{\#include\ "{}general\_uart.h"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00059}00059\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00060}00060\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00061}00061\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00062}00062\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00063}00063\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00064}00064\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00065}00065\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00033}00033\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00034}00034\ \textcolor{preprocessor}{\ \ \#include\ "{}math.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00035}00035\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00036}00036\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00037}00037\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00038}00038\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BIT\_ACCESS\_LIB}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00039}00039\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bit__access_8h}{bit\_access.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00040}00040\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00041}00041\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00042}00042\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACKERS\_LIB}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00043}00043\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trackers_8h}{trackers.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00044}00044\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00045}00045\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00046}00046\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00047}00047\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00048}00048\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00049}00049\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00050}00050\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00051}00051\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00052}00052\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00053}00053\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00054}00054\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00055}00055\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00056}00056\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00057}00057\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00058}00058\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00059}00059\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00060}00060\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00061}00061\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00062}00062\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00063}00063\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00064}00064\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00065}00065\ \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00066}00066\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00067}00067\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00068}00068\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00069}00069\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00070}00070\ \textcolor{comment}{//\ user\ includes}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00071}00071\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00072}00072\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00073}00073\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00074}00074\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00075}00075\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00076}00076\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00077}00077\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00078}00078\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00079}00079\ \textcolor{comment}{@mainpage}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00080}00080\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00081}00081\ \textcolor{comment}{@section\ overview\ Обзор}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \textcolor{comment}{MyLibs\ -\/\ это\ набор\ библиотек\ для\ удобной\ работы\ с\ периферией\ микроконтроллеров\ STM32.}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00084}00084\ \textcolor{comment}{@subsection\ features\ Основные\ возможности}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00085}00085\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00086}00086\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ @ref\ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00087}00087\ \textcolor{comment}{-\/\ Битовый\ доступ\ к\ регистрам\ через\ union}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00088}00088\ \textcolor{comment}{-\/\ Трекеры\ для\ статистики\ и\ отладки}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00089}00089\ \textcolor{comment}{-\/\ Макросы\ для\ задержек\ и\ утилит}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00090}00090\ \textcolor{comment}{-\/\ Поддержка\ FreeRTOS}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00091}00091\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \textcolor{comment}{@subsubsection\ trace\_module\ Трассировка\ @ref\ TRACE}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{comment}{-\/\ Serial\ трассировка\ через\ SWO\ и\ RTT}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00095}00095\ \textcolor{comment}{-\/\ GPIO\ трассировка\ для\ отладки}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00096}00096\ \textcolor{comment}{-\/\ Сохранение\ логов\ в\ Flash\ память}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00097}00097\ \textcolor{comment}{-\/\ Обработка\ HardFault\ с\ сохранением\ контекста}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00098}00098\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ \textcolor{comment}{@subsubsection\ gpio\_module\ Модуль\ GPIO\ @ref\ MY\_LIBS\_GPIO}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00100}00100\ \textcolor{comment}{-\/\ Управление\ светодиодами\ (включение/выключение,\ моргание,\ плавное\ затухание)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{comment}{-\/\ Работа\ с\ кнопками\ (чтение\ состояния,\ фильтрация\ дребезга)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{comment}{-\/\ Инициализация\ портов\ и\ тактирования}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{comment}{-\/\ Поддержка\ альтернативных\ функций}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{comment}{@subsubsection\ tim\_module\ Модуль\ таймеров\ @ref\ MY\_LIBS\_TIM}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{comment}{-\/\ Базовая\ инициализация\ таймеров}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{comment}{-\/\ Режимы\ прерываний}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{comment}{-\/\ Формирование\ задержек\ (блокирующие\ и\ неблокирующие)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{comment}{-\/\ Работа\ с\ энкодерами\ (чтение\ положения,\ обработка\ кнопок)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{comment}{-\/\ Настройка\ ШИМ\ и\ Output\ Compare}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ \textcolor{comment}{@subsection\ structure\ Структура\ проекта}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00116}00116\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{comment}{├──\ inc/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Заголовочные\ файлы}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_include.h\ \ \ \ \ \#\ Главный\ include\ файл}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ \textcolor{comment}{│\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{comment}{│\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{comment}{│\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ \textcolor{comment}{│\ \ \ ├──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ \textcolor{comment}{│\ \ \ ├──\ general\_gpio.h\ \ \ \ \ \ \ \#\ Работа\ с\ GPIO}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{comment}{│\ \ \ └──\ general\_tim.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ таймерами}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00126}00126\ \textcolor{comment}{└──\ src/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Исходные\ файлы}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00127}00127\ \textcolor{comment}{\ \ \ \ ├──\ general\_gpio.c\ \ \ \ \ \ \ \#\ Реализация\ GPIO}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00128}00128\ \textcolor{comment}{\ \ \ \ └──\ general\_tim.c\ \ \ \ \ \ \ \ \#\ Реализация\ TIM}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00129}00129\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00130}00130\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00131}00131\ \textcolor{comment}{@subsection\ usage\_basic\ Использование}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00132}00132\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00133}00133\ \textcolor{comment}{Инструкция\ по\ подключению:}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00134}00134\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00135}00135\ \textcolor{comment}{1.\ Настройте\ конфигурацию\ @ref\ MYLIBS\_CONFIG\ в\ @ref\ mylibs\_config.h\ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00136}00136\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00137}00137\ \textcolor{comment}{2.\ Подключите\ главный\ заголовочный\ файл:}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00138}00138\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00139}00139\ \textcolor{comment}{\#include\ "{}mylibs\_include.h"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00140}00140\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00141}00141\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00142}00142\ \textcolor{comment}{3.\ Используйте\ нужные\ модули\ в\ своем\ коде}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00143}00143\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00144}00144\ \textcolor{comment}{@subsubsection\ gpio\_example\ Пример\ работы\ с\ GPIO}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00145}00145\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00146}00146\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00147}00147\ \textcolor{comment}{//\ Инициализация\ светодиода}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00148}00148\ \textcolor{comment}{MX\_GPIO\_Init();}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00149}00149\ \textcolor{comment}{GPIO\_LEDTypeDef\ led;}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00150}00150\ \textcolor{comment}{GPIO\_LED\_Init(\&led,\ GPIOA,\ GPIO\_PIN\_5,\ 1);}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00151}00151\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00152}00152\ \textcolor{comment}{//\ Включение\ светодиода}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00153}00153\ \textcolor{comment}{GPIO\_LED\_On(\&led);}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00154}00154\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00155}00155\ \textcolor{comment}{//\ Запуск\ моргания}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00156}00156\ \textcolor{comment}{GPIO\_LED\_Blink\_Start(\&led,\ 500);\ //\ Период\ 500\ мс}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00157}00157\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00158}00158\ \textcolor{comment}{//\ В\ основном\ цикле}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00159}00159\ \textcolor{comment}{while\ (1)\ \{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00160}00160\ \textcolor{comment}{GPIO\_LED\_Dynamic\_Handle(\&led);}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00161}00161\ \textcolor{comment}{\}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00162}00162\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00163}00163\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00164}00164\ \textcolor{comment}{@subsubsection\ tim\_example\ Пример\ работы\ с\ таймером}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00165}00165\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00166}00166\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00167}00167\ \textcolor{comment}{//\ Настройка\ таймера}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00168}00168\ \textcolor{comment}{TIM\_SettingsTypeDef\ tim\_settings\ =\ \{0\};}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00169}00169\ \textcolor{comment}{tim\_settings.htim.Instance\ =\ TIM2;}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00170}00170\ \textcolor{comment}{tim\_settings.sTimAHBFreqMHz\ =\ SystemCoreClock;}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00171}00171\ \textcolor{comment}{tim\_settings.sTickBaseUS\ =\ TIM\_TickBase\_1MS;}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00172}00172\ \textcolor{comment}{tim\_settings.sTimFreqHz\ =\ 1000;\ //\ 1\ кГц}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00173}00173\ \textcolor{comment}{tim\_settings.sTimMode\ =\ TIM\_IT\_CONF;}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00174}00174\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00175}00175\ \textcolor{comment}{TIM\_Base\_Init(\&tim\_settings);}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00176}00176\ \textcolor{comment}{HAL\_TIM\_Base\_Start(\&tim\_settings.htim);}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00177}00177\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00178}00178\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00179}00179\ \textcolor{comment}{@subsection\ dependencies\ Зависимости}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00180}00180\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00181}00181\ \textcolor{comment}{-\/\ HAL\ библиотека\ STM32}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00182}00182\ \textcolor{comment}{-\/\ SEGGER\ RTT\ (опционально,\ для\ RTT\ трассировки)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00183}00183\ \textcolor{comment}{-\/\ FreeRTOS\ (опционально,\ для\ FreeRTOS\ задержек)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00184}00184\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00067}00067\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACE\_LIB}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00068}00068\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trace_8h}{trace.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00069}00069\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00070}00070\ \textcolor{preprocessor}{\#define\ my\_printf(...)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00071}00071\ \textcolor{preprocessor}{\#define\ log\_printf(TAG,\ fmt,\ ...)\ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00072}00072\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00073}00073\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00074}00074\ \textcolor{preprocessor}{\#define\ RTT\_FlashPrepare(...)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00075}00075\ \textcolor{preprocessor}{\#define\ RTT\_EraseFlash(...)\ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00076}00076\ \textcolor{preprocessor}{\#define\ RTT\_SaveToFlash(...)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00077}00077\ \textcolor{preprocessor}{\#define\ RTT\_ReadFromFlash(...)\ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00078}00078\ \textcolor{preprocessor}{\#define\ HF\_CheckRecovered(...)\ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00079}00079\ \textcolor{preprocessor}{\#define\ HF\_HandleFault(...)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00080}00080\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00081}00081\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_EVOLVE\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{evolve__optimizer_8h}{evolve\_optimizer.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00084}00084\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00085}00085\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00086}00086\ \ \ uint16\_t\ n\_params;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00087}00087\ \ \ uint16\_t\ n\_cand;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00088}00088\ \ \ uint16\_t\ n\_best;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00089}00089\ \ \ uint16\_t\ iq\_mutation;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00090}00090\ \ \ int32\_t\ loss[0];\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00091}00091\ \ \ int32\_t\ candidates[0][0];\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00095}00095\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00096}00096\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00097}00097\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00098}00098\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00100}00100\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{preprocessor}{\#include\ "{}general\_flash.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{preprocessor}{\#include\ "{}general\_spi.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{preprocessor}{\#include\ "{}general\_uart.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00116}00116\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{comment}{//\ user\ includes}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/refman.tex b/Doc/latex/refman.tex index 6fd13d0..31821a5 100644 --- a/Doc/latex/refman.tex +++ b/Doc/latex/refman.tex @@ -243,6 +243,7 @@ \chapter{Topic Documentation} \input{group___m_y_l_i_b_s___a_l_l} \chapter{Class Documentation} +\input{struct_evolve_optimizer__t} \input{struct_g_p_i_o___l_e_d_type_def} \input{struct_g_p_i_o___switch_type_def} \input{struct_h_f___stack_frame__t} @@ -261,6 +262,8 @@ \input{____general__uart_8h_source} \input{bit__access_8h} \input{bit__access_8h_source} +\input{evolve__optimizer_8h} +\input{evolve__optimizer_8h_source} \input{general__gpio_8h} \input{general__gpio_8h_source} \input{general__tim_8h} @@ -275,6 +278,7 @@ \input{trace_8h_source} \input{trackers_8h} \input{trackers_8h_source} +\input{mainpage_8h_source} \input{____general__flash_8c_source} \input{____general__spi_8c_source} \input{____general__uart_8c_source} diff --git a/Doc/latex/struct_evolve_optimizer__t.tex b/Doc/latex/struct_evolve_optimizer__t.tex new file mode 100644 index 0000000..cd7a322 --- /dev/null +++ b/Doc/latex/struct_evolve_optimizer__t.tex @@ -0,0 +1,143 @@ +\doxysection{Evolve\+Optimizer\+\_\+t Struct Reference} +\hypertarget{struct_evolve_optimizer__t}{}\label{struct_evolve_optimizer__t}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}} + + +Структура эволюционного оптимизатора + + + + +{\ttfamily \#include $<$evolve\+\_\+optimizer.\+h$>$} + +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\+\_\+params}} +\begin{DoxyCompactList}\small\item\em Количество параметров \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\+\_\+cand}} +\begin{DoxyCompactList}\small\item\em Количество кандидатов \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\+\_\+best}} +\begin{DoxyCompactList}\small\item\em Количество лучших, усредняемых \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\+\_\+mutation}} +\begin{DoxyCompactList}\small\item\em Амплитуда мутации в Q16.\+16. \end{DoxyCompactList}\item +uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\+\_\+index}} +\begin{DoxyCompactList}\small\item\em Индекс кандидата для обработки \end{DoxyCompactList}\item +int32\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}} \mbox{[}100\mbox{]} +\begin{DoxyCompactList}\small\item\em Loss для каждого кандидата \end{DoxyCompactList}\item +int32\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}} \mbox{[}100\mbox{]}\mbox{[}20\mbox{]} +\begin{DoxyCompactList}\small\item\em Параметры кандидатов \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Структура эволюционного оптимизатора + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00081}{81}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_evolve_optimizer__t_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_params@{n\_params}} +\index{n\_params@{n\_params}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{n\_params}{n\_params}} +{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8} +uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+params} + + + +Количество параметров + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00082}{82}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_cand@{n\_cand}} +\index{n\_cand@{n\_cand}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{n\_cand}{n\_cand}} +{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1} +uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+cand} + + + +Количество кандидатов + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00083}{83}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_best@{n\_best}} +\index{n\_best@{n\_best}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{n\_best}{n\_best}} +{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6} +uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+best} + + + +Количество лучших, усредняемых + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00084}{84}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!iq\_mutation@{iq\_mutation}} +\index{iq\_mutation@{iq\_mutation}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{iq\_mutation}{iq\_mutation}} +{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5} +uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::iq\+\_\+mutation} + + + +Амплитуда мутации в Q16.\+16. + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00085}{85}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!cand\_index@{cand\_index}} +\index{cand\_index@{cand\_index}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{cand\_index}{cand\_index}} +{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae} +uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::cand\+\_\+index} + + + +Индекс кандидата для обработки + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00086}{86}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!loss@{loss}} +\index{loss@{loss}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{loss}{loss}} +{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d} +int32\+\_\+t Evolve\+Optimizer\+\_\+t\+::loss\mbox{[}100\mbox{]}} + + + +Loss для каждого кандидата + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00087}{87}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!candidates@{candidates}} +\index{candidates@{candidates}!EvolveOptimizer\_t@{EvolveOptimizer\_t}} +\doxysubsubsection{\texorpdfstring{candidates}{candidates}} +{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d} +int32\+\_\+t Evolve\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}} + + + +Параметры кандидатов + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00088}{88}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_t_i_m___encoder_type_def.tex b/Doc/latex/struct_t_i_m___encoder_type_def.tex index fba5496..8249b12 100644 --- a/Doc/latex/struct_t_i_m___encoder_type_def.tex +++ b/Doc/latex/struct_t_i_m___encoder_type_def.tex @@ -11,8 +11,7 @@ -Collaboration diagram for TIM\+\_\+\+Encoder\+Type\+Def\+: -\nopagebreak +Collaboration diagram for TIM\+\_\+\+Encoder\+Type\+Def\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf b/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf index 9e3d4a4bdfb5106712cd4a1992ec194fff0cd9ca..516acf7f1b7b16b4df67e8a4ec0fb0b55e1e7a31 100644 GIT binary patch delta 447 zcmV;w0YLtPg#m4rx2m!_s;5hWx@ysNVb?RSV zI%9=$3B*JZ8{PZvV7oPjv0YDvs(CYDM+m-U55q~Duy`kJXL*&kd7bk-&*h(56@Ta4 z43L-Xmw#5*%hKfNVNKfZ2xjK*nhuRP2A;aB9>e$%B!(zsVj#|Zo-@_6@#(^@o@;9) zDh1r<|0m%j7|XchxaZP9pv83+gGWsbaYDHpQo+lvU;-8etpx|{I4jl4n;@`g zC1`uD3+Z!FEtkEA@>fhq=z!+%YP!WbjG!K)a>@kc~HAhevfX?6zQJADVS$KJlM zvZg!!SGS1thc{Zfbu?~NqnO!+)fj&-c-Q`;s6{7&o&;@VYibp*1N;D*FE*U^I_kh) z>VjqWyNQq)le`lJlMs(Jr+X^(t%!Gn0wuvItF-eFL*X p=MR%sK_CG)lXpSb44FV##|8!l00ONHQIlIjAP6`LB_%~qMhZ*J(o6sV delta 446 zcmV;v0YUzRg#m+w0kD=o1lAIajFXx_IDZ%fDXm!R0YLD`%NBk>2naHGw$NU5wF2zj z-cB;^>RKr4K6XEqg+BB8caJF96)L5Y**pV%?P!?_UMq8XgaG3Ra2)#UcxIBwI`ywF zov}i>1Y)9yjqZJSu-zKN*siBSaZwN05rS{o!*J3jEZ()Yv%JcioaZ9X^Y#x{#eX?B z1LP(9<)78{vNSn*Sd+Fpf|>cdrb8o+fv4`O$1r{bi6P3E7>F~U=S=l%e7dl!=h_;H zN&)xz|4BGW#xmhJ?zuD&XmMS|;89aUoKWtDREn}In1n?^xfFnXocIV9XQi6zWYmy%po+obaDNk`FvbXPG~FQ~9})S0&~o0U*%^56^c}<=d;7vl zPIuz3ZV~AZZ?tslXxyk;F|!M+G5%hPuK7n%i%tYRNm{p!sa3oV@B?VR*l^nGr~`Z9 z1ow} o2a{JpAOSX$ctO|<89-UbdIkmn0-_90lUza|2sa8PB}Gq03V?IhSO5S3 diff --git a/Doc/latex/topics.tex b/Doc/latex/topics.tex index 61d5bd7..03634c8 100644 --- a/Doc/latex/topics.tex +++ b/Doc/latex/topics.tex @@ -5,11 +5,13 @@ Here is a list of all topics with brief descriptions\+:\begin{DoxyCompactList} \item \contentsline{section}{Configs}{\pageref{group___m_y_l_i_b_s___c_o_n_f_i_g}}{} \begin{DoxyCompactList} \item \contentsline{section}{Trace configs}{\pageref{group___t_r_a_c_e___c_o_n_f_i_g}}{} +\item \contentsline{section}{Evolve configs}{\pageref{group___e_v_o_l_v_e___c_o_n_f_i_g}}{} \item \contentsline{section}{Libraries configs}{\pageref{group___l_i_b_s___c_o_n_f_i_g}}{} \end{DoxyCompactList} -\item \contentsline{section}{General Defines}{\pageref{group___m_y_l_i_b_s___d_e_f_i_n_e_s}}{} +\item \contentsline{section}{General Tools}{\pageref{group___m_y_l_i_b_s___d_e_f_i_n_e_s}}{} \begin{DoxyCompactList} \item \contentsline{section}{Bit access defines}{\pageref{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}}{} +\item \contentsline{section}{Evolve optimizer}{\pageref{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}}{} \item \contentsline{section}{Error Handler defines}{\pageref{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}}{} \item \contentsline{section}{Delays defines}{\pageref{group___d_e_l_a_y_s___d_e_f_i_n_e_s}}{} \item \contentsline{section}{Utils defines}{\pageref{group___u_t_i_l_s___d_e_f_i_n_e_s}}{} diff --git a/Doc/latex/trace_8h.tex b/Doc/latex/trace_8h.tex index cd956cb..34b2516 100644 --- a/Doc/latex/trace_8h.tex +++ b/Doc/latex/trace_8h.tex @@ -8,16 +8,14 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include "{}SEGGER\+\_\+\+RTT.\+h"{}}\newline -Include dependency graph for trace.\+h\+: -\nopagebreak +Include dependency graph for trace.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=337pt]{trace_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/trace_8h__dep__incl.pdf b/Doc/latex/trace_8h__dep__incl.pdf index 0e6a66b2ad0071a1ff187e19bd9868150fd625c9..ae17096374da46313edce87536e52ab4d05f86d0 100644 GIT binary patch delta 492 zcmVR3jWOY@V@O*}3aRW$Gu zC}7CpwS%_0tt=4q@Gz-(tSW80?S1=ZJLt2je)Whot*{w4va9pZx05+eB2EbFwGVt8 zx)E0CYQXjoeb1kVl?!3^?s6^FTXQ_BN|bFOkLg`{AfNB(VM3 zUR=w5-}T`|@gadYgs-=%^vpk%lc`P{9WPFbIG7UtkQrUHLK>I}u8anbZspDnk%)Tcn%-H!?5TiXaG&i)0#?%)%Xe@`F*IFq1HER%js z8k0Z+1e5AdM18RdfIt+3;kWN%_>3UhQ}a&&ldWo8O8Ff%zb3MC~)Peuy2Qu5va delta 465 zcmV;?0WSWmp#iF)0kF1B8I5v;gG*A5g`{}4VB(VL~ zUR=w5-}T`|@gadYgfF+M^vpk(lc`P{9nVgRIG7UtkQrUHLK>I}u8an zveNthY0Q5#x~>25utO&n9t^LV+Mgw^1N;O|FFCBXE^8{15=8I66Q? z5rmmXz%USdR9mk3BEE{3EF%d$NebyE(qGbsXFP}L#NXLDrpf9=v4WW98?^C;FQD=Q6vn3b0iVO zG$I^g&IqHBxDy6R5)lT|WI|X3h-^aUa|kz=vxIOZ_Oc`Z5I*F)5|6}LxtCN-Q&M6>u!{IPO)ItWlfsezq>O|fg<%u+Zn!2!7!0K21kA{twGF8pR z)ED3=ushL63?FQcUU04Thtic+yDF0!Mw!U90t|2(P#7JIIhR*q=-Is%=R=;Afztc& zxZVscg$w*v7zv}>D@GYdiZhHk<@_~`UQs$8iglX?FPp7sSEN(;PVRECP~WUjXEcfu zU^CY3VPT|Q8>4Agf2UP-{$&b0+Z%$77Dah>-^wm6eGfJ@**-08)vf%RXEME8^kyNI zrK)r$OGvtJ_D8(5{~tezZYBJD`(Wc?ytS&OFyg58jdAG>XBVegi|1C0zY*0T~; FG69oT`X>MY delta 515 zcmV+e0{s2Nt^vfZ0k8^G5?v?lsXFP}L#NXLDrpf9=v3vC98?^C5R^o~DH4Vt1QHGr z5 z9)g289mlT3x^z{GH8``MYz~(BJL~K>)-jk`i?hgDhyr8-h#0j64i1f@=a9v&iZjFsQ;WuGnw2idb5zo zQdK&WCB)q~`y*c3|Bs(Uw-SE7eX!9m-dfc%HR)098{_tW)AK#N!rm=^2ZGNq&a)C$ FG64%?```co diff --git a/Doc/latex/trackers_8h.tex b/Doc/latex/trackers_8h.tex index 9b09a0e..b00b13c 100644 --- a/Doc/latex/trackers_8h.tex +++ b/Doc/latex/trackers_8h.tex @@ -6,16 +6,14 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline -Include dependency graph for trackers.\+h\+: -\nopagebreak +Include dependency graph for trackers.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=229pt]{trackers_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/trackers_8h__dep__incl.pdf b/Doc/latex/trackers_8h__dep__incl.pdf index 82a2eab35967aea2a20f8bfe92020472311b8c30..26999c4a58d6f23ae86c48cec0387ed683f22237 100644 GIT binary patch delta 435 zcmV;k0Zjh0r2(|10kFVN85iXU2bZKA$F;?EQuR3jWOY@W2PdqLcRW$Gu zC}7CpwS%_0tt=4q@Gz-(tSW80?S1=ZJLt2je)Whot*{w4va9pZx06FqA{z+nwGVt8 zx)E0CYQXjoeb1kVl?!3^?s6^FTa$oL7&qalJ0!6E+Fo4Ce&6-sMe!klIE1gas`Si1 zmGXi@BcmvpoL0I4DizmtnnAP6-IB_%~qMhdG--9Z2V delta 434 zcmV;j0Zsn2r2(_00kFVN8I5v;gG*A5 zveNthY0Q5#x~>25utO&n9t^LV+Mgw^1N;O|FFCBXE^8~ldDmlLrD6u z4mYVG8|}fKT*VpO94-tDfYuxnAO;bHna_Yh*sC?Nwww4t0?3|J3rSTxWIaXw|2pBK c7o+9EHDAC7sTT{qlZ;Xz2s8>MB}Gq03V9&c$N&HU diff --git a/Doc/latex/trackers_8h__incl.pdf b/Doc/latex/trackers_8h__incl.pdf index 2415d8993707044cd2024ff01a8ad01ae4c7252d..2282aeccd84eb1195ca4f6869058bf1d53244074 100644 GIT binary patch delta 558 zcmV+}0@3~aumSt90kB9_2P@lI!onsglTTGAf4KrdNeq0#2xlN7K_U=oLIlK7OgM!& z6@+t0L_#>EA|*Tm#%M~WQwZ1RlY($5cd8-)5Iz*!3cdmd3K=|lXs+wh0wXs!y%o1* zsjW}1>L=@=_eJ@wL9D5ByOc)xbqIZ`<#wry(&EpP7?|Mr1c?}g3HM3&YPQZ)ZrcS3 ze^y1ly2;(bbczASEvMWTy6mtOgrBqf?#qQRdUZS>il=I`*{bJilkS7PJs!qb;^T+z=h-01t zqu2}>Gl;s7gJ{FYp-+t$?+)rnT22?6f0n?TU;U2-Yok=A+aqbLM+n>uv=qY!=c6aw zaQ(@2Y4ooD}_&dAfg$g4n`-FVzgf>9C;Ur4K9w7BM! z3r5+5#exd)mPT(V9S_OkWWnop3c8WFF#Mplg`DZ{jwlM{eB$PqU*@i~3L7ZBS=8Sd zU7vpG0+05ZU~Obsop7)G+`;$YTvOfG+*K{qOOdPWZr1CCOjWuzxvC(!?AdSb%H21< z6LA=@v#-3d@zCCe)m&P6(7RT+yI*>`hey~uB}Gq03Vu%yjsO4v delta 559 zcmV+~0?_^YumSwA0kB9_2a)Y8VPTUklTTGAf0=-wBnCcZgfkG4AQ6Z(Ap+tkCY(Z? z3c@)gA|V`7krEyOV>BhR8HDTeNkO=jJ5>HCtyYx9x%i zf2$&2-Q;dyHp2kpmQ!vEU3SgZ4lDWs2NU;3h73aEqE_Q#c`D1-_#4%5S zQEUc`8AM&kLA2rH(5J?WcL#MOEvJi3e@o!aul~n^wNWb5?U6LrBLr>+T8iO=^U)J- zxc+3iGh0(wQmIf3?duvbCRTz47XXI&L-MclS$A_wWdNr~CtpbuHzSOjjTQHj`~vp#+s~;W(2L xSUxL93V{k`Ze(+Ga%Ev{3T19&Z(?c+b97;Hba--QW(qPgGdVB{B_%~qMhdvj2g?8e diff --git a/Doc/latex/trackers_8h_source.tex b/Doc/latex/trackers_8h_source.tex index bfc2bba..0cb113a 100644 --- a/Doc/latex/trackers_8h_source.tex +++ b/Doc/latex/trackers_8h_source.tex @@ -138,25 +138,31 @@ \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00134}00134\ \ \ } \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00135}00135\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}} \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00136}00136\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00137}00137\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00138}00138\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00139}00139\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00140}00140\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00141}00141\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00142}00142\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00143}00143\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00144}00144\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)\ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00145}00145\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00146}00146\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ всей\ структуры\ */}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00147}00147\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00148}00148\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00149}00149\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00152}00152\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00153}00153\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00154}00154\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//TRACKERS\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00155}00155\ \ \ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00156}00156\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACKERS\_H\_}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00137}00137\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00138}00138\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00139}00139\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00140}00140\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00141}00141\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00142}00142\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00143}00143\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00144}00144\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00145}00145\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00146}00146\ \ \ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00147}00147\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00148}00148\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00149}00149\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00152}00152\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00153}00153\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00154}00154\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00155}00155\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00156}00156\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00157}00157\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00158}00158\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00159}00159\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00160}00160\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//TRACKERS\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00161}00161\ \ \ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00162}00162\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACKERS\_H\_}} \end{DoxyCode} diff --git a/MyLibsGeneral/Inc/evolve_optimizer.h b/MyLibsGeneral/Inc/evolve_optimizer.h new file mode 100644 index 0000000..d011766 --- /dev/null +++ b/MyLibsGeneral/Inc/evolve_optimizer.h @@ -0,0 +1,273 @@ +/** +****************************************************************************** +* @file evolve_optimizer.h +* @brief Заголовочный файл для адаптивного подбора параметров +****************************************************************************** +* @addtogroup EVOLVE_OPTIMIZER Evolve optimizer +* @ingroup MYLIBS_DEFINES +* @brief Библиотека для эволюционного подбора параметров +* @details +Поддерживает: +- Любое количество параметров +- Генерацию новых параметров на основе лучших кандидатов +- Мутацию для поиска оптимальных параметров +- Несколько независимых оптимизаторов в одной программе + +Если библиотека отключена @ref ENABLE_EVOLVE_OPTIMIZATION, то вставляются +заглушки, никак не влияющие на параметры и остальную программу + +@par Пример использования: +@code +#include "evolve_optimizer.h" +#define N_PARAMS 4 +#define N_CANDIDATES 100 +#define N_BEST 10 +#define IQ_MUTATION (PARAM_SCALE_Q16(0.1, 0, 1)) +int32_t params[N_PARAMS]; +EvolveOptimizer_t optimizer; + +// Формирование параметров +uint16_t param_u16 = 800; +float param_f = 0.01f; +uint8_t param_u8 = 40; +int16_t param_i16 = 1600; +params[0] = PARAM_SCALE_Q16(param_u16, 0, 1000); +params[1] = PARAM_SCALE_Q16(param_f, 0.001f, 0.1f); +params[2] = PARAM_SCALE_Q16(param_u8, 10, 100); +params[3] = PARAM_SCALE_Q16(param_i16, 500, 5000); + +// Инициалиазция +EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, IQ_MUTATION, params); + +// Шаг эволюции +int32_t loss = calc_iq_loss(); // расчет эффективности параметров +EvolveOptimizer_Step(&optimizer, params, loss); + +// Взятие следующих для эволюции параметров +param_u16 = PARAM_UNSCALE_Q16(params[0], 0, 1000); +param_f = PARAM_UNSCALE_Q16(params[1], 0.001f, 0.1f); +param_u8 = PARAM_UNSCALE_Q16(params[2], 10, 100); +param_i16 = PARAM_UNSCALE_Q16(params[3], 500, 5000); +@endcode +* @{ +*****************************************************************************/ +#ifndef __EVOLVE_OPTIMIZER_H_ +#define __EVOLVE_OPTIMIZER_H_ + +#include "mylibs_defs.h" +#include +#include + +#ifdef ENABLE_EVOLVE_OPTIMIZATION +/** + * @brief Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536) + */ +#define PARAM_SCALE_Q16(x, min_val, max_val) \ +((int32_t)((((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val))) * 65536.0f)) + +/** + * @brief Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val] + */ +#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) \ +(((float)(q16_val) / 65536.0f) * ((float)(max_val) - (float)(min_val)) + (float)(min_val)) + + +/** + * @brief Структура эволюционного оптимизатора + */ +typedef struct { + uint16_t n_params; ///< Количество параметров + uint16_t n_cand; ///< Количество кандидатов + uint16_t n_best; ///< Количество лучших, усредняемых + uint16_t iq_mutation; ///< Амплитуда мутации в Q16.16 + uint16_t cand_index; ///< Индекс кандидата для обработки + int32_t loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата + int32_t candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов + uint16_t sorted_idx[EVOLVE_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов +} EvolveOptimizer_t; + + + +/** + * @cond EVOLVE_INTERNAL + */ +#define Q16_MUL(a,b) ((int32_t)(((int64_t)(a) * (int64_t)(b)) >> 16)) + +// Вспомогательный указатель для сортировки +static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор + +static int cmp_idx(const void *a, const void *b) { + if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b]) + return -1; + if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b]) + return 1; + return 0; +} +/** @endcond */ + + + + + +/** + * @brief Инициализация эволюционного оптимизатора. + * @param opt Указатель на структуру оптимизатора + * @param n_params Количество параметров в одном кандидате + * @param n_cand Количество кандидатов + * @param n_best Количество лучших, усредняемых + * @param iq_mutation Амплитуда мутации в Q16.16 + * @param start_params Начальные параметры (Q16.16) + */ +__STATIC_INLINE HAL_StatusTypeDef EvolveOptimizer_Init(EvolveOptimizer_t* opt, + uint16_t n_params, + uint16_t n_cand, + uint16_t n_best, + uint16_t iq_mutation, + int32_t* start_params) +{ + if(check_null_ptr_2(opt, start_params)) + return HAL_ERROR; + + if(n_params > EVOLVE_MAX_PARAMS) + return HAL_ERROR; + opt->n_params = n_params; + + if(n_cand > EVOLVE_MAX_CANDIDATES) + return HAL_ERROR; + opt->n_cand = n_cand; + + if(n_best > EVOLVE_MAX_CANDIDATES/2) + return HAL_ERROR; + opt->n_best = n_best; + + if(iq_mutation > 32768) + return HAL_ERROR; + opt->iq_mutation = iq_mutation; + + for (uint16_t i = 0; i < n_cand; i++) { + for (uint16_t j = 0; j < n_params; j++) { + opt->candidates[i][j] = start_params[j]; + } + opt->loss[i] = 0; + } + uint32_t seed = HAL_GetTick() + (ADC1->DR & 0xFF); + srand(seed); + + return HAL_OK; +} + + +/** + * @brief Один шаг эволюционного оптимизатора. + * @param opt Указатель на структуру оптимизатора + * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры) + * @param loss Loss текущего кандидата (Q16.16) + * @details + * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. + * Если накоплено n_cand кандидатов, генерируется новое поколение. + * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации. + * + * На выходе params содержит параметры следующего кандидата для измерений. + * @note Функция использует глобальную внутреннюю переменную для сортировки. + * Надо убедится что только один экземпляр функции запущен в момент времени + */ +__STATIC_INLINE HAL_StatusTypeDef EvolveOptimizer_Step(EvolveOptimizer_t* opt, + int32_t* params, + int32_t loss) +{ + if(check_null_ptr_2(opt, params)) + return HAL_ERROR; + + uint16_t n_params = opt->n_params; + if(n_params > EVOLVE_MAX_PARAMS) + return HAL_ERROR; + + uint16_t n_cand = opt->n_cand; + if(n_cand > EVOLVE_MAX_CANDIDATES) + return HAL_ERROR; + + uint16_t n_best = opt->n_best; + if(n_best > EVOLVE_MAX_CANDIDATES/2) + return HAL_ERROR; + + uint16_t mut = opt->iq_mutation; + if(mut > 32768) + return HAL_ERROR; + + // 1. Сохраняем loss текущего кандидата + opt->loss[opt->cand_index] = loss; + opt->cand_index++; + + if (opt->cand_index >= n_cand) { + // 2. Сортируем текущее поколение по loss + for(uint16_t i = 0; i < opt->n_cand; i++) + opt->sorted_idx[i] = i; + + g_sort_opt = opt; + qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx); + g_sort_opt = NULL; +// for (uint16_t i = 0; i < n_cand - 1; i++) { +// for (uint16_t j = i + 1; j < n_cand; j++) { +// if (opt->loss[j] < opt->loss[i]) { +// int32_t tmp_loss = opt->loss[i]; +// opt->loss[i] = opt->loss[j]; +// opt->loss[j] = tmp_loss; + +// for (uint16_t k = 0; k < n_params; k++) { +// int32_t tmp = opt->candidates[i][k]; +// opt->candidates[i][k] = opt->candidates[j][k]; +// opt->candidates[j][k] = tmp; +// } +// } +// } +// } + + // 3. Генерируем новое поколение: каждый кандидат берется случайно из лучших с мутацией + uint16_t n_elite = 2; // количество элитных кандидатов, которые сохраняем без изменений + for (uint16_t c = 0; c < n_cand; c++) { + if (c < n_elite) { + // Копируем лучших кандидатов напрямую без мутации + for (uint16_t i = 0; i < n_params; i++) { + opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i]; // просто сохраняем параметры + } + opt->loss[c] = 0; + } else { + // Остальные кандидаты формируются с кроссовером и мутацией + for (uint16_t i = 0; i < n_params; i++) { + int32_t noise = (rand() % (2 * mut)) - mut; + uint16_t parent = opt->sorted_idx[rand() % opt->n_best]; // каждый параметр из случайного лучшего + opt->candidates[c][i] = opt->candidates[parent][i] + noise; + } + opt->loss[c] = 0; + } + } + opt->cand_index = 0; + } + + // 4. Возвращаем параметры следующего кандидата + for (uint16_t i = 0; i < opt->n_params; i++) + params[i] = opt->candidates[opt->cand_index][i]; + + return HAL_OK; +} +#else // ENABLE_EVOLVE_OPTIMIZATION +//заглушки +typedef struct { + uint16_t n_params; + uint16_t n_cand; + uint16_t n_best; + uint16_t iq_mutation; + int32_t loss[0]; + int32_t candidates[0][0]; +} EvolveOptimizer_t; +#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params) +#define EvolveOptimizer_Step(opt, params, LossFunc) +#define PARAM_SCALE_Q16(x, min_val, max_val) (x) +#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val) +#endif // ENABLE_EVOLVE_OPTIMIZATION + +#endif // __EVOLVE_OPTIMIZER_H_ + +/** EVOLVE_OPTIMIZER + * @} + */ diff --git a/MyLibsGeneral/Inc/mylibs_config.h b/MyLibsGeneral/Inc/mylibs_config.h index 4365a9b..cb15e9f 100644 --- a/MyLibsGeneral/Inc/mylibs_config.h +++ b/MyLibsGeneral/Inc/mylibs_config.h @@ -54,6 +54,21 @@ */ +/** + * @addtogroup EVOLVE_CONFIG Evolve configs + * @ingroup MYLIBS_CONFIG + * @brief Конфигурация однослойного персептрона и алгоритма обучения + * @{ + */ + +#define ENABLE_EVOLVE_OPTIMIZATION ///< Включить оптимизацию параметров +#define EVOLVE_MAX_PARAMS 20 ///< Максимальное количество параметров +#define EVOLVE_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения + +/** EVOLVE_CONFIG + * @} + */ + /** * @addtogroup LIBS_CONFIG Libraries configs @@ -62,6 +77,7 @@ * @{ */ +#define INCLUDE_EVOLVE_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров #define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями #define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами #define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами diff --git a/MyLibsGeneral/Inc/mylibs_defs.h b/MyLibsGeneral/Inc/mylibs_defs.h index 9d2a22f..2a2749c 100644 --- a/MyLibsGeneral/Inc/mylibs_defs.h +++ b/MyLibsGeneral/Inc/mylibs_defs.h @@ -3,7 +3,7 @@ * @file mylibs_defs.h * @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral. ************************************************************************** -* @defgroup MYLIBS_DEFINES General Defines +* @defgroup MYLIBS_DEFINES General Tools * @ingroup MYLIBS_ALL * @brief Общие макросы и typedef'ы, используемые по всему проекту * @@ -54,10 +54,6 @@ extern void Error_Handler(void); */ -/*************************************************************************** -********************************ACCESS_DEFINES*****************************/ - - /*************************************************************************** ******************************DELAYS_DEFINES*******************************/ /** @@ -137,7 +133,8 @@ extern void Error_Handler(void); /*************************************************************************** -*******************************MATH_DEFINES********************************/ +*******************************UTIL_DEFINES********************************/ +static int dummy; /** * @addtogroup UTILS_DEFINES Utils defines * @ingroup MYLIBS_DEFINES diff --git a/MyLibsGeneral/Inc/mylibs_include.h b/MyLibsGeneral/Inc/mylibs_include.h index 6c92fe8..5a0fd2d 100644 --- a/MyLibsGeneral/Inc/mylibs_include.h +++ b/MyLibsGeneral/Inc/mylibs_include.h @@ -30,6 +30,8 @@ #ifdef ARM_MATH_CM4 #include "arm_math.h" +#else + #include "math.h" #endif @@ -39,13 +41,60 @@ #ifdef INCLUDE_TRACKERS_LIB #include "trackers.h" +#else + #define TrackerTypeDef(num_user_vars) void * + #define num_of_usercnts(_user_) 0 + #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0 + #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0) + #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0 + #define TrackerGet_Ok(_cntstruct_) dummy + #define TrackerGet_Err(_cntstruct_) dummy + #define TrackerGet_Warn(_cntstruct_) dummy + #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy + #define TrackerCnt_Ok(_cntstruct_) + #define TrackerCnt_Err(_cntstruct_) + #define TrackerCnt_Warn(_cntstruct_) + #define TrackerCnt_User(_cntstruct_, _uservarnumb_) + #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) + #define TrackerClear_All(_cntstruct_) + #define TrackerClear_Ok(_cntstruct_) + #define TrackerClear_Err(_cntstruct_) + #define TrackerClear_Warn(_cntstruct_) + #define TrackerClear_User(_cntstruct_) + #define TrackerClear_UserAll(_cntstruct_) #endif #ifdef INCLUDE_TRACE_LIB #include "trace.h" +#else +#define my_printf(...) +#define log_printf(TAG, fmt, ...) +#define TRACE_GPIO_SET(_gpio_,_pin_) +#define TRACE_GPIO_RESET(_gpio_,_pin_) +#define RTT_FlashPrepare(...) +#define RTT_EraseFlash(...) 0 +#define RTT_SaveToFlash(...) 0 +#define RTT_ReadFromFlash(...) 0 +#define HF_CheckRecovered(...) 0 +#define HF_HandleFault(...) #endif - +#ifdef INCLUDE_EVOLVE_OPTIMIZER +#include "evolve_optimizer.h" +#else +typedef struct { + uint16_t n_params; + uint16_t n_cand; + uint16_t n_best; + uint16_t iq_mutation; + int32_t loss[0]; + int32_t candidates[0][0]; +} EvolveOptimizer_t; +#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params) +#define EvolveOptimizer_Step(opt, params, LossFunc) +#define PARAM_SCALE_Q16(x, min_val, max_val) (x) +#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val) +#endif #ifdef INCLUDE_GENERAL_PERIPH_LIBS @@ -73,112 +122,4 @@ /////////////////////////---USER SETTINGS---///////////////////////// -#endif // __MYLIBS_INCLUDE_H_ - -/** -@mainpage - -@section overview Обзор -MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32. - -@subsection features Основные возможности - -@subsubsection utils_module Общие утилиты @ref MYLIBS_DEFINES -- Битовый доступ к регистрам через union -- Трекеры для статистики и отладки -- Макросы для задержек и утилит -- Поддержка FreeRTOS - -@subsubsection trace_module Трассировка @ref TRACE - -- Serial трассировка через SWO и RTT -- GPIO трассировка для отладки -- Сохранение логов в Flash память -- Обработка HardFault с сохранением контекста - -@subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO -- Управление светодиодами (включение/выключение, моргание, плавное затухание) -- Работа с кнопками (чтение состояния, фильтрация дребезга) -- Инициализация портов и тактирования -- Поддержка альтернативных функций - -@subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM - -- Базовая инициализация таймеров -- Режимы прерываний -- Формирование задержек (блокирующие и неблокирующие) -- Работа с энкодерами (чтение положения, обработка кнопок) -- Настройка ШИМ и Output Compare - - -@subsection structure Структура проекта - -@code -├── inc/ # Заголовочные файлы -│ ├── mylibs_include.h # Главный include файл -│ ├── mylibs_config.h # Конфигурация библиотек -│ ├── mylibs_defs.h # Общие определения и макросы -│ ├── bit_access.h # Битовый доступ к регистрам -│ ├── trackers.h # Трекеры для отладки -│ ├── trace.h # Трассировка и логирование -│ ├── general_gpio.h # Работа с GPIO -│ └── general_tim.h # Работа с таймерами -└── src/ # Исходные файлы - ├── general_gpio.c # Реализация GPIO - └── general_tim.c # Реализация TIM -@endcode - -@subsection usage_basic Использование - -Инструкция по подключению: - -1. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h - -2. Подключите главный заголовочный файл: -@code -#include "mylibs_include.h" -@endcode - -3. Используйте нужные модули в своем коде - -@subsubsection gpio_example Пример работы с GPIO - -@code -// Инициализация светодиода -MX_GPIO_Init(); -GPIO_LEDTypeDef led; -GPIO_LED_Init(&led, GPIOA, GPIO_PIN_5, 1); - -// Включение светодиода -GPIO_LED_On(&led); - -// Запуск моргания -GPIO_LED_Blink_Start(&led, 500); // Период 500 мс - -// В основном цикле -while (1) { -GPIO_LED_Dynamic_Handle(&led); -} -@endcode - -@subsubsection tim_example Пример работы с таймером - -@code -// Настройка таймера -TIM_SettingsTypeDef tim_settings = {0}; -tim_settings.htim.Instance = TIM2; -tim_settings.sTimAHBFreqMHz = SystemCoreClock; -tim_settings.sTickBaseUS = TIM_TickBase_1MS; -tim_settings.sTimFreqHz = 1000; // 1 кГц -tim_settings.sTimMode = TIM_IT_CONF; - -TIM_Base_Init(&tim_settings); -HAL_TIM_Base_Start(&tim_settings.htim); -@endcode - -@subsection dependencies Зависимости - -- HAL библиотека STM32 -- SEGGER RTT (опционально, для RTT трассировки) -- FreeRTOS (опционально, для FreeRTOS задержек) - */ \ No newline at end of file +#endif // __MYLIBS_INCLUDE_H_ \ No newline at end of file diff --git a/MyLibsGeneral/Inc/trackers.h b/MyLibsGeneral/Inc/trackers.h index 0c8718f..cc6e0d7 100644 --- a/MyLibsGeneral/Inc/trackers.h +++ b/MyLibsGeneral/Inc/trackers.h @@ -134,16 +134,22 @@ #define TrackerTypeDef(num_user_vars) void * - #define num_of_usercnts(_user_) - #define assert_tracecnt(_cntstruct_, _uservarnumb_) + #define num_of_usercnts(_user_) 0 + #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0 + #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0) + #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0 + #define TrackerGet_Ok(_cntstruct_) dummy + #define TrackerGet_Err(_cntstruct_) dummy + #define TrackerGet_Warn(_cntstruct_) dummy + #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy + #define TrackerCnt_Ok(_cntstruct_) #define TrackerCnt_Err(_cntstruct_) #define TrackerCnt_Warn(_cntstruct_) #define TrackerCnt_User(_cntstruct_, _uservarnumb_) - #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) + #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) - /** @brief Очистка всей структуры */ #define TrackerClear_All(_cntstruct_) #define TrackerClear_Ok(_cntstruct_) #define TrackerClear_Err(_cntstruct_) diff --git a/MyLibsGeneral/mainpage.h b/MyLibsGeneral/mainpage.h new file mode 100644 index 0000000..de2c943 --- /dev/null +++ b/MyLibsGeneral/mainpage.h @@ -0,0 +1,104 @@ + +/** +@mainpage + +@section overview Обзор +MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32. + +@subsection features Основные возможности + +@subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES) +- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES) +- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE) +- Эволюционный алгоритм для оптимизации параметров (@ref EVOLVE_OPTIMIZER) +- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES) + +@subsubsection trace_module Трассировка @ref TRACE +- Serial трассировка через SWO и RTT (@ref TRACE_SERIAL) +- GPIO трассировка для отладки (@ref TRACE_GPIO) +- Сохранение логов в Flash память (@ref TRACE_RTT_FLASH) +- Обработка HardFault с сохранением контекста (@ref TRACE_HARDFAULT) + +@subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO +- Инициализация портов и тактирования (@ref MYLIBS_GPIO_GENERAL) +- Управление светодиодами (включение/выключение, моргание, плавное затухание) (@ref MYLIBS_GPIO_LEDS) +- Работа с кнопками (чтение состояния, фильтрация дребезга) (@ref MYLIBS_GPIO_SWITCH) + +@subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM +- Базовая инициализация таймеров (@ref MYLIBS_TIM_GENERAL) +- Формирование задержек (блокирующие и неблокирующие) (@ref MYLIBS_TIM_DELAY) +- Работа с энкодерами (чтение положения, обработка кнопок) (@ref MYLIBS_TIM_ENCODER) +- Настройка ШИМ и Output Compare (@ref MYLIBS_TIM_OC) + + +@subsection structure Структура проекта + +@code +├── inc/ # Заголовочные файлы +│ ├── mylibs_include.h # Главный include файл +│ ├── mylibs_config.h # Конфигурация библиотек +│ ├── mylibs_defs.h # Общие определения и макросы +│ ├── bit_access.h # Битовый доступ к регистрам +│ ├── trackers.h # Трекеры для отладки +│ ├── trace.h # Трассировка и логирование +│ ├── general_gpio.h # Работа с GPIO +│ └── general_tim.h # Работа с таймерами +└── src/ # Исходные файлы + ├── general_gpio.c # Реализация GPIO + └── general_tim.c # Реализация TIM +@endcode + +@subsection usage_basic Использование + +Инструкция по подключению: + +1. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h + +2. Подключите главный заголовочный файл: +@code +#include "mylibs_include.h" +@endcode + +3. Используйте нужные модули в своем коде + +@subsubsection gpio_example Пример работы с GPIO + +@code +// Инициализация светодиода +MX_GPIO_Init(); +GPIO_LEDTypeDef led; +GPIO_LED_Init(&led, GPIOA, GPIO_PIN_5, 1); + +// Включение светодиода +GPIO_LED_On(&led); + +// Запуск моргания +GPIO_LED_Blink_Start(&led, 500); // Период 500 мс + +// В основном цикле +while (1) { +GPIO_LED_Dynamic_Handle(&led); +} +@endcode + +@subsubsection tim_example Пример работы с таймером + +@code +// Настройка таймера +TIM_SettingsTypeDef tim_settings = {0}; +tim_settings.htim.Instance = TIM2; +tim_settings.sTimAHBFreqMHz = SystemCoreClock; +tim_settings.sTickBaseUS = TIM_TickBase_1MS; +tim_settings.sTimFreqHz = 1000; // 1 кГц +tim_settings.sTimMode = TIM_IT_CONF; + +TIM_Base_Init(&tim_settings); +HAL_TIM_Base_Start(&tim_settings.htim); +@endcode + +@subsection dependencies Зависимости + +- HAL библиотека STM32 +- SEGGER RTT (опционально, для RTT трассировки) +- FreeRTOS (опционально, для FreeRTOS задержек) + */ \ No newline at end of file

3* @file mylibs_defs.h