From dd21466ee9da88214159f1e157b4478850b101d4 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Fri, 7 Nov 2025 21:00:02 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=B3=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=81?= =?UTF-8?q?=D1=83=D0=B1=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...s_e_g_g_e_r___r_t_t___conf_8h_source.html} | 8 +- Doc/html/____general__flash_8c_source.html | 306 ------ Doc/html/____general__flash_8h_source.html | 159 ---- ...html => ____mylibs__config_8h_source.html} | 10 +- ...tml => ____mylibs__include_8h_source.html} | 12 +- Doc/html/annotated.html | 24 +- Doc/html/annotated_dup.js | 6 +- Doc/html/bench__time_8h.html | 61 +- Doc/html/bench__time_8h.js | 13 - Doc/html/bench__time_8h__incl.map | 16 +- Doc/html/bench__time_8h__incl.md5 | 2 +- Doc/html/bench__time_8h__incl.png | Bin 5760 -> 4648 bytes Doc/html/bench__time_8h_source.html | 173 ++-- Doc/html/bit__access_8h.html | 15 +- Doc/html/bit__access_8h__dep__incl.map | 5 - Doc/html/bit__access_8h__dep__incl.md5 | 1 - Doc/html/bit__access_8h__dep__incl.png | Bin 2929 -> 0 bytes Doc/html/bit__access_8h__incl.map | 4 +- Doc/html/bit__access_8h__incl.md5 | 2 +- Doc/html/bit__access_8h__incl.png | Bin 3967 -> 2997 bytes Doc/html/classes.html | 8 +- Doc/html/dir_000000_000004.html | 118 --- Doc/html/dir_000001_000002.html | 118 --- Doc/html/dir_000003_000001.html | 118 --- .../dir_2cad7b5fa94233a09111fd73c6202518.html | 147 --- .../dir_2cad7b5fa94233a09111fd73c6202518.js | 8 - ...r_2cad7b5fa94233a09111fd73c6202518_dep.map | 7 - ...r_2cad7b5fa94233a09111fd73c6202518_dep.md5 | 1 - ...r_2cad7b5fa94233a09111fd73c6202518_dep.png | Bin 1952 -> 0 bytes .../dir_3d5e348fed410a00f9c665596ca3b887.html | 147 --- .../dir_3d5e348fed410a00f9c665596ca3b887.js | 8 - ...r_3d5e348fed410a00f9c665596ca3b887_dep.map | 7 - ...r_3d5e348fed410a00f9c665596ca3b887_dep.md5 | 1 - ...r_3d5e348fed410a00f9c665596ca3b887_dep.png | Bin 1958 -> 0 bytes .../dir_57feeba75fefbd1a9c832b76e3bce520.html | 143 --- .../dir_57feeba75fefbd1a9c832b76e3bce520.js | 5 - ...r_57feeba75fefbd1a9c832b76e3bce520_dep.map | 10 - ...r_57feeba75fefbd1a9c832b76e3bce520_dep.md5 | 1 - ...r_57feeba75fefbd1a9c832b76e3bce520_dep.png | Bin 2600 -> 0 bytes .../dir_7de012165f681bf20d3995ae88f6551e.html | 1 - .../dir_7de012165f681bf20d3995ae88f6551e.js | 1 - .../dir_8eb68c124db7670c3cb56141b10519ea.html | 4 - .../dir_8eb68c124db7670c3cb56141b10519ea.js | 6 +- ...r_d4b2573a0c19afb61452cc3d00967af1_dep.map | 7 - ...r_d4b2573a0c19afb61452cc3d00967af1_dep.md5 | 1 - ...r_d4b2573a0c19afb61452cc3d00967af1_dep.png | Bin 1730 -> 0 bytes Doc/html/doxygen_crawl.html | 68 +- Doc/html/files.html | 17 +- Doc/html/files_dup.js | 4 +- Doc/html/functions.html | 73 +- Doc/html/functions_vars.html | 73 +- Doc/html/gen__optimizer_8h.html | 49 +- Doc/html/gen__optimizer_8h.js | 10 - Doc/html/gen__optimizer_8h__dep__incl.map | 5 - Doc/html/gen__optimizer_8h__dep__incl.md5 | 1 - Doc/html/gen__optimizer_8h__dep__incl.png | Bin 2990 -> 0 bytes Doc/html/gen__optimizer_8h__incl.map | 20 +- Doc/html/gen__optimizer_8h__incl.md5 | 2 +- Doc/html/gen__optimizer_8h__incl.png | Bin 6234 -> 5163 bytes Doc/html/gen__optimizer_8h_source.html | 164 ++-- Doc/html/general__gpio_8c.html | 178 ---- Doc/html/general__gpio_8c.js | 13 - Doc/html/general__gpio_8c__incl.map | 11 - Doc/html/general__gpio_8c__incl.md5 | 1 - Doc/html/general__gpio_8c__incl.png | Bin 5041 -> 0 bytes Doc/html/general__gpio_8c_source.html | 491 ---------- Doc/html/general__gpio_8h.html | 222 ----- Doc/html/general__gpio_8h.js | 25 - Doc/html/general__gpio_8h__dep__incl.map | 15 - Doc/html/general__gpio_8h__dep__incl.md5 | 1 - Doc/html/general__gpio_8h__dep__incl.png | Bin 14359 -> 0 bytes Doc/html/general__gpio_8h__incl.map | 9 - Doc/html/general__gpio_8h__incl.md5 | 1 - Doc/html/general__gpio_8h__incl.png | Bin 4116 -> 0 bytes Doc/html/general__gpio_8h_source.html | 385 -------- Doc/html/general__spi_8c.html | 233 ----- Doc/html/general__spi_8c.js | 8 - Doc/html/general__spi_8c__incl.map | 14 - Doc/html/general__spi_8c__incl.md5 | 1 - Doc/html/general__spi_8c__incl.png | Bin 8347 -> 0 bytes Doc/html/general__spi_8c_source.html | 428 --------- Doc/html/general__spi_8h.html | 185 ---- Doc/html/general__spi_8h.js | 11 - Doc/html/general__spi_8h__dep__incl.map | 5 - Doc/html/general__spi_8h__dep__incl.md5 | 1 - Doc/html/general__spi_8h__dep__incl.png | Bin 2908 -> 0 bytes Doc/html/general__spi_8h__incl.map | 9 - Doc/html/general__spi_8h__incl.md5 | 1 - Doc/html/general__spi_8h__incl.png | Bin 4098 -> 0 bytes Doc/html/general__spi_8h_source.html | 305 ------ Doc/html/general__tim_8c.html | 182 ---- Doc/html/general__tim_8c.js | 14 - Doc/html/general__tim_8c__incl.map | 14 - Doc/html/general__tim_8c__incl.md5 | 1 - Doc/html/general__tim_8c__incl.png | Bin 8300 -> 0 bytes Doc/html/general__tim_8c_source.html | 899 ------------------ Doc/html/general__tim_8h.html | 280 ------ Doc/html/general__tim_8h.js | 41 - Doc/html/general__tim_8h__dep__incl.map | 5 - Doc/html/general__tim_8h__dep__incl.md5 | 1 - Doc/html/general__tim_8h__dep__incl.png | Bin 2904 -> 0 bytes Doc/html/general__tim_8h__incl.map | 12 - Doc/html/general__tim_8h__incl.md5 | 1 - Doc/html/general__tim_8h__incl.png | Bin 7324 -> 0 bytes Doc/html/general__tim_8h_source.html | 469 --------- Doc/html/general__uart_8c.html | 257 ----- Doc/html/general__uart_8c.js | 9 - Doc/html/general__uart_8c__incl.map | 14 - Doc/html/general__uart_8c__incl.md5 | 1 - Doc/html/general__uart_8c__incl.png | Bin 7148 -> 0 bytes Doc/html/general__uart_8c_source.html | 526 ---------- Doc/html/general__uart_8h.html | 191 ---- Doc/html/general__uart_8h.js | 14 - Doc/html/general__uart_8h__dep__incl.map | 5 - Doc/html/general__uart_8h__dep__incl.md5 | 1 - Doc/html/general__uart_8h__dep__incl.png | Bin 2913 -> 0 bytes Doc/html/general__uart_8h__incl.map | 9 - Doc/html/general__uart_8h__incl.md5 | 1 - Doc/html/general__uart_8h__incl.png | Bin 4102 -> 0 bytes Doc/html/general__uart_8h_source.html | 286 ------ Doc/html/globals.html | 73 +- Doc/html/globals_b.html | 126 --- Doc/html/globals_c.html | 120 --- Doc/html/globals_d.html | 115 --- Doc/html/globals_defs.html | 63 +- Doc/html/globals_dup.js | 20 - Doc/html/globals_e.html | 115 --- Doc/html/globals_enum.html | 115 --- Doc/html/globals_eval.html | 125 --- Doc/html/globals_f.html | 115 --- Doc/html/globals_func.html | 13 - Doc/html/globals_g.html | 133 --- Doc/html/globals_h.html | 125 --- Doc/html/globals_i.html | 120 --- Doc/html/globals_l.html | 124 --- Doc/html/globals_m.html | 120 --- Doc/html/globals_n.html | 115 --- Doc/html/globals_p.html | 116 --- Doc/html/globals_r.html | 123 --- Doc/html/globals_s.html | 123 --- Doc/html/globals_t.html | 156 --- Doc/html/globals_u.html | 147 --- Doc/html/globals_vars.html | 113 --- Doc/html/group___b_e_n_c_h___t_i_m_e.html | 301 ++---- Doc/html/group___b_e_n_c_h___t_i_m_e.js | 29 - .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html | 19 +- Doc/html/group___g_e_n___c_o_n_f_i_g.html | 10 +- .../group___g_e_n___o_p_t_i_m_i_z_e_r.html | 302 ++---- Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js | 21 +- Doc/html/group___g_p_i_o___i_n_i_t.html | 264 ----- Doc/html/group___g_p_i_o___i_n_i_t.js | 9 - Doc/html/group___g_p_i_o___i_n_i_t.map | 4 - Doc/html/group___g_p_i_o___i_n_i_t.md5 | 1 - Doc/html/group___g_p_i_o___i_n_i_t.png | Bin 1024 -> 0 bytes Doc/html/group___l_i_b_s___c_o_n_f_i_g.html | 14 +- Doc/html/group___m_y___l_i_b_s___g_p_i_o.html | 153 --- Doc/html/group___m_y___l_i_b_s___g_p_i_o.js | 6 - Doc/html/group___m_y___l_i_b_s___g_p_i_o.map | 7 - Doc/html/group___m_y___l_i_b_s___g_p_i_o.md5 | 1 - Doc/html/group___m_y___l_i_b_s___g_p_i_o.png | Bin 3354 -> 0 bytes Doc/html/group___m_y___l_i_b_s___s_p_i.html | 328 ------- Doc/html/group___m_y___l_i_b_s___s_p_i.js | 22 - Doc/html/group___m_y___l_i_b_s___s_p_i.map | 5 - Doc/html/group___m_y___l_i_b_s___s_p_i.md5 | 1 - Doc/html/group___m_y___l_i_b_s___s_p_i.png | Bin 1432 -> 0 bytes Doc/html/group___m_y___l_i_b_s___t_i_m.html | 160 ---- Doc/html/group___m_y___l_i_b_s___t_i_m.js | 7 - Doc/html/group___m_y___l_i_b_s___t_i_m.map | 8 - Doc/html/group___m_y___l_i_b_s___t_i_m.md5 | 1 - Doc/html/group___m_y___l_i_b_s___t_i_m.png | Bin 5788 -> 0 bytes Doc/html/group___m_y___l_i_b_s___u_a_r_t.html | 317 ------ Doc/html/group___m_y___l_i_b_s___u_a_r_t.js | 16 - Doc/html/group___m_y___l_i_b_s___u_a_r_t.map | 5 - Doc/html/group___m_y___l_i_b_s___u_a_r_t.md5 | 1 - Doc/html/group___m_y___l_i_b_s___u_a_r_t.png | Bin 1477 -> 0 bytes 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 | 4 +- Doc/html/group___m_y_l_i_b_s___a_l_l.md5 | 2 +- ...p___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js | 2 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html | 163 ---- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.js | 11 - .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.map | 12 - .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 | 1 - .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.png | Bin 13092 -> 0 bytes ...m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html | 173 ---- ...__m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.js | 5 - ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.map | 5 - ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 | 1 - ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.png | Bin 1545 -> 0 bytes ...oup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html | 448 --------- ...group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.js | 23 - ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.map | 4 - ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 | 1 - ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.png | Bin 957 -> 0 bytes ...__m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html | 246 ----- ...p___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js | 12 - ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.map | 4 - ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 | 1 - ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.png | Bin 985 -> 0 bytes ...p___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html | 134 --- ...oup___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.js | 7 - ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map | 4 - ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 | 1 - ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png | Bin 957 -> 0 bytes ...oup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html | 266 ------ ...group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.js | 6 - ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.map | 4 - ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 | 1 - ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.png | Bin 946 -> 0 bytes ...__m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html | 268 ------ ...p___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.js | 17 - ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.map | 4 - ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 | 1 - ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.png | Bin 953 -> 0 bytes ...__m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html | 361 ------- ...p___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.js | 32 - ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.map | 5 - ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 | 1 - ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.png | Bin 1491 -> 0 bytes .../group___m_y_l_i_b_s___t_i_m___o_c.html | 246 ----- Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.js | 5 - .../group___m_y_l_i_b_s___t_i_m___o_c.map | 4 - .../group___m_y_l_i_b_s___t_i_m___o_c.md5 | 1 - .../group___m_y_l_i_b_s___t_i_m___o_c.png | Bin 1122 -> 0 bytes Doc/html/group___s_p_i___i_n_i_t.html | 220 ----- Doc/html/group___s_p_i___i_n_i_t.js | 7 - Doc/html/group___s_p_i___i_n_i_t.map | 4 - Doc/html/group___s_p_i___i_n_i_t.md5 | 1 - Doc/html/group___s_p_i___i_n_i_t.png | Bin 952 -> 0 bytes Doc/html/group___t_i_m___i_n_i_t.html | 437 --------- Doc/html/group___t_i_m___i_n_i_t.js | 17 - Doc/html/group___t_i_m___i_n_i_t.map | 4 - Doc/html/group___t_i_m___i_n_i_t.md5 | 1 - Doc/html/group___t_i_m___i_n_i_t.png | Bin 1024 -> 0 bytes Doc/html/group___t_r_a_c_e.js | 2 +- Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html | 32 +- ...group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html | 175 +--- .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.js | 15 - Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html | 54 +- Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.js | 4 +- Doc/html/group___u_a_r_t___i_n_i_t.html | 280 ------ Doc/html/group___u_a_r_t___i_n_i_t.js | 10 - Doc/html/group___u_a_r_t___i_n_i_t.map | 4 - Doc/html/group___u_a_r_t___i_n_i_t.md5 | 1 - Doc/html/group___u_a_r_t___i_n_i_t.png | Bin 980 -> 0 bytes Doc/html/index.html | 3 +- Doc/html/mainpage_8h_source.html | 214 ----- Doc/html/menudata.js | 40 +- Doc/html/mylibs__config_8h.html | 229 ----- Doc/html/mylibs__config_8h.js | 31 - Doc/html/mylibs__config_8h__dep__incl.map | 21 - Doc/html/mylibs__config_8h__dep__incl.md5 | 1 - Doc/html/mylibs__config_8h__dep__incl.png | Bin 23867 -> 0 bytes Doc/html/mylibs__config_8h__incl.map | 5 - Doc/html/mylibs__config_8h__incl.md5 | 1 - Doc/html/mylibs__config_8h__incl.png | Bin 2284 -> 0 bytes Doc/html/mylibs__defs_8h.html | 32 +- Doc/html/mylibs__defs_8h__dep__incl.map | 26 +- Doc/html/mylibs__defs_8h__dep__incl.md5 | 2 +- Doc/html/mylibs__defs_8h__dep__incl.png | Bin 21452 -> 13784 bytes Doc/html/mylibs__defs_8h__incl.map | 4 +- Doc/html/mylibs__defs_8h__incl.md5 | 2 +- Doc/html/mylibs__defs_8h__incl.png | Bin 3155 -> 2216 bytes Doc/html/mylibs__defs_8h_source.html | 9 +- Doc/html/mylibs__include_8h.html | 391 -------- Doc/html/mylibs__include_8h__incl.map | 41 - Doc/html/mylibs__include_8h__incl.md5 | 1 - Doc/html/mylibs__include_8h__incl.png | Bin 33678 -> 0 bytes Doc/html/navtreedata.js | 3 +- Doc/html/navtreeindex0.js | 208 ++-- Doc/html/navtreeindex1.js | 135 --- Doc/html/search/all_1.js | 24 +- Doc/html/search/all_10.js | 40 +- Doc/html/search/all_11.js | 10 +- Doc/html/search/all_12.js | 2 +- Doc/html/search/all_13.js | 2 +- Doc/html/search/all_14.js | 5 +- Doc/html/search/all_15.js | 6 +- Doc/html/search/all_16.js | 3 +- Doc/html/search/all_17.js | 2 +- Doc/html/search/all_18.js | 4 - Doc/html/search/all_19.js | 4 - Doc/html/search/all_1a.js | 4 - Doc/html/search/all_1b.js | 4 - Doc/html/search/all_2.js | 20 +- Doc/html/search/all_4.js | 5 +- Doc/html/search/all_5.js | 2 +- Doc/html/search/all_6.js | 26 +- Doc/html/search/all_7.js | 16 +- Doc/html/search/all_8.js | 11 +- Doc/html/search/all_9.js | 13 +- Doc/html/search/all_a.js | 29 +- Doc/html/search/all_b.js | 5 +- Doc/html/search/all_d.js | 15 +- Doc/html/search/all_e.js | 24 +- Doc/html/search/all_f.js | 41 +- Doc/html/search/classes_0.js | 4 +- Doc/html/search/classes_1.js | 2 +- Doc/html/search/classes_2.js | 5 +- Doc/html/search/classes_3.js | 5 +- Doc/html/search/classes_4.js | 7 - Doc/html/search/classes_5.js | 7 - Doc/html/search/classes_6.js | 8 - Doc/html/search/enums_0.js | 4 - Doc/html/search/enums_1.js | 5 - Doc/html/search/enumvalues_0.js | 7 - Doc/html/search/enumvalues_1.js | 12 - Doc/html/search/files_2.js | 4 +- Doc/html/search/functions_0.js | 13 +- Doc/html/search/functions_1.js | 5 - Doc/html/search/functions_2.js | 5 - Doc/html/search/functions_3.js | 7 - Doc/html/search/functions_4.js | 8 - Doc/html/search/functions_5.js | 14 - Doc/html/search/functions_6.js | 9 - Doc/html/search/groups_10.js | 5 - Doc/html/search/groups_f.js | 4 - Doc/html/search/pages_9.js | 4 - Doc/html/search/pages_a.js | 4 - Doc/html/search/pages_b.js | 4 - Doc/html/search/pages_c.js | 4 - Doc/html/search/pages_d.js | 4 - Doc/html/search/pages_e.js | 4 - Doc/html/search/pages_f.js | 4 - Doc/html/search/searchdata.js | 8 +- Doc/html/search/variables_0.js | 5 +- Doc/html/search/variables_1.js | 2 +- Doc/html/search/variables_2.js | 3 +- Doc/html/search/variables_3.js | 4 - Doc/html/search/variables_4.js | 4 - Doc/html/search/variables_5.js | 6 - Doc/html/search/variables_6.js | 6 - Doc/html/search/variables_7.js | 6 - Doc/html/search/variables_8.js | 5 - Doc/html/search/variables_9.js | 8 - Doc/html/search/variables_a.js | 8 - Doc/html/search/variables_b.js | 6 - Doc/html/search/variables_c.js | 6 - Doc/html/struct_bench_time__t-members.html | 117 --- Doc/html/struct_bench_time__t.html | 171 ---- Doc/html/struct_bench_time__t.js | 4 - .../struct_bench_time__t__coll__graph.map | 7 - .../struct_bench_time__t__coll__graph.md5 | 1 - .../struct_bench_time__t__coll__graph.png | Bin 2906 -> 0 bytes .../struct_bench_time_channel__t-members.html | 120 --- Doc/html/struct_bench_time_channel__t.html | 229 ----- Doc/html/struct_bench_time_channel__t.js | 7 - ...uct_bench_time_channel__t__coll__graph.map | 5 - ...uct_bench_time_channel__t__coll__graph.md5 | 1 - ...uct_bench_time_channel__t__coll__graph.png | Bin 1827 -> 0 bytes .../struct_bench_time_stats__t-members.html | 121 --- Doc/html/struct_bench_time_stats__t.html | 238 ----- Doc/html/struct_bench_time_stats__t.js | 8 - ...ruct_g_p_i_o___l_e_d_type_def-members.html | 122 --- Doc/html/struct_g_p_i_o___l_e_d_type_def.html | 255 ----- Doc/html/struct_g_p_i_o___l_e_d_type_def.js | 8 - ...uct_g_p_i_o___switch_type_def-members.html | 122 --- .../struct_g_p_i_o___switch_type_def.html | 255 ----- Doc/html/struct_g_p_i_o___switch_type_def.js | 8 - Doc/html/struct_gen_optimizer__t-members.html | 20 +- Doc/html/struct_gen_optimizer__t.html | 138 +-- Doc/html/struct_gen_optimizer__t.js | 14 - .../struct_h_f___stack_frame__t-members.html | 124 --- Doc/html/struct_h_f___stack_frame__t.html | 299 ------ Doc/html/struct_h_f___stack_frame__t.js | 11 - ...uct_s_p_i___settings_type_def-members.html | 128 --- .../struct_s_p_i___settings_type_def.html | 379 -------- Doc/html/struct_s_p_i___settings_type_def.js | 15 - ...ruct_t_i_m___encoder_type_def-members.html | 125 --- Doc/html/struct_t_i_m___encoder_type_def.html | 333 ------- Doc/html/struct_t_i_m___encoder_type_def.js | 12 - ..._t_i_m___encoder_type_def__coll__graph.map | 5 - ..._t_i_m___encoder_type_def__coll__graph.md5 | 1 - ..._t_i_m___encoder_type_def__coll__graph.png | Bin 1853 -> 0 bytes ...uct_t_i_m___settings_type_def-members.html | 126 --- .../struct_t_i_m___settings_type_def.html | 342 ------- Doc/html/struct_t_i_m___settings_type_def.js | 13 - ...t_u_a_r_t___settings_type_def-members.html | 122 --- .../struct_u_a_r_t___settings_type_def.html | 259 ----- .../struct_u_a_r_t___settings_type_def.js | 9 - Doc/html/topics.html | 18 +- Doc/html/trace_8h.html | 67 +- Doc/html/trace_8h.js | 6 +- Doc/html/trace_8h__dep__incl.map | 5 - Doc/html/trace_8h__dep__incl.md5 | 1 - Doc/html/trace_8h__dep__incl.png | Bin 2894 -> 0 bytes Doc/html/trace_8h__incl.map | 36 +- Doc/html/trace_8h__incl.md5 | 2 +- Doc/html/trace_8h__incl.png | Bin 12483 -> 11097 bytes Doc/html/trace_8h_source.html | 61 +- Doc/html/trackers_8h.html | 15 +- Doc/html/trackers_8h__dep__incl.map | 5 - Doc/html/trackers_8h__dep__incl.md5 | 1 - Doc/html/trackers_8h__dep__incl.png | Bin 2928 -> 0 bytes Doc/html/trackers_8h__incl.map | 4 +- Doc/html/trackers_8h__incl.md5 | 2 +- Doc/html/trackers_8h__incl.png | Bin 3964 -> 2996 bytes ...__s_e_g_g_e_r___r_t_t___conf_8h_source.tex | 434 +++++++++ Doc/latex/____general__flash_8c_source.tex | 198 ---- Doc/latex/____general__flash_8h_source.tex | 50 - Doc/latex/____mylibs__config_8h_source.tex | 118 +++ Doc/latex/____mylibs__include_8h_source.tex | 141 +++ .../_s_e_g_g_e_r___r_t_t___conf_8h_source.tex | 435 --------- Doc/latex/annotated.tex | 6 +- Doc/latex/bench__time_8h.tex | 53 +- Doc/latex/bench__time_8h__incl.md5 | 2 +- Doc/latex/bench__time_8h__incl.pdf | Bin 21650 -> 20433 bytes Doc/latex/bench__time_8h_source.tex | 124 +-- Doc/latex/bit__access_8h.tex | 10 +- Doc/latex/bit__access_8h__dep__incl.md5 | 1 - Doc/latex/bit__access_8h__dep__incl.pdf | Bin 20055 -> 0 bytes Doc/latex/bit__access_8h__incl.md5 | 2 +- Doc/latex/bit__access_8h__incl.pdf | Bin 21532 -> 21002 bytes Doc/latex/files.tex | 7 +- Doc/latex/gen__optimizer_8h.tex | 37 +- Doc/latex/gen__optimizer_8h__dep__incl.md5 | 1 - Doc/latex/gen__optimizer_8h__dep__incl.pdf | Bin 21238 -> 0 bytes Doc/latex/gen__optimizer_8h__incl.md5 | 2 +- Doc/latex/gen__optimizer_8h__incl.pdf | Bin 22691 -> 21494 bytes Doc/latex/gen__optimizer_8h_source.tex | 128 +-- Doc/latex/general__gpio_8c.tex | 54 -- Doc/latex/general__gpio_8c__incl.md5 | 1 - Doc/latex/general__gpio_8c__incl.pdf | Bin 22434 -> 0 bytes Doc/latex/general__gpio_8c_source.tex | 332 ------- Doc/latex/general__gpio_8h.tex | 87 -- Doc/latex/general__gpio_8h__dep__incl.md5 | 1 - Doc/latex/general__gpio_8h__dep__incl.pdf | Bin 22712 -> 0 bytes Doc/latex/general__gpio_8h__incl.md5 | 1 - Doc/latex/general__gpio_8h__incl.pdf | Bin 22488 -> 0 bytes Doc/latex/general__gpio_8h_source.tex | 243 ----- Doc/latex/general__spi_8c.tex | 80 -- Doc/latex/general__spi_8c__incl.md5 | 1 - Doc/latex/general__spi_8c__incl.pdf | Bin 22696 -> 0 bytes Doc/latex/general__spi_8c_source.tex | 290 ------ Doc/latex/general__spi_8h.tex | 60 -- Doc/latex/general__spi_8h__dep__incl.md5 | 1 - Doc/latex/general__spi_8h__dep__incl.pdf | Bin 20093 -> 0 bytes Doc/latex/general__spi_8h__incl.md5 | 1 - Doc/latex/general__spi_8h__incl.pdf | Bin 22497 -> 0 bytes Doc/latex/general__spi_8h_source.tex | 176 ---- Doc/latex/general__tim_8c.tex | 55 -- Doc/latex/general__tim_8c__incl.md5 | 1 - Doc/latex/general__tim_8c__incl.pdf | Bin 22721 -> 0 bytes Doc/latex/general__tim_8c_source.tex | 728 -------------- Doc/latex/general__tim_8h.tex | 146 --- Doc/latex/general__tim_8h__dep__incl.md5 | 1 - Doc/latex/general__tim_8h__dep__incl.pdf | Bin 20218 -> 0 bytes Doc/latex/general__tim_8h__incl.md5 | 1 - Doc/latex/general__tim_8h__incl.pdf | Bin 22777 -> 0 bytes Doc/latex/general__tim_8h_source.tex | 307 ------ Doc/latex/general__uart_8c.tex | 100 -- Doc/latex/general__uart_8c__incl.md5 | 1 - Doc/latex/general__uart_8c__incl.pdf | Bin 23039 -> 0 bytes Doc/latex/general__uart_8c_source.tex | 389 -------- Doc/latex/general__uart_8h.tex | 66 -- Doc/latex/general__uart_8h__dep__incl.md5 | 1 - Doc/latex/general__uart_8h__dep__incl.pdf | Bin 20065 -> 0 bytes Doc/latex/general__uart_8h__incl.md5 | 1 - Doc/latex/general__uart_8h__incl.pdf | Bin 22456 -> 0 bytes Doc/latex/general__uart_8h_source.tex | 162 ---- Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf | Bin 14306 -> 14306 bytes Doc/latex/group___b_e_n_c_h___t_i_m_e.tex | 307 +++--- ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf | Bin 14236 -> 14240 bytes .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf | Bin 14039 -> 14041 bytes .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex | 20 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf | Bin 13521 -> 13521 bytes ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex | 3 +- Doc/latex/group___g_e_n___c_o_n_f_i_g.pdf | Bin 12917 -> 12918 bytes Doc/latex/group___g_e_n___c_o_n_f_i_g.tex | 13 +- .../group___g_e_n___o_p_t_i_m_i_z_e_r.pdf | Bin 15303 -> 15304 bytes .../group___g_e_n___o_p_t_i_m_i_z_e_r.tex | 200 +--- Doc/latex/group___g_p_i_o___i_n_i_t.md5 | 1 - Doc/latex/group___g_p_i_o___i_n_i_t.pdf | Bin 13405 -> 0 bytes Doc/latex/group___g_p_i_o___i_n_i_t.tex | 129 --- Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf | Bin 13695 -> 13696 bytes Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex | 17 +- Doc/latex/group___m_y___l_i_b_s___g_p_i_o.md5 | 1 - Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf | Bin 17211 -> 0 bytes Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex | 37 - Doc/latex/group___m_y___l_i_b_s___s_p_i.md5 | 1 - Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf | Bin 14928 -> 0 bytes Doc/latex/group___m_y___l_i_b_s___s_p_i.tex | 196 ---- Doc/latex/group___m_y___l_i_b_s___t_i_m.md5 | 1 - Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf | Bin 18332 -> 0 bytes Doc/latex/group___m_y___l_i_b_s___t_i_m.tex | 51 - Doc/latex/group___m_y___l_i_b_s___u_a_r_t.md5 | 1 - Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf | Bin 15508 -> 0 bytes Doc/latex/group___m_y___l_i_b_s___u_a_r_t.tex | 194 ---- 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 16232 -> 16233 bytes Doc/latex/group___m_y_l_i_b_s___a_l_l.tex | 15 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.pdf | Bin 16298 -> 16298 bytes .../group___m_y_l_i_b_s___c_o_n_f_i_g.tex | 3 +- ...___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.pdf | Bin 19247 -> 19247 bytes ...___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.tex | 3 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 | 1 - .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf | Bin 20478 -> 0 bytes .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex | 46 - ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 | 1 - ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf | Bin 14293 -> 0 bytes ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex | 59 -- ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 | 1 - ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf | Bin 11871 -> 0 bytes ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex | 276 ------ ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 | 1 - ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf | Bin 14065 -> 0 bytes ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex | 111 --- ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 | 1 - ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf | Bin 13699 -> 0 bytes ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex | 16 - ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 | 1 - ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf | Bin 13109 -> 0 bytes ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex | 131 --- ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 | 1 - ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf | Bin 13140 -> 0 bytes ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex | 134 --- ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 | 1 - ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf | Bin 14376 -> 0 bytes ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex | 238 ----- .../group___m_y_l_i_b_s___t_i_m___o_c.md5 | 1 - .../group___m_y_l_i_b_s___t_i_m___o_c.pdf | Bin 14476 -> 0 bytes .../group___m_y_l_i_b_s___t_i_m___o_c.tex | 112 --- Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.pdf | Bin 17625 -> 17627 bytes Doc/latex/group___s_p_i___i_n_i_t.md5 | 1 - Doc/latex/group___s_p_i___i_n_i_t.pdf | Bin 13125 -> 0 bytes Doc/latex/group___s_p_i___i_n_i_t.tex | 92 -- Doc/latex/group___t_i_m___i_n_i_t.md5 | 1 - Doc/latex/group___t_i_m___i_n_i_t.pdf | Bin 13418 -> 0 bytes Doc/latex/group___t_i_m___i_n_i_t.tex | 264 ----- Doc/latex/group___t_r_a_c_e.pdf | Bin 18952 -> 18953 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 -> 13334 bytes Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex | 35 +- Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf | Bin 13993 -> 13993 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 -> 13600 bytes .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex | 132 +-- .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf | Bin 14391 -> 14390 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 13662 -> 13662 bytes Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex | 50 +- Doc/latex/group___t_r_a_c_k_e_r_s.pdf | Bin 15246 -> 15247 bytes Doc/latex/group___t_r_a_c_k_e_r_s.tex | 3 +- Doc/latex/group___u_a_r_t___i_n_i_t.md5 | 1 - Doc/latex/group___u_a_r_t___i_n_i_t.pdf | Bin 13468 -> 0 bytes Doc/latex/group___u_a_r_t___i_n_i_t.tex | 140 --- .../group___u_t_i_l_s___d_e_f_i_n_e_s.pdf | Bin 13675 -> 13675 bytes .../group___u_t_i_l_s___d_e_f_i_n_e_s.tex | 3 +- Doc/latex/index.tex | 8 +- Doc/latex/mainpage_8h_source.tex | 105 -- Doc/latex/mylibs__config_8h.tex | 90 -- Doc/latex/mylibs__config_8h__dep__incl.md5 | 1 - Doc/latex/mylibs__config_8h__dep__incl.pdf | Bin 24073 -> 0 bytes Doc/latex/mylibs__config_8h__incl.md5 | 1 - Doc/latex/mylibs__config_8h__incl.pdf | Bin 21095 -> 0 bytes Doc/latex/mylibs__config_8h_source.tex | 119 --- 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 23959 -> 23621 bytes Doc/latex/mylibs__defs_8h__incl.md5 | 2 +- Doc/latex/mylibs__defs_8h__incl.pdf | Bin 21394 -> 20022 bytes Doc/latex/mylibs__defs_8h_source.tex | 6 +- Doc/latex/mylibs__include_8h.tex | 182 ---- Doc/latex/mylibs__include_8h__incl.md5 | 1 - Doc/latex/mylibs__include_8h__incl.pdf | Bin 26153 -> 0 bytes Doc/latex/mylibs__include_8h_source.tex | 142 --- Doc/latex/refman.tex | 13 +- Doc/latex/struct_bench_time__t.tex | 56 -- .../struct_bench_time__t__coll__graph.md5 | 1 - .../struct_bench_time__t__coll__graph.pdf | Bin 14502 -> 0 bytes Doc/latex/struct_bench_time_channel__t.tex | 104 -- ...uct_bench_time_channel__t__coll__graph.md5 | 1 - ...uct_bench_time_channel__t__coll__graph.pdf | Bin 14368 -> 0 bytes Doc/latex/struct_bench_time_stats__t.tex | 111 --- Doc/latex/struct_g_p_i_o___l_e_d_type_def.tex | 123 --- .../struct_g_p_i_o___switch_type_def.tex | 123 --- Doc/latex/struct_gen_optimizer__t.tex | 182 ++-- Doc/latex/struct_h_f___stack_frame__t.tex | 161 ---- .../struct_s_e_g_g_e_r___r_t_t___c_b.tex | 3 +- ...s_e_g_g_e_r___r_t_t___c_b__coll__graph.pdf | Bin 16092 -> 16094 bytes .../struct_s_p_i___settings_type_def.tex | 225 ----- Doc/latex/struct_t_i_m___encoder_type_def.tex | 191 ---- ..._t_i_m___encoder_type_def__coll__graph.md5 | 1 - ..._t_i_m___encoder_type_def__coll__graph.pdf | Bin 17028 -> 0 bytes .../struct_t_i_m___settings_type_def.tex | 197 ---- .../struct_u_a_r_t___settings_type_def.tex | 129 --- Doc/latex/topics.tex | 12 +- Doc/latex/trace_8h.tex | 41 +- Doc/latex/trace_8h__dep__incl.md5 | 1 - Doc/latex/trace_8h__dep__incl.pdf | Bin 20259 -> 0 bytes Doc/latex/trace_8h__incl.md5 | 2 +- Doc/latex/trace_8h__incl.pdf | Bin 23189 -> 22581 bytes Doc/latex/trace_8h_source.tex | 30 +- Doc/latex/trackers_8h.tex | 10 +- Doc/latex/trackers_8h__dep__incl.md5 | 1 - Doc/latex/trackers_8h__dep__incl.pdf | Bin 20771 -> 0 bytes Doc/latex/trackers_8h__incl.md5 | 2 +- Doc/latex/trackers_8h__incl.pdf | Bin 22252 -> 21731 bytes RTT/SEGGER_RTT_Conf.h => __SEGGER_RTT_Conf.h | 0 .../Inc/mylibs_config.h => __mylibs_config.h | 0 .../mylibs_include.h => __mylibs_include.h | 0 602 files changed, 2201 insertions(+), 30983 deletions(-) rename Doc/html/{_s_e_g_g_e_r___r_t_t___conf_8h_source.html => _____s_e_g_g_e_r___r_t_t___conf_8h_source.html} (99%) delete mode 100644 Doc/html/____general__flash_8c_source.html delete mode 100644 Doc/html/____general__flash_8h_source.html rename Doc/html/{mylibs__config_8h_source.html => ____mylibs__config_8h_source.html} (97%) rename Doc/html/{mylibs__include_8h_source.html => ____mylibs__include_8h_source.html} (96%) delete mode 100644 Doc/html/bench__time_8h.js delete mode 100644 Doc/html/bit__access_8h__dep__incl.map delete mode 100644 Doc/html/bit__access_8h__dep__incl.md5 delete mode 100644 Doc/html/bit__access_8h__dep__incl.png delete mode 100644 Doc/html/dir_000000_000004.html delete mode 100644 Doc/html/dir_000001_000002.html delete mode 100644 Doc/html/dir_000003_000001.html delete mode 100644 Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.html delete mode 100644 Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.js delete mode 100644 Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.map delete mode 100644 Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.md5 delete mode 100644 Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.png delete mode 100644 Doc/html/dir_3d5e348fed410a00f9c665596ca3b887.html delete mode 100644 Doc/html/dir_3d5e348fed410a00f9c665596ca3b887.js delete mode 100644 Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.map delete mode 100644 Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.md5 delete mode 100644 Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.png delete mode 100644 Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.html delete mode 100644 Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.js delete mode 100644 Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.map delete mode 100644 Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.md5 delete mode 100644 Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.png delete mode 100644 Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.map delete mode 100644 Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.md5 delete mode 100644 Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.png delete mode 100644 Doc/html/gen__optimizer_8h.js delete mode 100644 Doc/html/gen__optimizer_8h__dep__incl.map delete mode 100644 Doc/html/gen__optimizer_8h__dep__incl.md5 delete mode 100644 Doc/html/gen__optimizer_8h__dep__incl.png delete mode 100644 Doc/html/general__gpio_8c.html delete mode 100644 Doc/html/general__gpio_8c.js delete mode 100644 Doc/html/general__gpio_8c__incl.map delete mode 100644 Doc/html/general__gpio_8c__incl.md5 delete mode 100644 Doc/html/general__gpio_8c__incl.png delete mode 100644 Doc/html/general__gpio_8c_source.html delete mode 100644 Doc/html/general__gpio_8h.html delete mode 100644 Doc/html/general__gpio_8h.js delete mode 100644 Doc/html/general__gpio_8h__dep__incl.map delete mode 100644 Doc/html/general__gpio_8h__dep__incl.md5 delete mode 100644 Doc/html/general__gpio_8h__dep__incl.png delete mode 100644 Doc/html/general__gpio_8h__incl.map delete mode 100644 Doc/html/general__gpio_8h__incl.md5 delete mode 100644 Doc/html/general__gpio_8h__incl.png delete mode 100644 Doc/html/general__gpio_8h_source.html delete mode 100644 Doc/html/general__spi_8c.html delete mode 100644 Doc/html/general__spi_8c.js delete mode 100644 Doc/html/general__spi_8c__incl.map delete mode 100644 Doc/html/general__spi_8c__incl.md5 delete mode 100644 Doc/html/general__spi_8c__incl.png delete mode 100644 Doc/html/general__spi_8c_source.html delete mode 100644 Doc/html/general__spi_8h.html delete mode 100644 Doc/html/general__spi_8h.js delete mode 100644 Doc/html/general__spi_8h__dep__incl.map delete mode 100644 Doc/html/general__spi_8h__dep__incl.md5 delete mode 100644 Doc/html/general__spi_8h__dep__incl.png delete mode 100644 Doc/html/general__spi_8h__incl.map delete mode 100644 Doc/html/general__spi_8h__incl.md5 delete mode 100644 Doc/html/general__spi_8h__incl.png delete mode 100644 Doc/html/general__spi_8h_source.html delete mode 100644 Doc/html/general__tim_8c.html delete mode 100644 Doc/html/general__tim_8c.js delete mode 100644 Doc/html/general__tim_8c__incl.map delete mode 100644 Doc/html/general__tim_8c__incl.md5 delete mode 100644 Doc/html/general__tim_8c__incl.png delete mode 100644 Doc/html/general__tim_8c_source.html delete mode 100644 Doc/html/general__tim_8h.html delete mode 100644 Doc/html/general__tim_8h.js delete mode 100644 Doc/html/general__tim_8h__dep__incl.map delete mode 100644 Doc/html/general__tim_8h__dep__incl.md5 delete mode 100644 Doc/html/general__tim_8h__dep__incl.png delete mode 100644 Doc/html/general__tim_8h__incl.map delete mode 100644 Doc/html/general__tim_8h__incl.md5 delete mode 100644 Doc/html/general__tim_8h__incl.png delete mode 100644 Doc/html/general__tim_8h_source.html delete mode 100644 Doc/html/general__uart_8c.html delete mode 100644 Doc/html/general__uart_8c.js delete mode 100644 Doc/html/general__uart_8c__incl.map delete mode 100644 Doc/html/general__uart_8c__incl.md5 delete mode 100644 Doc/html/general__uart_8c__incl.png delete mode 100644 Doc/html/general__uart_8c_source.html delete mode 100644 Doc/html/general__uart_8h.html delete mode 100644 Doc/html/general__uart_8h.js delete mode 100644 Doc/html/general__uart_8h__dep__incl.map delete mode 100644 Doc/html/general__uart_8h__dep__incl.md5 delete mode 100644 Doc/html/general__uart_8h__dep__incl.png delete mode 100644 Doc/html/general__uart_8h__incl.map delete mode 100644 Doc/html/general__uart_8h__incl.md5 delete mode 100644 Doc/html/general__uart_8h__incl.png delete mode 100644 Doc/html/general__uart_8h_source.html delete mode 100644 Doc/html/globals_b.html delete mode 100644 Doc/html/globals_c.html delete mode 100644 Doc/html/globals_d.html delete mode 100644 Doc/html/globals_dup.js delete mode 100644 Doc/html/globals_e.html delete mode 100644 Doc/html/globals_enum.html delete mode 100644 Doc/html/globals_eval.html delete mode 100644 Doc/html/globals_f.html delete mode 100644 Doc/html/globals_g.html delete mode 100644 Doc/html/globals_h.html delete mode 100644 Doc/html/globals_i.html delete mode 100644 Doc/html/globals_l.html delete mode 100644 Doc/html/globals_m.html delete mode 100644 Doc/html/globals_n.html delete mode 100644 Doc/html/globals_p.html delete mode 100644 Doc/html/globals_r.html delete mode 100644 Doc/html/globals_s.html delete mode 100644 Doc/html/globals_t.html delete mode 100644 Doc/html/globals_u.html delete mode 100644 Doc/html/globals_vars.html delete mode 100644 Doc/html/group___b_e_n_c_h___t_i_m_e.js delete mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.html delete mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.js delete mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.map delete mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.md5 delete mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.png delete mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.html delete mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.js delete mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.map delete mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.md5 delete mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.png delete mode 100644 Doc/html/group___m_y___l_i_b_s___s_p_i.html delete mode 100644 Doc/html/group___m_y___l_i_b_s___s_p_i.js delete mode 100644 Doc/html/group___m_y___l_i_b_s___s_p_i.map delete mode 100644 Doc/html/group___m_y___l_i_b_s___s_p_i.md5 delete mode 100644 Doc/html/group___m_y___l_i_b_s___s_p_i.png delete mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.html delete mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.js delete mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.map delete mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.md5 delete mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.png delete mode 100644 Doc/html/group___m_y___l_i_b_s___u_a_r_t.html delete mode 100644 Doc/html/group___m_y___l_i_b_s___u_a_r_t.js delete mode 100644 Doc/html/group___m_y___l_i_b_s___u_a_r_t.map delete mode 100644 Doc/html/group___m_y___l_i_b_s___u_a_r_t.md5 delete mode 100644 Doc/html/group___m_y___l_i_b_s___u_a_r_t.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.png delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.html delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.js delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.map delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.md5 delete mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.png delete mode 100644 Doc/html/group___s_p_i___i_n_i_t.html delete mode 100644 Doc/html/group___s_p_i___i_n_i_t.js delete mode 100644 Doc/html/group___s_p_i___i_n_i_t.map delete mode 100644 Doc/html/group___s_p_i___i_n_i_t.md5 delete mode 100644 Doc/html/group___s_p_i___i_n_i_t.png delete mode 100644 Doc/html/group___t_i_m___i_n_i_t.html delete mode 100644 Doc/html/group___t_i_m___i_n_i_t.js delete mode 100644 Doc/html/group___t_i_m___i_n_i_t.map delete mode 100644 Doc/html/group___t_i_m___i_n_i_t.md5 delete mode 100644 Doc/html/group___t_i_m___i_n_i_t.png delete mode 100644 Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.js delete mode 100644 Doc/html/group___u_a_r_t___i_n_i_t.html delete mode 100644 Doc/html/group___u_a_r_t___i_n_i_t.js delete mode 100644 Doc/html/group___u_a_r_t___i_n_i_t.map delete mode 100644 Doc/html/group___u_a_r_t___i_n_i_t.md5 delete mode 100644 Doc/html/group___u_a_r_t___i_n_i_t.png delete mode 100644 Doc/html/mainpage_8h_source.html delete mode 100644 Doc/html/mylibs__config_8h.html delete mode 100644 Doc/html/mylibs__config_8h.js delete mode 100644 Doc/html/mylibs__config_8h__dep__incl.map delete mode 100644 Doc/html/mylibs__config_8h__dep__incl.md5 delete mode 100644 Doc/html/mylibs__config_8h__dep__incl.png delete mode 100644 Doc/html/mylibs__config_8h__incl.map delete mode 100644 Doc/html/mylibs__config_8h__incl.md5 delete mode 100644 Doc/html/mylibs__config_8h__incl.png delete mode 100644 Doc/html/mylibs__include_8h.html delete mode 100644 Doc/html/mylibs__include_8h__incl.map delete mode 100644 Doc/html/mylibs__include_8h__incl.md5 delete mode 100644 Doc/html/mylibs__include_8h__incl.png delete mode 100644 Doc/html/navtreeindex1.js delete mode 100644 Doc/html/search/all_18.js delete mode 100644 Doc/html/search/all_19.js delete mode 100644 Doc/html/search/all_1a.js delete mode 100644 Doc/html/search/all_1b.js delete mode 100644 Doc/html/search/classes_4.js delete mode 100644 Doc/html/search/classes_5.js delete mode 100644 Doc/html/search/classes_6.js delete mode 100644 Doc/html/search/enums_0.js delete mode 100644 Doc/html/search/enums_1.js delete mode 100644 Doc/html/search/enumvalues_0.js delete mode 100644 Doc/html/search/enumvalues_1.js delete mode 100644 Doc/html/search/functions_1.js delete mode 100644 Doc/html/search/functions_2.js delete mode 100644 Doc/html/search/functions_3.js delete mode 100644 Doc/html/search/functions_4.js delete mode 100644 Doc/html/search/functions_5.js delete mode 100644 Doc/html/search/functions_6.js delete mode 100644 Doc/html/search/groups_10.js delete mode 100644 Doc/html/search/groups_f.js delete mode 100644 Doc/html/search/pages_9.js delete mode 100644 Doc/html/search/pages_a.js delete mode 100644 Doc/html/search/pages_b.js delete mode 100644 Doc/html/search/pages_c.js delete mode 100644 Doc/html/search/pages_d.js delete mode 100644 Doc/html/search/pages_e.js delete mode 100644 Doc/html/search/pages_f.js delete mode 100644 Doc/html/search/variables_3.js delete mode 100644 Doc/html/search/variables_4.js delete mode 100644 Doc/html/search/variables_5.js delete mode 100644 Doc/html/search/variables_6.js delete mode 100644 Doc/html/search/variables_7.js delete mode 100644 Doc/html/search/variables_8.js delete mode 100644 Doc/html/search/variables_9.js delete mode 100644 Doc/html/search/variables_a.js delete mode 100644 Doc/html/search/variables_b.js delete mode 100644 Doc/html/search/variables_c.js delete mode 100644 Doc/html/struct_bench_time__t-members.html delete mode 100644 Doc/html/struct_bench_time__t.html delete mode 100644 Doc/html/struct_bench_time__t.js delete mode 100644 Doc/html/struct_bench_time__t__coll__graph.map delete mode 100644 Doc/html/struct_bench_time__t__coll__graph.md5 delete mode 100644 Doc/html/struct_bench_time__t__coll__graph.png delete mode 100644 Doc/html/struct_bench_time_channel__t-members.html delete mode 100644 Doc/html/struct_bench_time_channel__t.html delete mode 100644 Doc/html/struct_bench_time_channel__t.js delete mode 100644 Doc/html/struct_bench_time_channel__t__coll__graph.map delete mode 100644 Doc/html/struct_bench_time_channel__t__coll__graph.md5 delete mode 100644 Doc/html/struct_bench_time_channel__t__coll__graph.png delete mode 100644 Doc/html/struct_bench_time_stats__t-members.html delete mode 100644 Doc/html/struct_bench_time_stats__t.html delete mode 100644 Doc/html/struct_bench_time_stats__t.js delete mode 100644 Doc/html/struct_g_p_i_o___l_e_d_type_def-members.html delete mode 100644 Doc/html/struct_g_p_i_o___l_e_d_type_def.html delete mode 100644 Doc/html/struct_g_p_i_o___l_e_d_type_def.js delete mode 100644 Doc/html/struct_g_p_i_o___switch_type_def-members.html delete mode 100644 Doc/html/struct_g_p_i_o___switch_type_def.html delete mode 100644 Doc/html/struct_g_p_i_o___switch_type_def.js delete mode 100644 Doc/html/struct_gen_optimizer__t.js delete mode 100644 Doc/html/struct_h_f___stack_frame__t-members.html delete mode 100644 Doc/html/struct_h_f___stack_frame__t.html delete mode 100644 Doc/html/struct_h_f___stack_frame__t.js delete mode 100644 Doc/html/struct_s_p_i___settings_type_def-members.html delete mode 100644 Doc/html/struct_s_p_i___settings_type_def.html delete mode 100644 Doc/html/struct_s_p_i___settings_type_def.js delete mode 100644 Doc/html/struct_t_i_m___encoder_type_def-members.html delete mode 100644 Doc/html/struct_t_i_m___encoder_type_def.html delete mode 100644 Doc/html/struct_t_i_m___encoder_type_def.js delete mode 100644 Doc/html/struct_t_i_m___encoder_type_def__coll__graph.map delete mode 100644 Doc/html/struct_t_i_m___encoder_type_def__coll__graph.md5 delete mode 100644 Doc/html/struct_t_i_m___encoder_type_def__coll__graph.png delete mode 100644 Doc/html/struct_t_i_m___settings_type_def-members.html delete mode 100644 Doc/html/struct_t_i_m___settings_type_def.html delete mode 100644 Doc/html/struct_t_i_m___settings_type_def.js delete mode 100644 Doc/html/struct_u_a_r_t___settings_type_def-members.html delete mode 100644 Doc/html/struct_u_a_r_t___settings_type_def.html delete mode 100644 Doc/html/struct_u_a_r_t___settings_type_def.js delete mode 100644 Doc/html/trace_8h__dep__incl.map delete mode 100644 Doc/html/trace_8h__dep__incl.md5 delete mode 100644 Doc/html/trace_8h__dep__incl.png delete mode 100644 Doc/html/trackers_8h__dep__incl.map delete mode 100644 Doc/html/trackers_8h__dep__incl.md5 delete mode 100644 Doc/html/trackers_8h__dep__incl.png create mode 100644 Doc/latex/_____s_e_g_g_e_r___r_t_t___conf_8h_source.tex delete mode 100644 Doc/latex/____general__flash_8c_source.tex delete mode 100644 Doc/latex/____general__flash_8h_source.tex create mode 100644 Doc/latex/____mylibs__config_8h_source.tex create mode 100644 Doc/latex/____mylibs__include_8h_source.tex delete mode 100644 Doc/latex/_s_e_g_g_e_r___r_t_t___conf_8h_source.tex delete mode 100644 Doc/latex/bit__access_8h__dep__incl.md5 delete mode 100644 Doc/latex/bit__access_8h__dep__incl.pdf delete mode 100644 Doc/latex/gen__optimizer_8h__dep__incl.md5 delete mode 100644 Doc/latex/gen__optimizer_8h__dep__incl.pdf delete mode 100644 Doc/latex/general__gpio_8c.tex delete mode 100644 Doc/latex/general__gpio_8c__incl.md5 delete mode 100644 Doc/latex/general__gpio_8c__incl.pdf delete mode 100644 Doc/latex/general__gpio_8c_source.tex delete mode 100644 Doc/latex/general__gpio_8h.tex delete mode 100644 Doc/latex/general__gpio_8h__dep__incl.md5 delete mode 100644 Doc/latex/general__gpio_8h__dep__incl.pdf delete mode 100644 Doc/latex/general__gpio_8h__incl.md5 delete mode 100644 Doc/latex/general__gpio_8h__incl.pdf delete mode 100644 Doc/latex/general__gpio_8h_source.tex delete mode 100644 Doc/latex/general__spi_8c.tex delete mode 100644 Doc/latex/general__spi_8c__incl.md5 delete mode 100644 Doc/latex/general__spi_8c__incl.pdf delete mode 100644 Doc/latex/general__spi_8c_source.tex delete mode 100644 Doc/latex/general__spi_8h.tex delete mode 100644 Doc/latex/general__spi_8h__dep__incl.md5 delete mode 100644 Doc/latex/general__spi_8h__dep__incl.pdf delete mode 100644 Doc/latex/general__spi_8h__incl.md5 delete mode 100644 Doc/latex/general__spi_8h__incl.pdf delete mode 100644 Doc/latex/general__spi_8h_source.tex delete mode 100644 Doc/latex/general__tim_8c.tex delete mode 100644 Doc/latex/general__tim_8c__incl.md5 delete mode 100644 Doc/latex/general__tim_8c__incl.pdf delete mode 100644 Doc/latex/general__tim_8c_source.tex delete mode 100644 Doc/latex/general__tim_8h.tex delete mode 100644 Doc/latex/general__tim_8h__dep__incl.md5 delete mode 100644 Doc/latex/general__tim_8h__dep__incl.pdf delete mode 100644 Doc/latex/general__tim_8h__incl.md5 delete mode 100644 Doc/latex/general__tim_8h__incl.pdf delete mode 100644 Doc/latex/general__tim_8h_source.tex delete mode 100644 Doc/latex/general__uart_8c.tex delete mode 100644 Doc/latex/general__uart_8c__incl.md5 delete mode 100644 Doc/latex/general__uart_8c__incl.pdf delete mode 100644 Doc/latex/general__uart_8c_source.tex delete mode 100644 Doc/latex/general__uart_8h.tex delete mode 100644 Doc/latex/general__uart_8h__dep__incl.md5 delete mode 100644 Doc/latex/general__uart_8h__dep__incl.pdf delete mode 100644 Doc/latex/general__uart_8h__incl.md5 delete mode 100644 Doc/latex/general__uart_8h__incl.pdf delete mode 100644 Doc/latex/general__uart_8h_source.tex delete mode 100644 Doc/latex/group___g_p_i_o___i_n_i_t.md5 delete mode 100644 Doc/latex/group___g_p_i_o___i_n_i_t.pdf delete mode 100644 Doc/latex/group___g_p_i_o___i_n_i_t.tex delete mode 100644 Doc/latex/group___m_y___l_i_b_s___g_p_i_o.md5 delete mode 100644 Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf delete mode 100644 Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex delete mode 100644 Doc/latex/group___m_y___l_i_b_s___s_p_i.md5 delete mode 100644 Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf delete mode 100644 Doc/latex/group___m_y___l_i_b_s___s_p_i.tex delete mode 100644 Doc/latex/group___m_y___l_i_b_s___t_i_m.md5 delete mode 100644 Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf delete mode 100644 Doc/latex/group___m_y___l_i_b_s___t_i_m.tex delete mode 100644 Doc/latex/group___m_y___l_i_b_s___u_a_r_t.md5 delete mode 100644 Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf delete mode 100644 Doc/latex/group___m_y___l_i_b_s___u_a_r_t.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.md5 delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf delete mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex delete mode 100644 Doc/latex/group___s_p_i___i_n_i_t.md5 delete mode 100644 Doc/latex/group___s_p_i___i_n_i_t.pdf delete mode 100644 Doc/latex/group___s_p_i___i_n_i_t.tex delete mode 100644 Doc/latex/group___t_i_m___i_n_i_t.md5 delete mode 100644 Doc/latex/group___t_i_m___i_n_i_t.pdf delete mode 100644 Doc/latex/group___t_i_m___i_n_i_t.tex delete mode 100644 Doc/latex/group___u_a_r_t___i_n_i_t.md5 delete mode 100644 Doc/latex/group___u_a_r_t___i_n_i_t.pdf delete mode 100644 Doc/latex/group___u_a_r_t___i_n_i_t.tex delete mode 100644 Doc/latex/mainpage_8h_source.tex delete mode 100644 Doc/latex/mylibs__config_8h.tex delete mode 100644 Doc/latex/mylibs__config_8h__dep__incl.md5 delete mode 100644 Doc/latex/mylibs__config_8h__dep__incl.pdf delete mode 100644 Doc/latex/mylibs__config_8h__incl.md5 delete mode 100644 Doc/latex/mylibs__config_8h__incl.pdf delete mode 100644 Doc/latex/mylibs__config_8h_source.tex delete mode 100644 Doc/latex/mylibs__include_8h.tex delete mode 100644 Doc/latex/mylibs__include_8h__incl.md5 delete mode 100644 Doc/latex/mylibs__include_8h__incl.pdf delete mode 100644 Doc/latex/mylibs__include_8h_source.tex delete mode 100644 Doc/latex/struct_bench_time__t.tex delete mode 100644 Doc/latex/struct_bench_time__t__coll__graph.md5 delete mode 100644 Doc/latex/struct_bench_time__t__coll__graph.pdf delete mode 100644 Doc/latex/struct_bench_time_channel__t.tex delete mode 100644 Doc/latex/struct_bench_time_channel__t__coll__graph.md5 delete mode 100644 Doc/latex/struct_bench_time_channel__t__coll__graph.pdf delete mode 100644 Doc/latex/struct_bench_time_stats__t.tex delete mode 100644 Doc/latex/struct_g_p_i_o___l_e_d_type_def.tex delete mode 100644 Doc/latex/struct_g_p_i_o___switch_type_def.tex delete mode 100644 Doc/latex/struct_h_f___stack_frame__t.tex delete mode 100644 Doc/latex/struct_s_p_i___settings_type_def.tex delete mode 100644 Doc/latex/struct_t_i_m___encoder_type_def.tex delete mode 100644 Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.md5 delete mode 100644 Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf delete mode 100644 Doc/latex/struct_t_i_m___settings_type_def.tex delete mode 100644 Doc/latex/struct_u_a_r_t___settings_type_def.tex delete mode 100644 Doc/latex/trace_8h__dep__incl.md5 delete mode 100644 Doc/latex/trace_8h__dep__incl.pdf delete mode 100644 Doc/latex/trackers_8h__dep__incl.md5 delete mode 100644 Doc/latex/trackers_8h__dep__incl.pdf rename RTT/SEGGER_RTT_Conf.h => __SEGGER_RTT_Conf.h (100%) rename MyLibs/Inc/mylibs_config.h => __mylibs_config.h (100%) rename MyLibs/Inc/mylibs_include.h => __mylibs_include.h (100%) diff --git a/Doc/html/_s_e_g_g_e_r___r_t_t___conf_8h_source.html b/Doc/html/_____s_e_g_g_e_r___r_t_t___conf_8h_source.html similarity index 99% rename from Doc/html/_s_e_g_g_e_r___r_t_t___conf_8h_source.html rename to Doc/html/_____s_e_g_g_e_r___r_t_t___conf_8h_source.html index 98a785c..e1ebec1 100644 --- a/Doc/html/_s_e_g_g_e_r___r_t_t___conf_8h_source.html +++ b/Doc/html/_____s_e_g_g_e_r___r_t_t___conf_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT_Conf.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__SEGGER_RTT_Conf.h Source File @@ -71,7 +71,7 @@ $(function() {
@@ -97,7 +97,7 @@ $(function(){initNavTree('_s_e_g_g_e_r___r_t_t___conf_8h_source.html','',''); })
-
SEGGER_RTT_Conf.h
+
E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__SEGGER_RTT_Conf.h
1/*********************************************************************
@@ -535,7 +535,7 @@ $(function(){initNavTree('_s_e_g_g_e_r___r_t_t___conf_8h_source.html','',''); }) diff --git a/Doc/html/____general__flash_8c_source.html b/Doc/html/____general__flash_8c_source.html deleted file mode 100644 index 5c7ba7b..0000000 --- a/Doc/html/____general__flash_8c_source.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/__general_flash.c Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
__general_flash.c
-
-
-
1#include "__general_flash.h"
-
2FLASH_EraseInitTypeDef EraseInitStruct;
-
3extern HAL_StatusTypeDef res_hal;
-
4unsigned CRC_Update;
-
5//uint32_t PAGE_OFFSET = ((uint32_t)((4-1) * 0x0400));
-
6uint32_t PAGE_NUMB = 127;
-
7
-
8
-
9/* Записать в память данные, произвольного размера */
-
10HAL_StatusTypeDef FLASH_Write_Data(uint32_t* Address, uint8_t* Data, int Data_size)
-
11{
-
12 HAL_StatusTypeDef res_hal;
-
13
-
14 int data_cnt = 0;
-
15 uint32_t adr;
-
16 uint32_t word_data;
-
17
-
18
-
19 res_hal = HAL_FLASH_Unlock();
-
20 if (res_hal != HAL_OK) return res_hal;
-
21
-
22 for (adr = *Address; adr < *Address + Data_size; adr = adr + 4)
-
23 {
-
24
-
25
-
26 word_data = (
-
27 Data[data_cnt] |
-
28 Data[data_cnt + 1] << 8 |
-
29 Data[data_cnt + 2] << 16 |
-
30 Data[data_cnt + 3] << 24);
-
31
-
32 res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, adr, word_data);
-
33
-
34 if (res_hal != HAL_OK) return res_hal;
-
35
-
36 data_cnt += 4;
-
37 }
-
38
-
39 *Address += Data_size;
-
40 res_hal = HAL_FLASH_Lock();
-
41
-
42 return res_hal;
-
43}
-
44
-
45
-
46
-
47HAL_StatusTypeDef FLASH_Enable_DualBankMode(void)
-
48{
-
49 HAL_StatusTypeDef res_hal;
-
50 FLASH_AdvOBProgramInitTypeDef OB_DualBank;
-
51
-
52
-
53 res_hal = HAL_FLASH_Unlock();
-
54 if (res_hal != HAL_OK)
-
55 return res_hal;
-
56
-
57 res_hal = HAL_FLASH_OB_Unlock();
-
58 if (res_hal != HAL_OK)
-
59 return res_hal;
-
60
-
61
-
62 FLASH->OPTCR |= FLASH_OPTCR_DB1M;
-
63
-
64 res_hal = HAL_FLASH_OB_Launch();
-
65 if (res_hal != HAL_OK)
-
66 return res_hal;
-
67
-
68 res_hal = HAL_FLASH_OB_Lock();
-
69 if (res_hal != HAL_OK)
-
70 return res_hal;
-
71
-
72 res_hal = HAL_FLASH_Lock();
-
73 if (res_hal != HAL_OK)
-
74 return res_hal;
-
75
-
76
-
77 return res_hal;
-
78}
-
79
-
80
-
81
-
82/* Убрать защиту */
-
83HAL_StatusTypeDef FLASH_WriteProtection(uint32_t BankN, uint32_t WriteProtection)
-
84{
-
85 HAL_StatusTypeDef res_hal;
-
86 FLASH_OBProgramInitTypeDef OBInit;
-
87
-
88 // Очистка всех возможных ошибок
-
89 FLASH->SR |= FLASH_FLAG_WRPERR // Write Protection Error
-
90 | FLASH_FLAG_PGSERR // Programming Sequence Error
-
91 | FLASH_FLAG_PGAERR // Programming Alignment Error
-
92 | FLASH_FLAG_OPERR; // Operation Error
-
93
-
94 res_hal = HAL_FLASH_Unlock();
-
95 if (res_hal != HAL_OK)
-
96 return res_hal;
-
97
-
98 res_hal = HAL_FLASH_OB_Unlock(); // Разблокировка Option Bytes
-
99 if (res_hal != HAL_OK)
-
100 return res_hal;
-
101
-
102 // Считываем текущую конфигурацию Option Bytes
-
103 HAL_FLASHEx_OBGetConfig(&OBInit);
-
104
-
105 // Отключаем защиту на всех секторах второго банка
-
106 OBInit.OptionType = OPTIONBYTE_WRP;
-
107 OBInit.WRPState = WriteProtection; // Снять защиту
-
108 OBInit.WRPSector = OB_WRP_SECTOR_12; // Снять защиту
-
109 OBInit.Banks = BankN; // Указываем второй банк
-
110 res_hal = HAL_FLASHEx_OBProgram(&OBInit);
-
111 if (res_hal != HAL_OK)
-
112 return res_hal;
-
113
-
114 // Записываем изменения и перезагружаем чип
-
115 res_hal = HAL_FLASH_OB_Launch();
-
116 if (res_hal != HAL_OK)
-
117 return res_hal;
-
118
-
119 // Считываем текущую конфигурацию Option Bytes
-
120 HAL_FLASHEx_OBGetConfig(&OBInit);
-
121
-
122// Блокировка Option Bytes
-
123 res_hal = HAL_FLASH_OB_Lock();
-
124 if (res_hal != HAL_OK)
-
125 return res_hal;
-
126
-
127 res_hal = HAL_FLASH_Lock();
-
128 if (res_hal != HAL_OK)
-
129 return res_hal;
-
130
-
131 return res_hal;
-
132}
-
133//-----------------ELEMENTARY FUNCTIONS---------------------
-
134/* functions for reading bytes/halswords/words */
-
135uint8_t FLASH_Read_Byte(uint32_t add)
-
136{
-
137 return (*(__IO uint8_t*)(add));
-
138}
-
139uint16_t FLASH_Read_HalfWord(uint32_t add)
-
140{
-
141 return (*(__IO uint16_t*)(add));
-
142}
-
143uint32_t FLASH_Read_Word(uint32_t add)
-
144{
-
145 return (*(__IO uint32_t*)(add));
-
146}
-
147/* functions for writing bytes/halswords/words */
-
148HAL_StatusTypeDef FLASH_Write_Byte(uint32_t Address, uint8_t Data)
-
149{
-
150 HAL_StatusTypeDef res_hal;
-
151
-
152 res_hal = HAL_FLASH_Unlock();
-
153
-
154 if (res_hal != HAL_OK) return res_hal;
-
155
-
156 res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, (uint8_t)(Data));
-
157
-
158 if (res_hal != HAL_OK) return res_hal;
-
159
-
160 res_hal = HAL_FLASH_Lock();
-
161 return res_hal;
-
162}
-
163HAL_StatusTypeDef FLASH_Write_HalfWord(uint32_t Address, uint16_t Data)
-
164{
-
165 HAL_StatusTypeDef res_hal;
-
166
-
167 res_hal = HAL_FLASH_Unlock();
-
168
-
169 if (res_hal != HAL_OK) return res_hal;
-
170
-
171 res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, Address, (uint16_t)(Data));
-
172
-
173 if (res_hal != HAL_OK) return res_hal;
-
174
-
175 res_hal = HAL_FLASH_Lock();
-
176 return res_hal;
-
177}
-
178HAL_StatusTypeDef FLASH_Write_Word(uint32_t Address, uint32_t Data)
-
179{
-
180 HAL_StatusTypeDef res_hal;
-
181
-
182 res_hal = HAL_FLASH_Unlock();
-
183 if (res_hal != HAL_OK) return res_hal;
-
184
-
185 res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, (uint32_t)(Data));
-
186 if (res_hal != HAL_OK) return res_hal;
-
187
-
188 res_hal = HAL_FLASH_Lock();
-
189 return res_hal;
-
190}
-
191//----------------------------------------------------------
-
192
-
-
-
- - - - diff --git a/Doc/html/____general__flash_8h_source.html b/Doc/html/____general__flash_8h_source.html deleted file mode 100644 index 2bf89ea..0000000 --- a/Doc/html/____general__flash_8h_source.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/__general_flash.h Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
__general_flash.h
-
-
-
1/**************************************************************************
-
2* @file general_flash.h
-
3* @brief Заголовочны файл модуля работы с FLASH.
-
4*************************************************************************/
-
5#ifndef __FLASH_GENERAL_H_
-
6#define __FLASH_GENERAL_H_
-
7
-
8//////////////////////////////////////////////////////////////////////
-
9/////////////////////////---USER SETTINGS---/////////////////////////
-
10
-
11
-
12/////////////////////////---USER SETTINGS---/////////////////////////
-
13#include "mylibs_defs.h"
-
14
-
15
-
16
-
17/////////////////////////////////////////////////////////////////////
-
18////////////////////////////---DEFINES---////////////////////////////
-
19
-
20////////////////////////////---DEFINES---////////////////////////////
-
21
-
22
-
23/////////////////////////////////////////////////////////////////////
-
24///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
25
-
26///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
27
-
28
-
29/////////////////////////////////////////////////////////////////////
-
30///////////////////////////---FUNCTIONS---///////////////////////////
-
31
-
32HAL_StatusTypeDef FLASH_Enable_DualBankMode(void);
-
33HAL_StatusTypeDef FLASH_WriteProtection(uint32_t BankN, uint32_t WriteProtection);
-
34/* functions for reading bytes/halswords/words */
-
35uint8_t FLASH_Read_Byte(uint32_t add);
-
36uint16_t FLASH_Read_HalfWord(uint32_t add);
-
37uint32_t FLASH_Read_Word(uint32_t add);
-
38/* functions for writing bytes/halswords/words */
-
39HAL_StatusTypeDef FLASH_Write_Byte(uint32_t Address, uint8_t Data);
-
40HAL_StatusTypeDef FLASH_Write_HalfWord(uint32_t Address, uint16_t Data);
-
41HAL_StatusTypeDef FLASH_Write_Word(uint32_t Address, uint32_t Data);
-
42///////////////////////////---FUNCTIONS---///////////////////////////
-
43
-
44#endif // __FLASH_GENERAL_H_
-
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
-
-
- - - - diff --git a/Doc/html/mylibs__config_8h_source.html b/Doc/html/____mylibs__config_8h_source.html similarity index 97% rename from Doc/html/mylibs__config_8h_source.html rename to Doc/html/____mylibs__config_8h_source.html index 00ce4e4..86c02d9 100644 --- a/Doc/html/mylibs__config_8h_source.html +++ b/Doc/html/____mylibs__config_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_config.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__mylibs_config.h Source File @@ -71,7 +71,7 @@ $(function() {
@@ -97,10 +97,10 @@ $(function(){initNavTree('mylibs__config_8h_source.html','',''); });
-
mylibs_config.h
+
E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__mylibs_config.h
-Go to the documentation of this file.
1/**
+
1/**
2**************************************************************************
3* @file mylibs_config.h
4* @brief Конфигурации для библиотек MyLibs
@@ -219,7 +219,7 @@ $(function(){initNavTree('mylibs__config_8h_source.html','',''); }); diff --git a/Doc/html/mylibs__include_8h_source.html b/Doc/html/____mylibs__include_8h_source.html similarity index 96% rename from Doc/html/mylibs__include_8h_source.html rename to Doc/html/____mylibs__include_8h_source.html index 694c01e..d9ee17e 100644 --- a/Doc/html/mylibs__include_8h_source.html +++ b/Doc/html/____mylibs__include_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_include.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__mylibs_include.h Source File @@ -71,7 +71,7 @@ $(function() {
@@ -97,10 +97,10 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });
-
mylibs_include.h
+
E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__mylibs_include.h
-Go to the documentation of this file.
1/**
+
1/**
2**************************************************************************
3* @file mylibs_include.h
4* @brief Заголочный файл для всех библиотек
@@ -240,7 +240,7 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });
Заголочный файл для дефайнов битового доступа.
Заголовочный файл для адаптивного подбора параметров
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура эволюционного оптимизатора
+
Заголочный файл для работы с трассировкой.
Заголочный файл для работы с трекерами Trackers defines.
@@ -249,7 +249,7 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); }); diff --git a/Doc/html/annotated.html b/Doc/html/annotated.html index c4e0c3d..7cf897b 100644 --- a/Doc/html/annotated.html +++ b/Doc/html/annotated.html @@ -102,20 +102,16 @@ $(function(){initNavTree('annotated.html','',''); });
Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - - - + + + + + + + + + +
 CBenchTime_tОсновная структура менеджера измерений
 CBenchTimeChannel_tСтруктура канала измерения
 CBenchTimeStats_tСтруктура статистики измерений
 CGenOptimizer_tСтруктура эволюционного оптимизатора
 CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSEGGER_RTT_BUFFER_DOWN
 CSEGGER_RTT_BUFFER_UP
 CSEGGER_RTT_CB
 CSEGGER_RTT_PRINTF_DESC
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
 CGenOptimizer_t
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSEGGER_RTT_BUFFER_DOWN
 CSEGGER_RTT_BUFFER_UP
 CSEGGER_RTT_CB
 CSEGGER_RTT_PRINTF_DESC
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
diff --git a/Doc/html/annotated_dup.js b/Doc/html/annotated_dup.js index 0ae31f8..c3669fd 100644 --- a/Doc/html/annotated_dup.js +++ b/Doc/html/annotated_dup.js @@ -1,10 +1,6 @@ var annotated_dup = [ - [ "BenchTime_t", "struct_bench_time__t.html", "struct_bench_time__t" ], - [ "BenchTimeChannel_t", "struct_bench_time_channel__t.html", "struct_bench_time_channel__t" ], - [ "BenchTimeStats_t", "struct_bench_time_stats__t.html", "struct_bench_time_stats__t" ], - [ "GenOptimizer_t", "struct_gen_optimizer__t.html", "struct_gen_optimizer__t" ], - [ "HF_StackFrame_t", "struct_h_f___stack_frame__t.html", "struct_h_f___stack_frame__t" ], + [ "GenOptimizer_t", "struct_gen_optimizer__t.html", null ], [ "RTT_FlashHeader_t", "struct_r_t_t___flash_header__t.html", "struct_r_t_t___flash_header__t" ], [ "SEGGER_RTT_BUFFER_DOWN", "struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html", null ], [ "SEGGER_RTT_BUFFER_UP", "struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html", null ], diff --git a/Doc/html/bench__time_8h.html b/Doc/html/bench__time_8h.html index db834ca..8caf91c 100644 --- a/Doc/html/bench__time_8h.html +++ b/Doc/html/bench__time_8h.html @@ -111,54 +111,29 @@ $(function(){initNavTree('bench__time_8h.html','',''); });

Go to the source code of this file.

- - - - - - - -

-Classes

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

-Functions

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

-Variables

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

+Macros

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

Detailed Description

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

diff --git a/Doc/html/bench__time_8h.js b/Doc/html/bench__time_8h.js deleted file mode 100644 index 8165848..0000000 --- a/Doc/html/bench__time_8h.js +++ /dev/null @@ -1,13 +0,0 @@ -var bench__time_8h = -[ - [ "BenchTime_Init", "group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054", null ], - [ "BenchTime_Start", "group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349", null ], - [ "BenchTime_End", "group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439", null ], - [ "BenchTime_GetMin", "group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705", null ], - [ "BenchTime_GetMax", "group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e", null ], - [ "BenchTime_GetAverage", "group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8", null ], - [ "BenchTime_GetCount", "group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a", null ], - [ "BenchTime_GetLast", "group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed", null ], - [ "BenchTime_ResetStats", "group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35", null ], - [ "hbt", "group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d", null ] -]; \ No newline at end of file diff --git a/Doc/html/bench__time_8h__incl.map b/Doc/html/bench__time_8h__incl.map index 6062c53..1bc519b 100644 --- a/Doc/html/bench__time_8h__incl.map +++ b/Doc/html/bench__time_8h__incl.map @@ -1,11 +1,9 @@ - - - - - - - - - + + + + + + + diff --git a/Doc/html/bench__time_8h__incl.md5 b/Doc/html/bench__time_8h__incl.md5 index 85e3982..42966e0 100644 --- a/Doc/html/bench__time_8h__incl.md5 +++ b/Doc/html/bench__time_8h__incl.md5 @@ -1 +1 @@ -fbf298ac1272e30c44aac7b864c62a23 \ No newline at end of file +042be7adef0103a8f71e0ad6e3dadf51 \ No newline at end of file diff --git a/Doc/html/bench__time_8h__incl.png b/Doc/html/bench__time_8h__incl.png index ff55bc6e0d66914b2f32849b3ce518d2b9793862..50b119f886136cd70d2946cb8c41f66f2119367b 100644 GIT binary patch literal 4648 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 B=jZ?c diff --git a/Doc/html/bench__time_8h_source.html b/Doc/html/bench__time_8h_source.html index 0808415..1977f41 100644 --- a/Doc/html/bench__time_8h_source.html +++ b/Doc/html/bench__time_8h_source.html @@ -179,56 +179,48 @@ $(function(){initNavTree('bench__time_8h_source.html','',''); });
77/**
78 * @brief Структура статистики измерений
79 */
-
-
80typedef struct {
-
81 uint32_t min_ticks; ///< Минимальное время в тиках
-
82 uint32_t max_ticks; ///< Максимальное время в тиках
-
83 uint32_t total_ticks; ///< Суммарное время в тиках
-
84 uint32_t count; ///< Количество измерений
-
85 uint32_t last_ticks; ///< Последнее измеренное время
- -
+
80typedef struct {
+
81 uint32_t min_ticks; ///< Минимальное время в тиках
+
82 uint32_t max_ticks; ///< Максимальное время в тиках
+
83 uint32_t total_ticks; ///< Суммарное время в тиках
+
84 uint32_t count; ///< Количество измерений
+
85 uint32_t last_ticks; ///< Последнее измеренное время
+
86} BenchTimeStats_t;
87
88/**
89 * @brief Структура канала измерения
90 */
-
-
91typedef struct {
-
92 uint32_t start_tick; ///< Время старта в тиках
-
93 uint32_t tick_period; ///< Период тиков для переполнения
-
94 uint32_t is_running; ///< Флаг активного измерения
-
95 BenchTimeStats_t stats; ///< Статистика измерений
- -
+
91typedef struct {
+
92 uint32_t start_tick; ///< Время старта в тиках
+
93 uint32_t tick_period; ///< Период тиков для переполнения
+
94 uint32_t is_running; ///< Флаг активного измерения
+
95 BenchTimeStats_t stats; ///< Статистика измерений
+
96} BenchTimeChannel_t;
97
98/**
99 * @brief Основная структура менеджера измерений
100 */
-
-
101typedef struct {
-
102 BenchTimeChannel_t channels[BENCH_TIME_MAX_CHANNELS]; ///< Каналы измерения
- -
+
101typedef struct {
+
102 BenchTimeChannel_t channels[BENCH_TIME_MAX_CHANNELS]; ///< Каналы измерения
+
103} BenchTime_t;
104
-
105static BenchTime_t hbt = {0}; ///< Внутренний экземпляр
+
105static BenchTime_t hbt = {0}; ///< Внутренний экземпляр
106
107/**
108 * @brief Инициализация системы измерения времени
109 */
-
-
110static inline void BenchTime_Init(void) {
+
110static inline void BenchTime_Init(void) {
111 for (int i = 0; i < BENCH_TIME_MAX_CHANNELS; i++) {
-
112 hbt.channels[i].start_tick = 0;
-
113 hbt.channels[i].tick_period = 0xFFFFFFFF;
-
114 hbt.channels[i].is_running = 0;
-
115 hbt.channels[i].stats.min_ticks = 0xFFFFFFFF;
-
116 hbt.channels[i].stats.max_ticks = 0;
-
117 hbt.channels[i].stats.total_ticks = 0;
-
118 hbt.channels[i].stats.count = 0;
-
119 hbt.channels[i].stats.last_ticks = 0;
+
112 hbt.channels[i].start_tick = 0;
+
113 hbt.channels[i].tick_period = 0xFFFFFFFF;
+
114 hbt.channels[i].is_running = 0;
+
115 hbt.channels[i].stats.min_ticks = 0xFFFFFFFF;
+
116 hbt.channels[i].stats.max_ticks = 0;
+
117 hbt.channels[i].stats.total_ticks = 0;
+
118 hbt.channels[i].stats.count = 0;
+
119 hbt.channels[i].stats.last_ticks = 0;
120 }
121}
-
122
123/**
124 * @brief Начало измерения на указанном канале
@@ -237,17 +229,15 @@ $(function(){initNavTree('bench__time_8h_source.html','',''); });
127 * @param tick_period Период тиков для переполнения
128 * @return 1 - успех, 0 - ошибка
129 */
-
-
130static inline uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period) {
+
130static inline uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period) {
131 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
-
132 if (hbt.channels[channel].is_running) return 0;
+
132 if (hbt.channels[channel].is_running) return 0;
133
-
134 hbt.channels[channel].start_tick = ticks;
-
135 hbt.channels[channel].tick_period = tick_period;
-
136 hbt.channels[channel].is_running = 1;
+
134 hbt.channels[channel].start_tick = ticks;
+
135 hbt.channels[channel].tick_period = tick_period;
+
136 hbt.channels[channel].is_running = 1;
137 return 1;
138}
-
139
140/**
141 * @brief Окончание измерения на указанном канале
@@ -255,14 +245,13 @@ $(function(){initNavTree('bench__time_8h_source.html','',''); });
143 * @param ticks Источник тиков (должен быть тот же что в Start)
144 * @return Измеренное время в тиках, 0 - в случае ошибки
145 */
-
-
146static inline uint32_t BenchTime_End(uint8_t channel, uint32_t ticks) {
+
146static inline uint32_t BenchTime_End(uint8_t channel, uint32_t ticks) {
147 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
-
148 if (!hbt.channels[channel].is_running) return 0;
+
148 if (!hbt.channels[channel].is_running) return 0;
149
150 uint32_t end_tick = ticks;
-
151 uint32_t start_tick = hbt.channels[channel].start_tick;
-
152 uint32_t tick_period = hbt.channels[channel].tick_period;
+
151 uint32_t start_tick = hbt.channels[channel].start_tick;
+
152 uint32_t tick_period = hbt.channels[channel].tick_period;
153 uint32_t elapsed_ticks;
154
155 if (end_tick >= start_tick) {
@@ -275,93 +264,80 @@ $(function(){initNavTree('bench__time_8h_source.html','',''); });
162 elapsed_ticks = tick_period;
163 }
164
-
165 hbt.channels[channel].is_running = 0;
+
165 hbt.channels[channel].is_running = 0;
166
167 // Обновление статистики
-
168 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
-
169 stats->last_ticks = elapsed_ticks;
+
168 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+
169 stats->last_ticks = elapsed_ticks;
170
171 if (elapsed_ticks < stats->min_ticks) {
-
172 stats->min_ticks = elapsed_ticks;
+
172 stats->min_ticks = elapsed_ticks;
173 }
174
-
175 if (elapsed_ticks > stats->max_ticks) {
-
176 stats->max_ticks = elapsed_ticks;
+
175 if (elapsed_ticks > stats->max_ticks) {
+
176 stats->max_ticks = elapsed_ticks;
177 }
178
-
179 stats->total_ticks += elapsed_ticks;
-
180 stats->count++;
+
179 stats->total_ticks += elapsed_ticks;
+
180 stats->count++;
181
182 return elapsed_ticks;
183}
-
184
185/**
186 * @brief Получение минимального времени измерения
187 */
-
-
188static inline uint32_t BenchTime_GetMin(uint8_t channel) {
+
188static inline uint32_t BenchTime_GetMin(uint8_t channel) {
189 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
-
190 return hbt.channels[channel].stats.min_ticks;
+
190 return hbt.channels[channel].stats.min_ticks;
191}
-
192
193/**
194 * @brief Получение максимального времени измерения
195 */
-
-
196static inline uint32_t BenchTime_GetMax(uint8_t channel) {
+
196static inline uint32_t BenchTime_GetMax(uint8_t channel) {
197 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
-
198 return hbt.channels[channel].stats.max_ticks;
+
198 return hbt.channels[channel].stats.max_ticks;
199}
-
200
201/**
202 * @brief Получение среднего времени измерения
203 */
-
-
204static inline uint32_t BenchTime_GetAverage(uint8_t channel) {
+
204static inline uint32_t BenchTime_GetAverage(uint8_t channel) {
205 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
-
206 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
-
207 if (stats->count == 0) return 0;
-
208 return stats->total_ticks / stats->count;
+
206 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+
207 if (stats->count == 0) return 0;
+
208 return stats->total_ticks / stats->count;
209}
-
210
211/**
212 * @brief Получение количества измерений
213 */
-
-
214static inline uint32_t BenchTime_GetCount(uint8_t channel) {
+
214static inline uint32_t BenchTime_GetCount(uint8_t channel) {
215 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
-
216 return hbt.channels[channel].stats.count;
+
216 return hbt.channels[channel].stats.count;
217}
-
218
219/**
220 * @brief Получение последнего измеренного времени
221 */
-
-
222static inline uint32_t BenchTime_GetLast(uint8_t channel) {
+
222static inline uint32_t BenchTime_GetLast(uint8_t channel) {
223 if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
-
224 return hbt.channels[channel].stats.last_ticks;
+
224 return hbt.channels[channel].stats.last_ticks;
225}
-
226
227/**
228 * @brief Сброс статистики для канала
229 */
-
-
230static inline void BenchTime_ResetStats(uint8_t channel) {
+
230static inline void BenchTime_ResetStats(uint8_t channel) {
231 if (channel >= BENCH_TIME_MAX_CHANNELS) return;
-
232 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
-
233 stats->min_ticks = 0xFFFFFFFF;
-
234 stats->max_ticks = 0;
-
235 stats->total_ticks = 0;
-
236 stats->count = 0;
-
237 stats->last_ticks = 0;
+
232 BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+
233 stats->min_ticks = 0xFFFFFFFF;
+
234 stats->max_ticks = 0;
+
235 stats->total_ticks = 0;
+
236 stats->count = 0;
+
237 stats->last_ticks = 0;
238}
-
239#else //BENCH_TIME_ENABLE
240
241#define BenchTime_Init()
@@ -381,31 +357,8 @@ $(function(){initNavTree('bench__time_8h_source.html','',''); });
255/** BENCH_TIME
256 * @}
257 */
-
static uint32_t BenchTime_GetMax(uint8_t channel)
Получение максимального времени измерения
Definition bench_time.h:196
-
static uint32_t BenchTime_GetAverage(uint8_t channel)
Получение среднего времени измерения
Definition bench_time.h:204
-
static uint32_t BenchTime_GetMin(uint8_t channel)
Получение минимального времени измерения
Definition bench_time.h:188
-
static void BenchTime_ResetStats(uint8_t channel)
Сброс статистики для канала
Definition bench_time.h:230
-
static uint32_t BenchTime_End(uint8_t channel, uint32_t ticks)
Окончание измерения на указанном канале
Definition bench_time.h:146
-
static BenchTime_t hbt
Внутренний экземпляр
Definition bench_time.h:105
-
static void BenchTime_Init(void)
Инициализация системы измерения времени
Definition bench_time.h:110
-
static uint32_t BenchTime_GetCount(uint8_t channel)
Получение количества измерений
Definition bench_time.h:214
-
static uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period)
Начало измерения на указанном канале
Definition bench_time.h:130
-
static uint32_t BenchTime_GetLast(uint8_t channel)
Получение последнего измеренного времени
Definition bench_time.h:222
-
#define BENCH_TIME_MAX_CHANNELS
Максимальное количество каналов измерения
+
#define BENCH_TIME_MAX_CHANNELS
Максимальное количество каналов измерения
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Основная структура менеджера измерений
Definition bench_time.h:101
-
BenchTimeChannel_t channels[BENCH_TIME_MAX_CHANNELS]
Каналы измерения
Definition bench_time.h:102
-
Структура канала измерения
Definition bench_time.h:91
-
uint32_t tick_period
Период тиков для переполнения
Definition bench_time.h:93
-
uint32_t is_running
Флаг активного измерения
Definition bench_time.h:94
-
BenchTimeStats_t stats
Статистика измерений
Definition bench_time.h:95
-
uint32_t start_tick
Время старта в тиках
Definition bench_time.h:92
-
Структура статистики измерений
Definition bench_time.h:80
-
uint32_t total_ticks
Суммарное время в тиках
Definition bench_time.h:83
-
uint32_t last_ticks
Последнее измеренное время
Definition bench_time.h:85
-
uint32_t min_ticks
Минимальное время в тиках
Definition bench_time.h:81
-
uint32_t max_ticks
Максимальное время в тиках
Definition bench_time.h:82
-
uint32_t count
Количество измерений
Definition bench_time.h:84
diff --git a/Doc/html/bit__access_8h.html b/Doc/html/bit__access_8h.html index b85d255..072588d 100644 --- a/Doc/html/bit__access_8h.html +++ b/Doc/html/bit__access_8h.html @@ -113,21 +113,8 @@ $(function(){initNavTree('bit__access_8h.html','',''); }); - + - - - -
-
This graph shows which files directly or indirectly include this file:
-
-
-
diff --git a/Doc/html/bit__access_8h__dep__incl.map b/Doc/html/bit__access_8h__dep__incl.map deleted file mode 100644 index c75f5a6..0000000 --- a/Doc/html/bit__access_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/bit__access_8h__dep__incl.md5 b/Doc/html/bit__access_8h__dep__incl.md5 deleted file mode 100644 index 7c0a27e..0000000 --- a/Doc/html/bit__access_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2c31726c367195a8a8a4de71516ca02f \ No newline at end of file diff --git a/Doc/html/bit__access_8h__dep__incl.png b/Doc/html/bit__access_8h__dep__incl.png deleted file mode 100644 index 8d1ce763a5fe0621f5e720d88615bd8b5255348a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2929 zcmbVOdpHyN8=sUeIGJ1$D>Robn}dXCAu$=sH8zo4a+$J)QzM03=9Up6M!7_`65GsV zl{>i{V#HF6<+3R|thv;2&U2pUcg}f!zkhzu_xXO`Ki=;jpZD{=&*$?dpR>1?-nDNR z005A-fm=Fm#?H{86Tr+4SjW0IC-@B)(3pRiB4+8unZheS`^{^TGCW3{xQ4=@(BZ^Fbn-Bni+nDRr z7G=ZGsFL}H0F09Ox!5q32}bz*FcC4!MH@zX3K6XEt1X6-#fQl$9Xg0)*US+5&E=qD z!GIv2t5+R*1_Pdp7YEAhyuC$T?3@`Guq$b+nOG)3+XyYT_IxxXHITtz%)Jzt+Ond^ zeLVNW6RoaJ(d8#-#M~}g8DzSKQb2+dBeVk}d6tUFNzepJh_X@X!5p$Esb7nz>6`UD zs;g%6mlGs{W@f<8sWhh*E+DN^m!jrsJ-hFadMQ4q=H-Ak!4qKHY9;3;A!H|`r8snm zPXUL~j-6sstn#Pc|0*yiOwljDb9=+juk^8dB;8Qyb+RY8fuDlToFhc$`y&@a7Nu(j zm)$*wC8=o%ju9+`Y-XKRhsCkdX4bfJiYpIlV<0K?cn(>p5O47lFQ!s*`_e%wPAG8G z_YDHlo3Y=6C^>in6V?45rJ(qlJUVyrbT>H%UUC;lRE+cH9I%?U*2i4)i3^GM^~zFBDnEF-Q9}f#Tn7wyOEj#Fp?Bp|+j3Q9B?~`LBbhyaPHf&<$L!Kz=i7Qxh`0Y;y3pu4# zW88E8yJ)5FzOJf#u)wMVcS;hf?qsjjzr`ROlk4Ov*`y!^K6ykT9nyx)E?;)nu=X4c zkYyQd8gJ~?p!4}DQ#t(|bV{BgzLC-+?kgW(GocZ3k!Aap* zY`rR|_4~3#in!r@Hi_EqUV?wnVsNop?niOv!Q-zD6q?)pk&W%YRXE&eqE6e_j$XuT z?lvN8xP(|#W6(nUw;yOv)-M?Yf%&{L|M3O=#AJWslO0bgvbv%`DS~+uYd@k~u00?G-c5 zf(meQ;@8RAk9jHJ^m^x5clh z7Hw7CVn;_h<%*@(h(vWmH}hq8f|{gw1ch-3V4LNZ;@fb5+~zdJ4!+sovl*2iN`Ci8sJxBjQ@-V1xe7 zZgtErO9ZJYZ5_oIJ2XFr%FmP;w)devPajZU>b%Q|Yi{QZ%=bn7c#Bq4X+}8awc|wO zq=))o;fA=#-X8byyo}8yiOd80_LyXT$oa|r75i|9!-xGkAgLv{*=jG>=1(P2-r1ftHTy&?Ax72^+DKYPOVQ37*km`82<#pX^zp+C(!S*j0pdzQxi`Tn!f z3$gt$43C>PrKWi%qpb8wyz7+lOv~z?;#n7U-5URhCzoho7d9+WLcES<$&QOK7`hF`enEL~dH?w2!0I9poQ zF&k=7!|+2ImGia7RHf3m+II7`XZcD;yAhN7D!lV8qRZW~c0U|oyH~Xv7F|xKUK6@k zCpKtNm*YtYG>CvTZBeDeQ4<>R^^#D@S(&jAWidftFnY&J7OQ-3-`wQ@IHMZ0yYk8# z_7?5Vxd)}gSSy3m1(epH%>K&n{r>1XjBS4k>LYwh9WStp>rs?LjhGl8;`d{mvK0j) zN&_Z0a}Ac}tDnr<<}KCR;6ZJwDzA{4X<#LPF_o+ zTnpFX-pJ*Lqch(1F*&`YLle`+=uI#&aIdi|Gq)dGRgJ`5nC@MaPsUjo4+*&1F_mb< zw1|pL9X0Jj_~`kcD5&n7vgkOUomUY+!FXoi;;GhiBPpmFP}!o_ie`cxu-29U!ukb+2wfI<}Sl7Kgxk|n3O6NDk4c;*a7++Sq=wd?#09XBknvo`@$ wO#?Gir@j>>p>(_@&BDGLei!?5VXgYae6(RK7@9WvW2pw%oUykgTX@I*4xlWXr~m)} diff --git a/Doc/html/bit__access_8h__incl.map b/Doc/html/bit__access_8h__incl.map index 69374a6..4d2ee0e 100644 --- a/Doc/html/bit__access_8h__incl.map +++ b/Doc/html/bit__access_8h__incl.map @@ -2,8 +2,6 @@ - + - - diff --git a/Doc/html/bit__access_8h__incl.md5 b/Doc/html/bit__access_8h__incl.md5 index 11a59e5..bb12138 100644 --- a/Doc/html/bit__access_8h__incl.md5 +++ b/Doc/html/bit__access_8h__incl.md5 @@ -1 +1 @@ -a9e9953d332b9335ffe62b621a875479 \ No newline at end of file +4026b3a01780e5dc9dda8421c6c9f225 \ No newline at end of file diff --git a/Doc/html/bit__access_8h__incl.png b/Doc/html/bit__access_8h__incl.png index 58b159c350236f4f2b0adb752cfd09eea3c32a64..b5d033b96a37f7ce9d6311b4d6eca3a491b7410a 100644 GIT binary patch literal 2997 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 TGs~Ofe;zH(Y)p%dU7!97uZGf% literal 3967 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 diff --git a/Doc/html/classes.html b/Doc/html/classes.html index 7b26701..5281cfc 100644 --- a/Doc/html/classes.html +++ b/Doc/html/classes.html @@ -100,17 +100,11 @@ $(function(){initNavTree('classes.html','',''); });
Class Index
-
B | G | H | R | S | U
+
G | R | S | U
-
B
-
BenchTime_t
BenchTimeChannel_t
BenchTimeStats_t
-
G
GenOptimizer_t
-
-
H
-
HF_StackFrame_t
R
RTT_FlashHeader_t
diff --git a/Doc/html/dir_000000_000004.html b/Doc/html/dir_000000_000004.html deleted file mode 100644 index 4e70a3c..0000000 --- a/Doc/html/dir_000000_000004.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc -> STM32_General Relation - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-

Inc → STM32_General Relation

File in MyLibs/IncIncludes file in STM32_General
mylibs_include.hInc / general_gpio.h
-
- -
- - - - diff --git a/Doc/html/dir_000001_000002.html b/Doc/html/dir_000001_000002.html deleted file mode 100644 index 28db3a6..0000000 --- a/Doc/html/dir_000001_000002.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc -> MyLibs Relation - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-

Inc → MyLibs Relation

File in STM32_General/IncIncludes file in MyLibs
__general_flash.hInc / mylibs_defs.h
general_gpio.hInc / mylibs_defs.h
general_spi.hInc / mylibs_defs.h
general_tim.hInc / mylibs_defs.h
general_uart.hInc / mylibs_defs.h
-
- -
- - - - diff --git a/Doc/html/dir_000003_000001.html b/Doc/html/dir_000003_000001.html deleted file mode 100644 index dfea558..0000000 --- a/Doc/html/dir_000003_000001.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src -> Inc Relation - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
- -
- - - - diff --git a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.html b/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.html deleted file mode 100644 index 8d0232a..0000000 --- a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc Directory Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Inc Directory Reference
-
-
-
Directory dependency graph for Inc:
-
-
- - - - - - - - - - - - -

-Files

 
__general_flash.h
 
general_gpio.h
 Заголовочный файл для модуля инициализации портов и работы с ними.
 
general_spi.h
 Заголовочный файл для модуля инициализации SPI.
 
general_tim.h
 Заголовочный файл для модуля инициализации таймеров и работы с ними.
 
general_uart.h
 Заголовочный файл для модуля инициализации UART.
-
-
- -
- - - - diff --git a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.js b/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.js deleted file mode 100644 index c39ee90..0000000 --- a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518.js +++ /dev/null @@ -1,8 +0,0 @@ -var dir_2cad7b5fa94233a09111fd73c6202518 = -[ - [ "__general_flash.h", "____general__flash_8h_source.html", null ], - [ "general_gpio.h", "general__gpio_8h.html", "general__gpio_8h" ], - [ "general_spi.h", "general__spi_8h.html", "general__spi_8h" ], - [ "general_tim.h", "general__tim_8h.html", "general__tim_8h" ], - [ "general_uart.h", "general__uart_8h.html", "general__uart_8h" ] -]; \ No newline at end of file diff --git a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.map b/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.map deleted file mode 100644 index 18afd77..0000000 --- a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.md5 b/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.md5 deleted file mode 100644 index fcf7817..0000000 --- a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -4c7a0465ed840078237ca199294c9aab \ No newline at end of file diff --git a/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.png b/Doc/html/dir_2cad7b5fa94233a09111fd73c6202518_dep.png deleted file mode 100644 index 5bcbf50ef8bab8d104e0b52563fe602fdae7c88f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1952 zcmZuydpHy7A0LaAu#?Djio`fBxi!o(jbh|%$fXOXkYhSqbSl>vPUe=h35T>D#c*;v zR4yCGYEqn)%Um|8xzjcW%h8J8>N)-X`2EiNKJWYesGowxoN(>-Il&t{nD@_r^|1_2kyIg_lOtW#nAa3*kH}db^2p%$`P=wf>#a; zZdmc=Mjw1>IluXxNNLy5zSso^(oV^HNv6mK2D633#W3ml^PPLY;g`e{CWT4yVxg!s zIFzR(mvHK7R1m41pmRDWS)z)_8tn``_x*ae-F9Zu;AF^{u?ag|@jA(01d^s>a z+kSUOSjd6Fv?B~}Be6~@Dynbh3s4Leiv_CS7T8816BDJ2)xA5&W>8mS6U&NjOmG2~ z3RqJu-yCRAdagEz+||!Q7C;rV-K;T2xW+t_ei+PRG@!U#GBJ1AdtvLEL^?cYuGws* zJh&25yXN$iHcMQQ?)TzNnDE64J8Dekiw7Q3ld)T>x+WOkz^h>P(Uf`HYSs_W{LpzV z4-t4@_utZd>Uy)*clwypqlO2@6$k6XbLH)wos*Vl>iUgOP);PKF?>SQ61LZe)UI(D z6RndL-mU1Kam=a#2a<7e8OZQ*5n3Fu_{^tFhVa&#cY@0g`o&Q;R zHLbLaL?^G(IdkTb?Z>YCt_H1Y5c37$ANa0fy$V&-FvY7I6L_omYW%||6Z%;pP}0cF zNWVpwQDq&G8RIdQHNB3v?3)Y2W>`eRy^-?9Gk*$O;w;xe<;JUb(Ge9)x$4TY)u6$A zi|dM@m#Nzbg1RrfmO^Mr**}893W8FK zirmgJzcV5zQ$W{^+lD${RD_?UdZ+{4f7ODTEiH=V0Cky$+GOg|w!EZtS>4XU|1g6ADCj$Gr9^?|Zc`dR0w^xP$yhkvCA>^|0IkT1jE zgMHk%DeX%;S=!l+K{K<)Fw54DueYtYjxd|266jh_lc$D_1PM^Io@%^NHqnN1-;t8x zZ55i8o)?xA@ zLyb>XRnz{E(?i74VV66LG^=iN550Q-@pMqeUz6mkcQYI=BGeD4&dGXz{mj>ClY_t! zYmO9O+=Y!54U5!YV)2u!Z$Y&wtv|)w4{a3^Ixk&gu|-SQq-6hVo~Pge7sk`ek1zR+ zZQ`CkYOZVAN{kQT)}3iLE_#6wJPM6QIN8_;q-jRgAAxrm(V`UGlr->t=VSXkVZLwq zxn^PR>!we+K0_m3o@_^T*-Za=#{Z%FHD!}bi{y7Or>;&B!i9=D98{=zbBPaYS%aGnfJD0VhH;A*h7l#$ELekD~Ibb|qk)$Iht2i|xv>~8;95}4D?Cdcle-rf z=VxlCs89b(O`UlOFF5#2A4k-?c;wr6+nqgV2W`^}{7z}@gZVr^6R=4V)0P9f3?5O~ zjee(wPIp;f&LPH*wFhdnuwzvCD~|WDKoi_JUHvT8d0O2E8pom8U3`!NVMk9?Hh)ib z)(fe!M83`LspFyFLMej6Cx^A5duvEx0DSu)*tDIC+4gSa#!IChIlDeyWy}Vq>cg-v z*_TLMc{N$R3Al&_>Hz$s9#3Mqv`90{ z##|#5j~f+2>RjGGxm6fw^(ne>N0<`n<4$Y~_MPRhdTd4NwvaW~DN7?^61{4K2Y59Ok!DH{g)xNpe_e|t0wi;x(`)JT!m9!>u! zS>_g>#Z}!JJ9 - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src Directory Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Src Directory Reference
-
-
-
Directory dependency graph for Src:
-
-
- - - - - - - - - - - - -

-Files

 
__general_flash.c
 
general_gpio.c
 Модуль для инициализации портов и работы с ними.
 
general_spi.c
 Модуль для инициализации SPI.
 
general_tim.c
 Модуль для инициализации таймеров и работы с ними.
 
general_uart.c
 Модуль для инициализации UART.
-
-
- -
- - - - diff --git a/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887.js b/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887.js deleted file mode 100644 index d52061a..0000000 --- a/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887.js +++ /dev/null @@ -1,8 +0,0 @@ -var dir_3d5e348fed410a00f9c665596ca3b887 = -[ - [ "__general_flash.c", "____general__flash_8c_source.html", null ], - [ "general_gpio.c", "general__gpio_8c.html", "general__gpio_8c" ], - [ "general_spi.c", "general__spi_8c.html", "general__spi_8c" ], - [ "general_tim.c", "general__tim_8c.html", "general__tim_8c" ], - [ "general_uart.c", "general__uart_8c.html", "general__uart_8c" ] -]; \ No newline at end of file diff --git a/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.map b/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.map deleted file mode 100644 index c04dafa..0000000 --- a/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.md5 b/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.md5 deleted file mode 100644 index 141ffab..0000000 --- a/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -5cc6d7a2540515568af57b2a10316ffd \ No newline at end of file diff --git a/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.png b/Doc/html/dir_3d5e348fed410a00f9c665596ca3b887_dep.png deleted file mode 100644 index 67968d4704f64a6f3ab7a916d7f80a3229868865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1958 zcmY*adpr|*8(-uS&0H&FbGLUVDx`~(+b&8@&8^N!h&bfdQEWEMp(OKh$!&;i<}!0j zn%tH;wu^E*GFrf|+fYv@7;G zl$k2!WM|*M?uR{vco9>UR#H-ule%W0t9#tk*ek{0ZG3%B4$Om$LZO<1t>5HtUT5ab zi%BiZ8Bdcg6p=)q7zgE-X5;O%hhwp3EQHVr2!tHp_*??Yvz5;@1$y5*?+Vb6QwZ6q zLeEnS$8W9gD$F)C&{PP=U@$QOO&9799*PXX)g5E1>%+lrleIc>v-HaUjJ$V?vgY~e zaL+?NYsFUx9D2VfF(Bjq8!>?&k#|?u@%3vbCg9KIbyiI?xy)eq+6m|KKqXrB+4ed{&| z$2YV!24oSsC4E5s-X>TUvc5#9r(co#*h1jutrhYTiM!g?;bZgy@v9Nf~QR7%db0=yXiJPTQV$~1Zdif8k>W3t}7Sp0$XjB8U zX3gpI=wizva7i7t6f8b~sk=;W;PS8yFYz4Xa1XJ=-k zOBPYVUbVxl4{xb8T@<2}LWaH4WzFEBzK$F9^`Kzf`=##}q%b_8w-=j=?;Qk$T zW1&A_pRu>5EF&T--vU0Z797S85 zW#Q=y((x%n2LF(#k1#=ls;e#<(k%;0_l(1zo%oi%F&d3LsqJl6Y6qQ!XJwrWle%U# zCOdaOjGV1NXEaQ}Ev^1I!u~jYgteM>qo!*lcKu1WVmxf6I~IZ;i#=M3q7R|3ylWmD zd9YYP{_=Jqj~lf)T~0ko7ZdM@@SEdYTT7o54ryLTEU^6C&9Qo%%)mD8RVliqSy?M<$3_rDOgT4B<&#ay;o+oUqMj$0Gam1ls}Ee_f#u+|P`d z!?a6;HVSg0n>c9B{aV$BQC=U4C;4rAI_)feAr+y>-|r8#JS5)H?Eb{?`XS%2$l6k6 zDcZq*V2>#zw?ur;?@d>hlL7_I>bv2qDp{Ce1vc|EaB;5wqbE2XARpJ8_ORxBNmKtb zcfNbN-mg;1T$tfKQtGTJqjj**&(GZ@%?Q22y1Z$DFC?}SiePG3WmmGx?#2GhR)Pzx z-FVaM`>Cr&Xd|^?iRX`wa51nQ-G|xiN^_1v-`79W8-rL2Elwb& z;%P9oV3kp}!RPtnM`SSUY3~Yz-bPwlD9U7m=?v1m__5^7cXjD14-S1{E=-M?__oD; z$5=mAXK;5jnXjeMVvW}G)P-u?B`F5v-=F&ReYE%b;-}D>F7$=10;Ru6>LF|KIGl0| z52eX?G9YRpjQO1c{>|Zn9HII#T!R36>_BuVt)YMuz%)IAYY4CsbZdP|?%_6O<7og7 zxJ$8JrAz{3f6RM13Ag9pza^Sju_9tOX3Bv^LcMSkIkQ3vO=@@la{tY3V*W)uC diff --git a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.html b/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.html deleted file mode 100644 index 00ae9de..0000000 --- a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General Directory Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
STM32_General Directory Reference
-
-
-
Directory dependency graph for STM32_General:
-
-
- - - - - -

-Directories

 
Inc
 
Src
-
-
- -
- - - - diff --git a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.js b/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.js deleted file mode 100644 index b68ca24..0000000 --- a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520.js +++ /dev/null @@ -1,5 +0,0 @@ -var dir_57feeba75fefbd1a9c832b76e3bce520 = -[ - [ "Inc", "dir_2cad7b5fa94233a09111fd73c6202518.html", "dir_2cad7b5fa94233a09111fd73c6202518" ], - [ "Src", "dir_3d5e348fed410a00f9c665596ca3b887.html", "dir_3d5e348fed410a00f9c665596ca3b887" ] -]; \ No newline at end of file diff --git a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.map b/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.map deleted file mode 100644 index f249082..0000000 --- a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.md5 b/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.md5 deleted file mode 100644 index f3faf62..0000000 --- a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -00df5832c3671ec71ddedfed2e441e5b \ No newline at end of file diff --git a/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.png b/Doc/html/dir_57feeba75fefbd1a9c832b76e3bce520_dep.png deleted file mode 100644 index c35bb5830862751b04d11432d02fc40bb9bf8cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2600 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
 SEGGER_RTT.c
 SEGGER_RTT.h -
 SEGGER_RTT_Conf.h
 SEGGER_RTT_printf.c
 SEGGER_RTT_Syscalls_KEIL.c diff --git a/Doc/html/dir_7de012165f681bf20d3995ae88f6551e.js b/Doc/html/dir_7de012165f681bf20d3995ae88f6551e.js index 6a54da8..b3355b8 100644 --- a/Doc/html/dir_7de012165f681bf20d3995ae88f6551e.js +++ b/Doc/html/dir_7de012165f681bf20d3995ae88f6551e.js @@ -2,7 +2,6 @@ var dir_7de012165f681bf20d3995ae88f6551e = [ [ "SEGGER_RTT.c", "_s_e_g_g_e_r___r_t_t_8c_source.html", null ], [ "SEGGER_RTT.h", "_s_e_g_g_e_r___r_t_t_8h_source.html", null ], - [ "SEGGER_RTT_Conf.h", "_s_e_g_g_e_r___r_t_t___conf_8h_source.html", null ], [ "SEGGER_RTT_printf.c", "_s_e_g_g_e_r___r_t_t__printf_8c_source.html", null ], [ "SEGGER_RTT_Syscalls_KEIL.c", "_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html", null ] ]; \ No newline at end of file diff --git a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html index 4ffefe9..295a9a3 100644 --- a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html +++ b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.html @@ -119,12 +119,8 @@ Files  Заголочный файл для дефайнов битового доступа.
 gen_optimizer.h  Заголовочный файл для адаптивного подбора параметров
-
 mylibs_config.h - Конфигурации для библиотек MyLibs.
 mylibs_defs.h  Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
 mylibs_include.h - Заголочный файл для всех библиотек
 trace.h  Заголочный файл для работы с трассировкой.
 trackers.h diff --git a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js index a702be5..b8b5f2e 100644 --- a/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js +++ b/Doc/html/dir_8eb68c124db7670c3cb56141b10519ea.js @@ -1,11 +1,9 @@ var dir_8eb68c124db7670c3cb56141b10519ea = [ - [ "bench_time.h", "bench__time_8h.html", "bench__time_8h" ], + [ "bench_time.h", "bench__time_8h.html", null ], [ "bit_access.h", "bit__access_8h.html", "bit__access_8h" ], - [ "gen_optimizer.h", "gen__optimizer_8h.html", "gen__optimizer_8h" ], - [ "mylibs_config.h", "mylibs__config_8h.html", "mylibs__config_8h" ], + [ "gen_optimizer.h", "gen__optimizer_8h.html", null ], [ "mylibs_defs.h", "mylibs__defs_8h.html", "mylibs__defs_8h" ], - [ "mylibs_include.h", "mylibs__include_8h.html", null ], [ "trace.h", "trace_8h.html", "trace_8h" ], [ "trackers.h", "trackers_8h.html", "trackers_8h" ] ]; \ No newline at end of file diff --git a/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.map b/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.map deleted file mode 100644 index 3ea513c..0000000 --- a/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.md5 b/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.md5 deleted file mode 100644 index f0b5df3..0000000 --- a/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -0bfaa81751ac1e7c7d71433f3f44b7e3 \ No newline at end of file diff --git a/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.png b/Doc/html/dir_d4b2573a0c19afb61452cc3d00967af1_dep.png deleted file mode 100644 index 81935bc173a48ec6dfed805e24489a2f703096e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1730 zcmZWq3oskl8jgnCh(~EXf@)K=Dz+L{+HI7E*qcOp)0E)Wqp`HL8oexu$I^NfU1h1D z&DLW@62e-ku2`Z$szn!RSBN%RjK@t{!cwn_*2dhO*}Jpn%=yp%nE#vqKl9Cha!Ew2 z0mKpl000c|IB#Fg-J?0#V30-v0&jk=k)Ut_)*Gs^{~(5bu6i>fZd**JT3W#>NdjPPRH;YgTjJCDrWW<3?oIn35C*m^}unYN=*Rn{$k z7)uWr%A5T3s|>K-H=fjny5nevHF`*igY?bzcw2l*q+~_1UVM9{L-OHn<%GLppu}_6 zPDTH>5KpaOInYC z&?BlUx%-`Oxi8HeK1ykF$*XxjnXr&_f~L!Gf%Gh!I<7wNF1+}wiRCMaHOrCtm<&M} z>35+K0H7G4uMPaez#LwTfIVEFNWs>2yob{)nhevfpQ7pJ8t3n8yY|%O_4*{6)z4&g zE@n!$l5A)erU#)XqIuNK4Z-1^uE!J}mfnqYJk9(Z_#U zL?tQOabGE`J6c-a?O@1L=I_4X|EM}uKWB`&=W)fG-e;$<69wK;3?lJvDdU)f&f#{x zC~iL$5xZB6;~CfZw$?4w`VI}+Cxk?vi6aIjhsM^9fc1XMfjT!7T-7;pML4YVs}uEJ z|IQ2~gKCu~bi|F}$8u2tjiQIytmgPYVMStmI9z8q=yd_K^vId`JTK;qFo8}ofA+ydm~XMEcFJ;Mg=^blHClaVOyJ?G$e+jSmRM=C zSbpTtcnAg&H#K-QCQ?4$BGp^n60wDyS5HY36c8CSJtGY8C-NVLOY(u~t+t=eyWaTP zC8k31z1t55w*!?vnSFLpY$1*CR#NRSoSQNpRLjN+kt@^~rEg{!TnFk~2$i(?jjIRG zo81t`@n#oB4urU;ER(C$6bOw1lgsumQr<+p`o{r3hrhAoFH`}F(eU7uhr2^DNMn8S zCyT7xU=X}n(5o&Sbu$+hT(O1naJE@qHqi9k|5d-y9IxaScL*-wq%uQW#y!sGeCu~V zn=W=n6g5W2Bt{^QA^@3M$nDz3qRZ|9!U=-4?cm!Za^%|B{X4kL_JomaF&VNZg~n`9!p$vzo>K@BNOPJ4ML46Q!V+RrF(<0}O>q%T%=ubpeJ ze`Et?&Iq2l4gO?!GHT$Yb(?Wj4jKW&TT*yzM&tS3hpx{EYHEltNgK%EyjCrIUA*$$ z#YSXKuQ{()hRpUxATD{KVEp%o+Oe~=*u-`!Z+ny(7WT_f@Cvv5qr*#g%3hQarz#x` zs@Z8L4#k^#QzGq}b$n|OK!#}pr5n0*A3tfGak6SoKHr0pnd}mGxmwSy3OJ`@qMc&* zqM#2dNt*0<2|@0NU*5bnI=y*3+Vcw|{eej?5zmlTT6so&rVad*){uCbfRd8IIN&d< z$1?qI+?C;iEH!UFm%7?L^6dJ`=5E#;PsiTcWsSAx!du1)O^Lc~9XXSp#w&T$=T}Cf zpY0YYO5OB?yQxe4$C$nUj`%yjlG<88@}S_$^H$J(1*a}o_-&x-Kk(LW@$=m7JdWn` zTjJ8rmcpR^W~<%s`D3cqbEjXlCQL~j<~8v(b>9P9nN^MN$vva^NNEOp7YQ7)-#8x) zSMdVu8*bXSAa9v`ELk|_aRL66J}VjA<5vfFR6Q3c`ve`7rEAkQIb14>ha?ZpHK-bl z@-6S1bwyogKA~o}8WwS;2Wl|f(5zY!Wr;3;pv1f;4&T*Z8og+}?h`0~^RGjrBjKSK zM18}4nbwo~(6eT2uYFXwzriOR3TA5*xsAv;ZgP(AaVR + + + - @@ -31,19 +33,8 @@ - - - - - - - - - - - @@ -68,13 +59,6 @@ - - - - - - - @@ -109,15 +93,15 @@ - - + + @@ -151,52 +135,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Doc/html/files.html b/Doc/html/files.html index 5751d97..ef988cd 100644 --- a/Doc/html/files.html +++ b/Doc/html/files.html @@ -107,18 +107,17 @@ $(function(){initNavTree('files.html','',''); });  
bench_time.hЗаголовочный файл для измерения времени между событиями  
bit_access.hЗаголочный файл для дефайнов битового доступа  
gen_optimizer.hЗаголовочный файл для адаптивного подбора параметров - 
mylibs_config.hКонфигурации для библиотек MyLibs - 
mylibs_defs.hЗаголочный файл для дефайнов библиотеки MyLibsGeneral - 
mylibs_include.hЗаголочный файл для всех библиотек - 
trace.hЗаголочный файл для работы с трассировкой - 
trackers.hЗаголочный файл для работы с трекерами Trackers defines + 
mylibs_defs.hЗаголочный файл для дефайнов библиотеки MyLibsGeneral + 
trace.hЗаголочный файл для работы с трассировкой + 
trackers.hЗаголочный файл для работы с трекерами Trackers defines  
RTT  
SEGGER_RTT.c  
SEGGER_RTT.h - 
SEGGER_RTT_Conf.h - 
SEGGER_RTT_printf.c - 
SEGGER_RTT_Syscalls_KEIL.c - 
mainpage.h + 
SEGGER_RTT_printf.c + 
SEGGER_RTT_Syscalls_KEIL.c + 
__mylibs_config.h + 
__mylibs_include.h + 
__SEGGER_RTT_Conf.h
diff --git a/Doc/html/files_dup.js b/Doc/html/files_dup.js index 18770e7..19fed13 100644 --- a/Doc/html/files_dup.js +++ b/Doc/html/files_dup.js @@ -2,5 +2,7 @@ var files_dup = [ [ "MyLibs", "dir_d4b2573a0c19afb61452cc3d00967af1.html", "dir_d4b2573a0c19afb61452cc3d00967af1" ], [ "RTT", "dir_7de012165f681bf20d3995ae88f6551e.html", "dir_7de012165f681bf20d3995ae88f6551e" ], - [ "mainpage.h", "mainpage_8h_source.html", null ] + [ "__mylibs_config.h", "____mylibs__config_8h_source.html", null ], + [ "__mylibs_include.h", "____mylibs__include_8h_source.html", null ], + [ "__SEGGER_RTT_Conf.h", "_____s_e_g_g_e_r___r_t_t___conf_8h_source.html", null ] ]; \ No newline at end of file diff --git a/Doc/html/functions.html b/Doc/html/functions.html index 3ee40b9..70476ef 100644 --- a/Doc/html/functions.html +++ b/Doc/html/functions.html @@ -97,81 +97,10 @@ $(function(){initNavTree('functions.html','',''); });
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- c -

- - -

- d -

diff --git a/Doc/html/functions_vars.html b/Doc/html/functions_vars.html index 9705c4e..f6d9ca3 100644 --- a/Doc/html/functions_vars.html +++ b/Doc/html/functions_vars.html @@ -97,81 +97,10 @@ $(function(){initNavTree('functions_vars.html','',''); });
-
Here is a list of all documented variables with links to the class documentation for each member:
- -

- c -

- - -

- d -

diff --git a/Doc/html/gen__optimizer_8h.html b/Doc/html/gen__optimizer_8h.html index 37c8113..2aae507 100644 --- a/Doc/html/gen__optimizer_8h.html +++ b/Doc/html/gen__optimizer_8h.html @@ -112,28 +112,15 @@ $(function(){initNavTree('gen__optimizer_8h.html','',''); }); -
This graph shows which files directly or indirectly include this file:
-
-
-
@@ -142,27 +129,13 @@ $(function(){initNavTree('gen__optimizer_8h.html','',''); });

Classes

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

Macros

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

-Functions

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

Detailed Description

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

diff --git a/Doc/html/gen__optimizer_8h.js b/Doc/html/gen__optimizer_8h.js deleted file mode 100644 index 185eddf..0000000 --- a/Doc/html/gen__optimizer_8h.js +++ /dev/null @@ -1,10 +0,0 @@ -var gen__optimizer_8h = -[ - [ "PARAM_SCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ], - [ "PARAM_UNSCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ], - [ "GEN_MUTATION_MIN_PCT", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068", null ], - [ "GEN_MUTATION_MAX_PCT", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd", null ], - [ "ELOVLE_N_ELITE_CANDIDATE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb", null ], - [ "GenOptimizer_Init", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a", null ], - [ "GenOptimizer_Step", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628", null ] -]; \ No newline at end of file diff --git a/Doc/html/gen__optimizer_8h__dep__incl.map b/Doc/html/gen__optimizer_8h__dep__incl.map deleted file mode 100644 index e1b72cb..0000000 --- a/Doc/html/gen__optimizer_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/gen__optimizer_8h__dep__incl.md5 b/Doc/html/gen__optimizer_8h__dep__incl.md5 deleted file mode 100644 index 97ddeca..0000000 --- a/Doc/html/gen__optimizer_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fa6984be068ceba2f84b4d7dac29999f \ No newline at end of file diff --git a/Doc/html/gen__optimizer_8h__dep__incl.png b/Doc/html/gen__optimizer_8h__dep__incl.png deleted file mode 100644 index 464407039196d09a9b4db2163af437cc257cd755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2990 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 - - - - - - - - - - - + + + + + + + + + diff --git a/Doc/html/gen__optimizer_8h__incl.md5 b/Doc/html/gen__optimizer_8h__incl.md5 index bb56e4a..af9f6b9 100644 --- a/Doc/html/gen__optimizer_8h__incl.md5 +++ b/Doc/html/gen__optimizer_8h__incl.md5 @@ -1 +1 @@ -bb89a721db07d8400fff4b498938e680 \ No newline at end of file +cd35cb5867481489f94cce70c426a646 \ No newline at end of file diff --git a/Doc/html/gen__optimizer_8h__incl.png b/Doc/html/gen__optimizer_8h__incl.png index 9154bad32442e45b19eb95e85d9a8aed3de89749..36ed18708a9da588ec0af14ccfd118a7231a7cc8 100644 GIT binary patch literal 5163 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 literal 6234 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 L3;|*9*oXZaSK#^6 diff --git a/Doc/html/gen__optimizer_8h_source.html b/Doc/html/gen__optimizer_8h_source.html index 08318cc..3352fc6 100644 --- a/Doc/html/gen__optimizer_8h_source.html +++ b/Doc/html/gen__optimizer_8h_source.html @@ -171,18 +171,14 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
69/**
70 * @brief Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
71 */
-
-
72#define PARAM_SCALE(x, min_val, max_val) \
+
72#define PARAM_SCALE(x, min_val, max_val) \
73(((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))
-
74
75/**
76 * @brief Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]
77 */
-
-
78#define PARAM_UNSCALE(val, min_val, max_val) \
+
78#define PARAM_UNSCALE(val, min_val, max_val) \
79(((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
-
80
81#ifndef local_time
82#define local_time() HAL_GetTick() ///< Локальное время
@@ -191,39 +187,37 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
85
86
87#ifndef GEN_MUTATION_MIN_PCT
-
88#define GEN_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss)
+
88#define GEN_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss)
89#endif
90#ifndef GEN_MUTATION_MAX_PCT
-
91#define GEN_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss)
+
91#define GEN_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss)
92#endif
93#ifndef ELOVLE_N_ELITE_CANDIDATE
-
94#define ELOVLE_N_ELITE_CANDIDATE 2 ///< Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
+
94#define ELOVLE_N_ELITE_CANDIDATE 2 ///< Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
95#endif
96
97
98/**
99 * @brief Структура эволюционного оптимизатора
100 */
-
-
101typedef struct {
-
102 float stability; ///< Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)
+
101typedef struct {
+
102 float stability; ///< Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)
103
-
104 uint16_t n_params; ///< Количество параметров
-
105 uint16_t n_cand; ///< Количество кандидатов в популяции
-
106 uint16_t n_best; ///< Количество лучших, усредняемых
-
107 float mutation_amp; ///< Амплитуда мутации (0..1)
+
104 uint16_t n_params; ///< Количество параметров
+
105 uint16_t n_cand; ///< Количество кандидатов в популяции
+
106 uint16_t n_best; ///< Количество лучших, усредняемых
+
107 float mutation_amp; ///< Амплитуда мутации (0..1)
108
-
109 uint16_t cand_index; ///< Индекс текущего кандидата
-
110 uint16_t gen_index; ///< Индекс популяции
+
109 uint16_t cand_index; ///< Индекс текущего кандидата
+
110 uint16_t gen_index; ///< Индекс популяции
111
112 //INTERNAL
-
113 float gen_mut; ///< Амплитуда мутации у текущей популяции
+
113 float gen_mut; ///< Амплитуда мутации у текущей популяции
114
-
115 float loss[GEN_MAX_CANDIDATES]; ///< Loss для каждого кандидата
-
116 float candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]; ///< Параметры кандидатов
-
117 uint16_t sorted_idx[GEN_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
+
115 float loss[GEN_MAX_CANDIDATES]; ///< Loss для каждого кандидата
+
116 float candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]; ///< Параметры кандидатов
+
117 uint16_t sorted_idx[GEN_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
-
119
120
121
@@ -236,9 +230,9 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
128
129// функция условия сортировки
130static int cmp_idx(const void *a, const void *b) {
-
131 if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b])
+
131 if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b])
132 return -1;
-
133 if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b])
+
133 if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b])
134 return 1;
135 return 0;
136}
@@ -259,8 +253,7 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
151 * @return 0 — если окей,
152 * -1 — если ошибка
153 */
-
- +
154static int GenOptimizer_Init(GenOptimizer_t* opt,
155 uint16_t n_params,
156 uint16_t n_cand,
157 uint16_t n_best,
@@ -272,24 +265,24 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
163
164 if(n_params > GEN_MAX_PARAMS)
165 return -1;
-
166 opt->n_params = n_params;
+
166 opt->n_params = n_params;
167
168 if(n_cand > GEN_MAX_CANDIDATES)
169 return -1;
-
170 opt->n_cand = n_cand;
+
170 opt->n_cand = n_cand;
171
172 if(n_best > GEN_MAX_CANDIDATES/2)
173 return -1;
-
174 opt->n_best = n_best;
+
174 opt->n_best = n_best;
175
176
177 if((mutation_amp > 1) || (mutation_amp < 0))
178 return -1;
179 if(mutation_amp <= 0.001f)
180 mutation_amp = 0.001f;
-
181 opt->mutation_amp = mutation_amp;
+
181 opt->mutation_amp = mutation_amp;
182
-
183 uint32_t seed = local_time();
+
183 uint32_t seed = local_time();
184#ifdef ADC1
185 seed += (ADC1->DR & 0xFF);
186#endif
@@ -301,18 +294,17 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
192 float base = start_params[j];
193 float inv_randmax = 1.0f / (float)RAND_MAX;
194 float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * mutation_amp;
-
195 opt->candidates[i][j] = base + noise;
-
196 if (opt->candidates[i][j] < 0.0f) opt->candidates[i][j] = 0.0f;
-
197 if (opt->candidates[i][j] > 1.0f) opt->candidates[i][j] = 1.0f;
+
195 opt->candidates[i][j] = base + noise;
+
196 if (opt->candidates[i][j] < 0.0f) opt->candidates[i][j] = 0.0f;
+
197 if (opt->candidates[i][j] > 1.0f) opt->candidates[i][j] = 1.0f;
198 }
-
199 opt->loss[i] = 0.0f;
+
199 opt->loss[i] = 0.0f;
200 }
201
-
202 opt->cand_index = 0;
-
203 opt->gen_index = 0;
+
202 opt->cand_index = 0;
+
203 opt->gen_index = 0;
204 return 0;
205}
-
206
207
208/**
@@ -331,51 +323,50 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
221 * @note Функция использует глобальную внутреннюю переменную для сортировки.
222 * Надо убедится что только один экземпляр функции запущен в момент времени
223 */
-
- +
224static int GenOptimizer_Step(GenOptimizer_t* opt,
225 float* params,
226 float loss)
227{
228 if((opt == NULL) || (params == NULL))
229 return -1;
230
-
231 uint16_t n_params = opt->n_params;
+
231 uint16_t n_params = opt->n_params;
232 if(n_params > GEN_MAX_PARAMS)
233 return -1;
234
-
235 uint16_t n_cand = opt->n_cand;
+
235 uint16_t n_cand = opt->n_cand;
236 if(n_cand > GEN_MAX_CANDIDATES)
237 return -1;
238
-
239 uint16_t n_best = opt->n_best;
+
239 uint16_t n_best = opt->n_best;
240 if(n_best > GEN_MAX_CANDIDATES/2)
241 return -1;
242
-
243 float mut = opt->mutation_amp;
+
243 float mut = opt->mutation_amp;
244 if((mut > 1) ||(mut < 0))
245 return -1;
246
247 // 1. Сохраняем loss текущего кандидата
-
248 opt->loss[opt->cand_index] = loss;
-
249 opt->cand_index++;
+
248 opt->loss[opt->cand_index] = loss;
+
249 opt->cand_index++;
250
-
251 if (opt->cand_index >= n_cand) {
+
251 if (opt->cand_index >= n_cand) {
252 // 2. Сортируем текущее поколение по loss
-
253 for(uint16_t i = 0; i < opt->n_cand; i++)
-
254 opt->sorted_idx[i] = i;
+
253 for(uint16_t i = 0; i < opt->n_cand; i++)
+
254 opt->sorted_idx[i] = i;
255
256 g_sort_opt = opt;
-
257 qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx);
+
257 qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx);
258 g_sort_opt = NULL;
259
260 // --- Адаптивная мутация в зависимости от Loss ---
-
261 float best_loss = opt->loss[opt->sorted_idx[0]];
-
262 float worst_loss = opt->loss[opt->sorted_idx[opt->n_cand - 1]];
+
261 float best_loss = opt->loss[opt->sorted_idx[0]];
+
262 float worst_loss = opt->loss[opt->sorted_idx[opt->n_cand - 1]];
263 float diff = worst_loss - best_loss;
264
265 float sum_loss = 0.0f;
266 for (uint16_t i = 0; i < n_cand; i++)
-
267 sum_loss += opt->loss[i];
+
267 sum_loss += opt->loss[i];
268 float avg_loss = sum_loss / (float)n_cand;
269
270
@@ -386,49 +377,49 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
275 // Записываем стабильность популяции в структуру
276 if(diff < 0.0f) diff = 0.0f;
277 if(diff > 1.0f) diff = 1.0f;
-
278 opt->stability = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));
-
279 if(opt->stability < 0.0f) opt->stability = 0.0f;
-
280 if(opt->stability > 1.0f) opt->stability = 1.0f;
+
278 opt->stability = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));
+
279 if(opt->stability < 0.0f) opt->stability = 0.0f;
+
280 if(opt->stability > 1.0f) opt->stability = 1.0f;
281
-
282 float mut_pct = GEN_MUTATION_MIN_PCT +
- +
282 float mut_pct = GEN_MUTATION_MIN_PCT +
+
283 (GEN_MUTATION_MAX_PCT - GEN_MUTATION_MIN_PCT) * loss_ratio;
284 float adaptive_mut = mut * (mut_pct / 100.0f);
285 if (adaptive_mut < 0.0001f) adaptive_mut = 0.0001f;
-
286 opt->gen_mut = adaptive_mut;
+
286 opt->gen_mut = adaptive_mut;
287
288 // 3. Генерируем новое поколение
-
289 uint16_t n_elite = ELOVLE_N_ELITE_CANDIDATE;
+
289 uint16_t n_elite = ELOVLE_N_ELITE_CANDIDATE;
290 for (uint16_t c = 0; c < n_cand; c++) {
291 if (c < n_elite) {
292 for (uint16_t i = 0; i < n_params; i++)
-
293 opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i];
-
294 opt->loss[c] = 0.0f;
+
293 opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i];
+
294 opt->loss[c] = 0.0f;
295 } else {
296 for (uint16_t i = 0; i < n_params; i++) {
297 float inv_randmax = 1.0f / (float)RAND_MAX;
298 float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * adaptive_mut;
-
299 uint16_t parent = opt->sorted_idx[rand() % opt->n_best];
-
300 opt->candidates[c][i] = opt->candidates[parent][i] + noise;
-
301 if (opt->candidates[c][i] < 0.0f) opt->candidates[c][i] = 0.0f;
-
302 if (opt->candidates[c][i] > 1.0f) opt->candidates[c][i] = 1.0f;
+
299 uint16_t parent = opt->sorted_idx[rand() % opt->n_best];
+
300 opt->candidates[c][i] = opt->candidates[parent][i] + noise;
+
301 if (opt->candidates[c][i] < 0.0f) opt->candidates[c][i] = 0.0f;
+
302 if (opt->candidates[c][i] > 1.0f) opt->candidates[c][i] = 1.0f;
303 }
-
304 opt->loss[c] = 0.0f;
+
304 opt->loss[c] = 0.0f;
305 }
306 }
-
307 opt->cand_index = 0;
-
308 opt->gen_index++;
+
307 opt->cand_index = 0;
+
308 opt->gen_index++;
309 }
310
311 // 4. Возвращаем параметры следующего кандидата
-
312 for (uint16_t i = 0; i < opt->n_params; i++)
-
313 params[i] = opt->candidates[opt->cand_index][i];
+
312 for (uint16_t i = 0; i < opt->n_params; i++)
+
313 params[i] = opt->candidates[opt->cand_index][i];
314
315 return 0;
316}
-
317#else // GEN_OPTIMIZATION_ENABLE
318//заглушки
-
319typedef struct {
+
+
319typedef struct {
320 uint16_t n_params;
321 uint16_t n_cand;
322 uint16_t n_best;
@@ -436,6 +427,7 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
324 float loss[0];
325 float candidates[0][0];
+
327#define GenOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)
328#define GenOptimizer_Step(opt, params, LossFunc)
329#define PARAM_SCALE(x, min_val, max_val) (x)
@@ -447,27 +439,11 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
335/** GEN_OPTIMIZER
336 * @}
337 */
-
#define GEN_MAX_CANDIDATES
Максимальное количество кандидатов для обучения
-
#define GEN_MAX_PARAMS
Максимальное количество параметров
-
static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
Инициализация эволюционного оптимизатора.
-
#define ELOVLE_N_ELITE_CANDIDATE
Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
-
#define GEN_MUTATION_MIN_PCT
Минимальная мутация (в процентах от Loss)
-
#define GEN_MUTATION_MAX_PCT
Максимальная мутация (в процентах от Loss)
-
static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)
Один шаг эволюционного оптимизатора.
-
#define local_time()
Локальное время
+
#define GEN_MAX_CANDIDATES
Максимальное количество кандидатов для обучения
+
#define GEN_MAX_PARAMS
Максимальное количество параметров
+
#define local_time()
Локальное время
Definition trace.h:97
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура эволюционного оптимизатора
-
uint16_t cand_index
Индекс текущего кандидата
-
uint16_t sorted_idx[GEN_MAX_CANDIDATES]
Индексы отсортированных кандидатов
-
uint16_t n_best
Количество лучших, усредняемых
-
uint16_t gen_index
Индекс популяции
-
uint16_t n_cand
Количество кандидатов в популяции
-
float stability
Коэффициент насколько стабильная популяция (0..1)(n_cand)
-
float gen_mut
Амплитуда мутации у текущей популяции
-
float mutation_amp
Амплитуда мутации (0..1)
-
float loss[GEN_MAX_CANDIDATES]
Loss для каждого кандидата
-
float candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]
Параметры кандидатов
-
uint16_t n_params
Количество параметров
+
diff --git a/Doc/html/general__gpio_8c.html b/Doc/html/general__gpio_8c.html deleted file mode 100644 index b02741e..0000000 --- a/Doc/html/general__gpio_8c.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_gpio.c File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_gpio.c File Reference
-
-
- -

Модуль для инициализации портов и работы с ними. -More...

-
#include "general_gpio.h"
-
Include dependency graph for general_gpio.c:
-
-
- -
-

Go to the source code of this file.

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

-Functions

HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef *GPIOx)
 Включить тактирование порта GPIO.
HAL_StatusTypeDef GPIO_LED_Init (GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)
 Инициализировать светодиод (структуру светодиода)
HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led)
 Включить светодиод
HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led)
 Выключить светодиод
HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
 Выставить светодиод по переменной
HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
HAL_StatusTypeDef GPIO_LED_Fading_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
void GPIO_LED_Dynamic_Handle (GPIO_LEDTypeDef *led)
 Управление динамическими режимами свечения светодиода
HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)
 Инициализировать кнопку (структуру кнопки)
int GPIO_Read_Switch (GPIO_SwitchTypeDef *sw)
 Считать состоянии кнопки
-

Detailed Description

-

Модуль для инициализации портов и работы с ними.

-

Реализация функций для работы с GPIO:

    -
  • Включение тактирования портов
  • -
  • Инициализация светодиодов и кнопок
  • -
  • Управление светодиодами: включение, выключение, моргание, плавное затухание
  • -
  • Чтение состояния кнопок с фильтром от дребезга
  • -
- -

Definition in file general_gpio.c.

-
-
- -
- - - - diff --git a/Doc/html/general__gpio_8c.js b/Doc/html/general__gpio_8c.js deleted file mode 100644 index 10e5599..0000000 --- a/Doc/html/general__gpio_8c.js +++ /dev/null @@ -1,13 +0,0 @@ -var general__gpio_8c = -[ - [ "GPIO_Clock_Enable", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6", null ], - [ "GPIO_LED_Init", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084", null ], - [ "GPIO_LED_On", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c", null ], - [ "GPIO_LED_Off", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357", null ], - [ "GPIO_LED_Set", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2", null ], - [ "GPIO_LED_Blink_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9", null ], - [ "GPIO_LED_Fading_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a", null ], - [ "GPIO_LED_Dynamic_Handle", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2", null ], - [ "GPIO_Switch_Init", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ], - [ "GPIO_Read_Switch", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__gpio_8c__incl.map b/Doc/html/general__gpio_8c__incl.map deleted file mode 100644 index 27c52b4..0000000 --- a/Doc/html/general__gpio_8c__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/Doc/html/general__gpio_8c__incl.md5 b/Doc/html/general__gpio_8c__incl.md5 deleted file mode 100644 index 9d6736f..0000000 --- a/Doc/html/general__gpio_8c__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3a2b6777588aefbcc57665f957601b87 \ No newline at end of file diff --git a/Doc/html/general__gpio_8c__incl.png b/Doc/html/general__gpio_8c__incl.png deleted file mode 100644 index f729f30cc62e713adb831e312bb42352c2d5877a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5041 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 Ma2Ud>+yZ^)AJ^!d3;+NC diff --git a/Doc/html/general__gpio_8c_source.html b/Doc/html/general__gpio_8c_source.html deleted file mode 100644 index 01fd7e6..0000000 --- a/Doc/html/general__gpio_8c_source.html +++ /dev/null @@ -1,491 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_gpio.c Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_gpio.c
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_gpio.c
-
4* @brief Модуль для инициализации портов и работы с ними.
-
5**************************************************************************
-
6* @details
-
7Реализация функций для работы с GPIO:
-
8 - Включение тактирования портов
-
9 - Инициализация светодиодов и кнопок
-
10 - Управление светодиодами: включение, выключение, моргание, плавное затухание
-
11 - Чтение состояния кнопок с фильтром от дребезга
-
12***************************************************************************/
-
13#include "general_gpio.h"
-
14
-
15//-------------------------------------------------------------------
-
16//------------------------GPIO INIT FUNCTIONS------------------------
-
17
-
18
-
19/**
-
20 * @brief Включить тактирование порта GPIO
-
21 */
-
-
22HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
-
23{
-
24 if(check_null_ptr_1(GPIOx))
-
25 return HAL_ERROR;
-
26
-
27 HAL_StatusTypeDef status = HAL_OK;
-
28 // choose port for enable clock
-
29 if (GPIOx==GPIOA)
-
30 __HAL_RCC_GPIOA_CLK_ENABLE();
-
31 else if (GPIOx==GPIOB)
-
32 __HAL_RCC_GPIOB_CLK_ENABLE();
-
33#ifdef GPIOC
-
34 else if (GPIOx==GPIOC)
-
35 __HAL_RCC_GPIOC_CLK_ENABLE();
-
36#endif
-
37#ifdef GPIOD
-
38 else if (GPIOx==GPIOD)
-
39 __HAL_RCC_GPIOD_CLK_ENABLE();
-
40#endif
-
41#ifdef GPIOE
-
42 else if (GPIOx==GPIOE)
-
43 __HAL_RCC_GPIOE_CLK_ENABLE();
-
44#endif
-
45#ifdef GPIOF
-
46 else if (GPIOx==GPIOF)
-
47 __HAL_RCC_GPIOF_CLK_ENABLE();
-
48#endif
-
49#ifdef GPIOH
-
50 else if (GPIOx==GPIOF)
-
51 __HAL_RCC_GPIOH_CLK_ENABLE();
-
52#endif
-
53 else
-
54 status = HAL_ERROR;
-
55
-
56 return status;
-
57}
-
-
58
-
59//------------------------GPIO INIT FUNCTIONS------------------------
-
60//-------------------------------------------------------------------
-
61
-
62
-
63//-------------------------------------------------------------------
-
64//------------------------GPIO LED FUNCTIONS-------------------------
-
65
-
66/**
-
67 * @brief Инициализировать светодиод (структуру светодиода)
-
68 * @param led Указатель на структуру светодиода
-
69 * @param GPIOx Указатель на структуру порта для светодиода
-
70 * @param GPIO_PIN_X Пин для светодиода
-
71 * @param LED_ActiveLevel Состояния пина, при котором светодиод будет включен
-
72 */
-
-
73HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)
-
74{
-
75 if(check_null_ptr_3(led, GPIOx, GPIO_PIN_X))
-
76 return HAL_ERROR;
-
77
-
78 led->LED_Port = GPIOx;
-
79 led->LED_Pin = GPIO_PIN_X;
-
80 led->LED_ActiveLvl = LED_ActiveLevel;
-
81
-
82 GPIO_LED_Off(led);
-
83 return HAL_OK;
-
84}
-
-
85
-
86/**
-
87 * @brief Включить светодиод
-
88 * @param led Указатель на структуру светодиода
-
89 * @return HAL Status
-
90 */
-
-
91HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
-
92{
-
93 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
-
94 return HAL_ERROR;
-
95
-
96 led->state = LED_IS_ON;
-
97 HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
-
98
-
99
-
100 return HAL_OK;
-
101}
-
-
102/**
-
103 * @brief Выключить светодиод
-
104 * @param led Указатель на структуру светодиода
-
105 * @return HAL Status
-
106 */
-
-
107HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
-
108{
-
109 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
-
110 return HAL_ERROR;
-
111
-
112 led->state = LED_IS_OFF;
-
113 HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
-
114
-
115
-
116
-
117 return HAL_OK;
-
118}
-
-
119/**
-
120 * @brief Выставить светодиод по переменной
-
121 * @param led Указатель на структуру светодиода
-
122 * @param led_state Состояние светодиода
-
123 * @return HAL Status
-
124 */
-
-
125HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
-
126{
-
127 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
-
128 return HAL_ERROR;
-
129
-
130 if(led_state)
-
131 {
-
132 return GPIO_LED_On(led);
-
133 }
-
134 else
-
135 {
-
136 return GPIO_LED_Off(led);
-
137 }
-
138}
-
-
139/**
-
140 * @brief Активировать моргание светодиодом
-
141 * @param led Указатель на структуру светодиода
-
142 * @param period Период плавного моргания светодиода
-
143 * @return HAL Status
-
144 * @details Функция ставит режим моргания, который после управляется в @ref GPIO_LED_Dynamic_Handle
-
145 */
-
-
146HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
-
147{
-
148 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
-
149 return HAL_ERROR;
-
150
-
151 led->state = LED_IS_BLINKING;
-
152 led->LED_Period = period;
-
153
-
154 return HAL_OK;
-
155}
-
-
156
-
157/**
-
158 * @brief Активировать моргание светодиодом
-
159 * @param led Указатель на структуру светодиода
-
160 * @param period Период плавного моргания светодиода
-
161 * @return HAL Status
-
162 * @details Функция ставит режим моргания, который после управляется в @ref GPIO_LED_Dynamic_Handle
-
163 */
-
-
164HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
-
165{
-
166 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
-
167 return HAL_ERROR;
-
168
-
169 led->state = LED_IS_FADING;
-
170 led->LED_Period = period;
-
171
-
172
-
173 return HAL_OK;
-
174}
-
-
175
-
176//uint8_t LED_PWM_FADING_DUTYS[LED_PWM_TICKS] = {0 1 2 3 4 5 6 7 8 9 10 11 12 }
-
177/**
-
178 * @brief Управление динамическими режимами свечения светодиода
-
179 * @param Указатель на структуру светодиода
-
180 * @details Функция моргает/плавно моргает светодиодом в неблокирующем режиме
-
181 * Т.е. функцию надо вызывать постоянно, чтобы она мониторила тики
-
182 * и в нужный момент переключала светодиод
-
183 */
-
- -
185{
-
186 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
-
187 return;
-
188
-
189 /* Режим моргания светодиода */
-
190 if(led->state == LED_IS_BLINKING)
-
191 {
-
192 uint32_t tickcurrent = local_time();
-
193 /* Ожидание истечения периода моргания */
-
194 if((tickcurrent - led->tickprev) > led->LED_Period)
-
195 {
-
196 /* Моргание */
-
197 HAL_GPIO_TogglePin(led->LED_Port, led->LED_Pin);
-
198
-
199 led->tickprev = tickcurrent;
-
200 }
-
201 }
-
202 /* Режим плавного моргания светодиода */
-
203 else if(led->state == LED_IS_FADING)
-
204 {
-
205 static unsigned direction = 0;
-
206 static int duty = 0;
-
207 uint32_t tickcurrent = local_time();
-
208 /* Ожидание момента изменения яркости */
-
209 /* Период ШИМ 20 мс, поэтому менять яроксть надо 40 раз за период (туда обратно) */
-
210 if((tickcurrent - led->tickprev) > led->LED_Period/(LED_PWM_TICKS*2))
-
211 {
-
212 /* Формирование разтухания */
-
213 if(direction == 0)
-
214 {
-
215 if(++duty >= LED_PWM_TICKS)
-
216 {
-
217 direction = 1;
-
218 duty = LED_PWM_TICKS;
-
219 }
-
220 }
-
221 /* Формирование затухания */
-
222 else
-
223 {
-
224 if(--duty <= 0)
-
225 {
-
226 direction = 0;
-
227 duty = 0;
-
228 }
-
229 }
-
230 led->tickprev = tickcurrent;
-
231 }
-
232 /* Формирование ШИМ для изменения яркости */
-
233 int duty_crt = (duty*duty/LED_PWM_TICKS);
-
234 if(tickcurrent%LED_PWM_TICKS < duty_crt)
-
235 {
-
236 HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
-
237 }
-
238 else
-
239 {
-
240 HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
-
241 }
-
242 }
-
243}
-
-
244//------------------------GPIO LED FUNCTIONS-------------------------
-
245//-------------------------------------------------------------------
-
246
-
247//-------------------------------------------------------------------
-
248//------------------------GPIO SW FUNCTIONS-------------------------
-
249
-
250/**
-
251* @brief Инициализировать кнопку (структуру кнопки)
-
252 * @param sw Указатель на структуру кнопки
-
253 * @param GPIOx Указатель на структуру порта для кнопки
-
254 * @param GPIO_PIN_X Пин для кнопки
-
255 * @param SW_ActiveLevel Состояния пина, когда кнопка нажата
-
256 * @return HAL Status
-
257 */
-
-
258HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)
-
259{
-
260 if(check_null_ptr_3(sw, GPIOx, GPIO_PIN_X))
-
261 return HAL_ERROR;
-
262
-
263 sw->Sw_Port = GPIOx;
-
264 sw->Sw_Pin = GPIO_PIN_X;
-
265 sw->Sw_ActiveLvl = SW_ActiveLevel;
-
266 return HAL_OK;
-
267}
-
-
268
-
269/**
-
270 * @brief Считать состоянии кнопки
-
271 * @param sw Указатель на структуру кнопки
-
272 * @return 1 - если кнопка нажата,
-
273 * 0 - если отжата,
-
274 * -1 - если ошибка
-
275 * @details Функция включает в себя неблокирующую проверку на дребезг
-
276 * Т.е. функцию надо вызывать постоянно, чтобы она мониторила состояние кнопки
-
277 */
-
- -
279{
-
280 if(check_null_ptr_3(sw, sw->Sw_Port, sw->Sw_Pin))
-
281 return -1;
-
282
-
283 if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
-
284 {
-
285 sw->Sw_PrevState = 1;
-
286
-
287
-
288 if(sw->Sw_FilterDelay) // если включена защита от дребезга
-
289 {
-
290 if(sw->tickprev == 0)
-
291 sw->tickprev = local_time();
-
292
-
293 if((local_time() - sw->tickprev) >= sw->Sw_FilterDelay)
-
294 {
-
295 if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
-
296 {
-
297 return 1;
-
298 }
-
299 else
-
300 {
-
301 sw->tickprev = 0;
-
302 return 0;
-
303 }
-
304 }
-
305 }
-
306 else // если нет защиты от дребезга
-
307 {
-
308 if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
-
309 {
-
310 return 1;
-
311 }
-
312 else
-
313 {
-
314 sw->tickprev = 0;
-
315 return 0;
-
316 }
-
317 }
-
318 }
-
319 else
-
320 {
-
321 sw->Sw_PrevState = 0;
-
322 }
-
323 return 0;
-
324}
-
-
325//------------------------GPIO SW FUNCTIONS-------------------------
-
326//-------------------------------------------------------------------
-
Заголовочный файл для модуля инициализации портов и работы с ними.
-
#define check_null_ptr_1(p1)
Проверить один указатель на NULL.
Definition mylibs_defs.h:38
-
#define check_null_ptr_3(p1, p2, p3)
Проверить три указателя на NULL.
Definition mylibs_defs.h:44
-
#define LED_PWM_TICKS
Количество тиков в периоде ШИМ
-
#define local_time()
Локальное время
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
-
HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
Включить светодиод
-
HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
Активировать моргание светодиодом
-
HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
Выключить светодиод
-
HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)
Инициализировать светодиод (структуру светодиода)
-
void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
Управление динамическими режимами свечения светодиода
-
HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
Выставить светодиод по переменной
-
HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
Активировать моргание светодиодом
-
@ LED_IS_BLINKING
Моргание светодиодом
-
@ LED_IS_OFF
Светодиод выключен
-
@ LED_IS_FADING
Плавное моргание светодиодом
-
@ LED_IS_ON
Светодиод включен
-
int GPIO_Read_Switch(GPIO_SwitchTypeDef *sw)
Считать состоянии кнопки
-
HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)
Инициализировать кнопку (структуру кнопки)
-
Структура светодиода
-
uint32_t LED_Pin
GPIO пин ножки светодиода
-
uint32_t LED_Period
Период моргания светодиода
-
GPIO_TypeDef * LED_Port
GPIO порт ножки светодиода
-
uint8_t LED_ActiveLvl
Активный уровень ножки (при котором светодиод горит)
-
GPIO_LEDStateTypeDef state
Текущий режим работы светодиода
-
Структура кнопки
-
uint32_t Sw_PrevState
Предыдущее состояние кнопки
-
uint32_t Sw_FilterDelay
Фильтр от дребезга (в мс)
-
uint8_t Sw_ActiveLvl
Активный уровень ножки (при котором кнопка нажата)
-
uint32_t Sw_Pin
GPIO пин ножки кнопки
-
GPIO_TypeDef * Sw_Port
GPIO порт ножки кнопки
-
-
-
- - - - diff --git a/Doc/html/general__gpio_8h.html b/Doc/html/general__gpio_8h.html deleted file mode 100644 index a9a01fc..0000000 --- a/Doc/html/general__gpio_8h.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_gpio.h File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_gpio.h File Reference
-
-
- -

Заголовочный файл для модуля инициализации портов и работы с ними. -More...

-
#include "mylibs_defs.h"
-
Include dependency graph for general_gpio.h:
-
-
- -
This graph shows which files directly or indirectly include this file:
-
-
- -
-

Go to the source code of this file.

- - - - - - -

-Classes

struct  GPIO_LEDTypeDef
 Структура светодиода More...
struct  GPIO_SwitchTypeDef
 Структура кнопки More...
- - - - - - - - - - - - - -

-Macros

#define local_time()
 Локальное время
#define LED_PWM_TICKS   15
 Количество тиков в периоде ШИМ
#define LED_ON   1
 Состояние пина для включения светодиода
#define LED_OFF   0
 Состояние пина для выключения светодиода
#define SW_ON   1
 Состояние пина при нажатой кнопке
#define SW_OFF   0
 Состояние пина при отжатой кнопке
- - - -

-Enumerations

enum  GPIO_LEDStateTypeDef { LED_IS_OFF = 0 -, LED_IS_ON = 1 -, LED_IS_BLINKING = 2 -, LED_IS_FADING = 3 - }
 Режимы работы светодиода More...
- - - - - - - - - - - - - - - - - - - - - -

-Functions

HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef *GPIOx)
 Включить тактирование порта GPIO.
HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
 Инициализировать кнопку (структуру кнопки)
int GPIO_Read_Switch (GPIO_SwitchTypeDef *swstart)
 Считать состоянии кнопки
HAL_StatusTypeDef GPIO_LED_Init (GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)
 Инициализировать светодиод (структуру светодиода)
HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led)
 Включить светодиод
HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led)
 Выключить светодиод
HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
 Выставить светодиод по переменной
HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
HAL_StatusTypeDef GPIO_LED_Fading_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
void GPIO_LED_Dynamic_Handle (GPIO_LEDTypeDef *led)
 Управление динамическими режимами свечения светодиода
-

Detailed Description

-

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

- -

Definition in file general_gpio.h.

-
-
- -
- - - - diff --git a/Doc/html/general__gpio_8h.js b/Doc/html/general__gpio_8h.js deleted file mode 100644 index 4434c4d..0000000 --- a/Doc/html/general__gpio_8h.js +++ /dev/null @@ -1,25 +0,0 @@ -var general__gpio_8h = -[ - [ "local_time", "group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653", null ], - [ "LED_PWM_TICKS", "group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023", null ], - [ "LED_ON", "group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25", null ], - [ "LED_OFF", "group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29", null ], - [ "SW_ON", "group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9", null ], - [ "SW_OFF", "group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067", null ], - [ "GPIO_LEDStateTypeDef", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1", [ - [ "LED_IS_OFF", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae", null ], - [ "LED_IS_ON", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea", null ], - [ "LED_IS_BLINKING", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb", null ], - [ "LED_IS_FADING", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b", null ] - ] ], - [ "GPIO_Clock_Enable", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6", null ], - [ "GPIO_Switch_Init", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ], - [ "GPIO_Read_Switch", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70", null ], - [ "GPIO_LED_Init", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084", null ], - [ "GPIO_LED_On", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c", null ], - [ "GPIO_LED_Off", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357", null ], - [ "GPIO_LED_Set", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2", null ], - [ "GPIO_LED_Blink_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9", null ], - [ "GPIO_LED_Fading_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a", null ], - [ "GPIO_LED_Dynamic_Handle", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__gpio_8h__dep__incl.map b/Doc/html/general__gpio_8h__dep__incl.map deleted file mode 100644 index 9e57e6a..0000000 --- a/Doc/html/general__gpio_8h__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Doc/html/general__gpio_8h__dep__incl.md5 b/Doc/html/general__gpio_8h__dep__incl.md5 deleted file mode 100644 index 08fcda2..0000000 --- a/Doc/html/general__gpio_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9947edebe001b74bb89b7ef540c5825f \ No newline at end of file diff --git a/Doc/html/general__gpio_8h__dep__incl.png b/Doc/html/general__gpio_8h__dep__incl.png deleted file mode 100644 index 9730feec5197ac1a7f7ab77607737682b96dcb72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14359 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 diff --git a/Doc/html/general__gpio_8h__incl.map b/Doc/html/general__gpio_8h__incl.map deleted file mode 100644 index 07ed133..0000000 --- a/Doc/html/general__gpio_8h__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/Doc/html/general__gpio_8h__incl.md5 b/Doc/html/general__gpio_8h__incl.md5 deleted file mode 100644 index 04a7851..0000000 --- a/Doc/html/general__gpio_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0bd4cc8651d63206603e0eef34874ab9 \ No newline at end of file diff --git a/Doc/html/general__gpio_8h__incl.png b/Doc/html/general__gpio_8h__incl.png deleted file mode 100644 index 58524d23e342ce2381d07423cbcb588d99db6db0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4116 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 diff --git a/Doc/html/general__gpio_8h_source.html b/Doc/html/general__gpio_8h_source.html deleted file mode 100644 index da0db81..0000000 --- a/Doc/html/general__gpio_8h_source.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_gpio.h Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_gpio.h
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_gpio.h
-
4* @brief Заголовочный файл для модуля инициализации портов и работы с ними.
-
5**************************************************************************
-
6* @defgroup MY_LIBS_GPIO GPIO Tools
-
7* @ingroup MYLIBS_PERIPHERAL
-
8* @brief Функции и макросы для удобной работы с GPIO.
-
9* @details
-
10Модуль предоставляет универсальные инструменты для работы с GPIO):
-
11 - @ref MYLIBS_GPIO_GENERAL — инициализация и общие функции работы с портами.
-
12 - @ref MYLIBS_GPIO_SWITCH — работа с GPIO как с кнопкой: чтение состояния,
-
13 фильтрация дребезга, настройка активного уровня.
-
14 - @ref MYLIBS_GPIO_LEDS — работа с GPIO как со светодиодом: включение,
-
15 выключение, моргание и плавное затухание.
-
16
-
17*************************************************************************/
-
18#ifndef __GPIO_GENERAL_H_
-
19#define __GPIO_GENERAL_H_
-
20
-
21#include "mylibs_defs.h"
-
22
-
23/**
-
24 * @addtogroup GPIO_INIT Init defines
-
25 * @ingroup MYLIBS_GPIO_GENERAL
-
26 * @brief Настройка состояний кнопок и количества тиков в периоде ШИМ
-
27 * @{
-
28 */
-
29
-
30#ifndef local_time
-
31#define local_time() HAL_GetTick() ///< Локальное время
-
32#endif
-
33
-
34#ifndef LED_PWM_TICKS
-
35#define LED_PWM_TICKS 15 ///< Количество тиков в периоде ШИМ
-
36#endif
-
37
-
38#ifndef LED_ON
-
39#define LED_ON 1 ///< Состояние пина для включения светодиода
-
40#endif
-
41#ifndef LED_OFF
-
42#define LED_OFF 0 ///< Состояние пина для выключения светодиода
-
43#endif
-
44
-
45#ifndef SW_ON
-
46#define SW_ON 1 ///< Состояние пина при нажатой кнопке
-
47#endif
-
48#ifndef SW_OFF
-
49#define SW_OFF 0 ///< Состояние пина при отжатой кнопке
-
50#endif
-
51
-
52/** GPIO_INIT
-
53 * @}
-
54 */
-
55
-
56
-
57/**
-
58 * @brief Режимы работы светодиода
-
59 * @ingroup MYLIBS_GPIO_LEDS
-
60 */
-
-
61typedef enum
-
62{
-
63 LED_IS_OFF = 0, ///< Светодиод выключен
-
64 LED_IS_ON = 1, ///< Светодиод включен
-
65 LED_IS_BLINKING = 2, ///< Моргание светодиодом
-
66 LED_IS_FADING = 3, ///< Плавное моргание светодиодом
- -
-
68
-
69/**
-
70 * @brief Структура светодиода
-
71 * @ingroup MYLIBS_GPIO_LEDS
-
72 */
-
-
73typedef struct
-
74{
-
75 GPIO_LEDStateTypeDef state; ///< Текущий режим работы светодиода
-
76
-
77 GPIO_TypeDef *LED_Port; ///< GPIO порт ножки светодиода
-
78 uint32_t LED_Pin; ///< GPIO пин ножки светодиода
-
79
-
80 uint8_t LED_ActiveLvl; ///< Активный уровень ножки (при котором светодиод горит)
-
81 uint32_t LED_Period; ///< Период моргания светодиода
-
82
-
83 uint32_t tickprev;
- -
-
85
-
86/**
-
87 * @brief Структура кнопки
-
88 * @ingroup MYLIBS_GPIO_SWITCH
-
89 */
-
-
90typedef struct
-
91{
-
92 GPIO_TypeDef *Sw_Port; ///< GPIO порт ножки кнопки
-
93 uint32_t Sw_Pin; ///< GPIO пин ножки кнопки
-
94
-
95 uint8_t Sw_ActiveLvl; ///< Активный уровень ножки (при котором кнопка нажата)
-
96 uint32_t Sw_PrevState; ///< Предыдущее состояние кнопки
-
97 uint32_t Sw_FilterDelay; ///< Фильтр от дребезга (в мс)
-
98
-
99 uint32_t tickprev;
- -
-
101
-
102
-
103/////////////////////////////////////////////////////////////////////
-
104///////////////////////////---FUNCTIONS---///////////////////////////
-
105/**
-
106 * @addtogroup MYLIBS_GPIO_GENERAL General tools
-
107 * @ingroup MY_LIBS_GPIO
-
108 * @brief Общие функции/макросы для работы с GPIO
-
109 * @par Пример использования:
-
110 @code
-
111 // Включаем тактирование порта GPIOA
-
112 GPIO_Clock_Enable(GPIOA);
-
113 @endcode
-
114 * @{
-
115 */
-
116
-
117HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx);
-
118
-
119/** MYLIBS_GPIO_GENERAL
-
120 * @}
-
121 */
-
122
-
123/**
-
124 * @addtogroup MYLIBS_GPIO_SWITCH Switch tools
-
125 * @ingroup MY_LIBS_GPIO
-
126 * @brief Функции для работы с GPIO, как с кнопкой
-
127 * @par Пример использования:
-
128 @code
-
129 MX_GPIO_Init(); // инициализация пина аппаратная
-
130
-
131 // Инициализация кнопки на порте GPIOB, пин 0, активный уровень 1
-
132 GPIO_SwitchTypeDef sw1;
-
133 GPIO_Switch_Init(&sw1, GPIOB, GPIO_PIN_0, 1); // или дефайн SW_ON/SW_OFF
-
134
-
135 // Считываем состояние кнопки
-
136 if(GPIO_Read_Switch(&sw1))
-
137 {
-
138 // Кнопка нажата
-
139 LED_ON();
-
140 }
-
141 else
-
142 {
-
143 // Кнопка отжата
-
144 LED_OFF();
-
145 }
-
146 @endcode
-
147 * @{
-
148 */
-
149
-
150/* Инициализировать кнопку (структуру кнопки) */
-
151HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State);
-
152/* Считать состоянии кнопки запуска */
- -
154
-
155/** MYLIBS_GPIO_SWITCH
-
156 * @}
-
157 */
-
158
-
159
-
160/**
-
161 * @addtogroup MYLIBS_GPIO_LEDS LED tools
-
162 * @ingroup MY_LIBS_GPIO
-
163 * @brief Функции для работы с GPIO, для управления светодиодом
-
164 * @par Пример использования:
-
165 @code
-
166 MX_GPIO_Init(); // инициализация пина аппаратная
-
167
-
168 // Инициализация светодиода на порте GPIOA, пин 5, активный уровень 0
-
169 GPIO_LEDTypeDef led;
-
170 GPIO_LED_Init(&led, GPIOA, GPIO_PIN_5, 0); // или дефайн LED_ON/LED_OFF
-
171
-
172 // Включение светодиода
-
173 GPIO_LED_On(&led);
-
174
-
175 // Запуск моргания
-
176 GPIO_LED_Blink_Start(&led, 500); // Период 500 мс
-
177
-
178 // В основном цикле
-
179 while (1) {
-
180 GPIO_LED_Dynamic_Handle(&led);
-
181 }
-
182 @endcode
-
183 * @{
-
184 */
-
185
-
186/* Инициализировать светодиод (структуру светодиода) */
-
187HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State);
-
188/* Включить светодиод */
-
189HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led);
-
190/* Выключить светодиод */
-
191HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led);
-
192/* Выставить светодиод по переменной */
-
193HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state);
-
194/* Активировать моргание светодиодом */
-
195HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period);
-
196/* Активировать моргание светодиодом */
-
197HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period);
-
198/* Управление динамическими режимами свечения светодиода */
- -
200
-
201/** MYLIBS_GPIO_LEDS
-
202 * @}
-
203 */
-
204///////////////////////////---FUNCTIONS---///////////////////////////
-
205
-
206
-
207/**
-
208 * @cond GPIO_INTERNAL
-
209 */
-
210
-
211// /**
-
212// * @brief Маппинг альтернативной функции SPI между GPIO
-
213// * @ingroup MYLIBS_GPIO_GENERAL
-
214// */
-
215// #define SPI_Alternate_Mapping(INSTANCE) \
-
216// ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
-
217// (((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
-
218// (((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
-
219// (((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
-
220// (0))
-
221
-
222
-
223/**
-
224 * @brief Маппинг альтернативной функции TIM между GPIO
-
225 * @ingroup MYLIBS_GPIO_GENERAL
-
226 */
-
227#define GPIO_TIM_Alternate_Mapping(INSTANCE) \
-
228((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
-
229(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
-
230(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
-
231(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
-
232(0))
-
233
-
234
-
235/** @endcond */
-
236
-
237#endif // __GPIO_GENERAL_H_
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
-
HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
Включить светодиод
-
HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
Активировать моргание светодиодом
-
GPIO_LEDStateTypeDef
Режимы работы светодиода
-
HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
Выключить светодиод
-
HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)
Инициализировать светодиод (структуру светодиода)
-
void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
Управление динамическими режимами свечения светодиода
-
HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
Выставить светодиод по переменной
-
HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
Активировать моргание светодиодом
-
@ LED_IS_BLINKING
Моргание светодиодом
-
@ LED_IS_OFF
Светодиод выключен
-
@ LED_IS_FADING
Плавное моргание светодиодом
-
@ LED_IS_ON
Светодиод включен
-
int GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart)
Считать состоянии кнопки
-
HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
Инициализировать кнопку (структуру кнопки)
-
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура светодиода
-
uint32_t LED_Pin
GPIO пин ножки светодиода
-
uint32_t LED_Period
Период моргания светодиода
-
GPIO_TypeDef * LED_Port
GPIO порт ножки светодиода
-
uint8_t LED_ActiveLvl
Активный уровень ножки (при котором светодиод горит)
-
GPIO_LEDStateTypeDef state
Текущий режим работы светодиода
-
Структура кнопки
-
uint32_t Sw_PrevState
Предыдущее состояние кнопки
-
uint32_t Sw_FilterDelay
Фильтр от дребезга (в мс)
-
uint8_t Sw_ActiveLvl
Активный уровень ножки (при котором кнопка нажата)
-
uint32_t Sw_Pin
GPIO пин ножки кнопки
-
GPIO_TypeDef * Sw_Port
GPIO порт ножки кнопки
-
-
-
- - - - diff --git a/Doc/html/general__spi_8c.html b/Doc/html/general__spi_8c.html deleted file mode 100644 index aff95f3..0000000 --- a/Doc/html/general__spi_8c.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_spi.c File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_spi.c File Reference
-
-
- -

Модуль для инициализации SPI. -More...

-
#include "general_spi.h"
-#include "general_gpio.h"
-
Include dependency graph for general_spi.c:
-
-
- -
-

Go to the source code of this file.

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

-Functions

HAL_StatusTypeDef SPI_Base_Init (SPI_SettingsTypeDef *sspi)
 Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
void SPI_GPIO_Init (SPI_SettingsTypeDef *sspi)
 Инициализация GPIO для SPI.
void SPI_DMA_Init (SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
void SPI_MspInit (SPI_HandleTypeDef *hspi)
 Настройка тактирования и прерываний SPI.
void SPI_MspDeInit (SPI_HandleTypeDef *hspi)
 Деинициализация тактирования и прерываний SPI.
HAL_StatusTypeDef SPI_Check_Init_Struct (SPI_SettingsTypeDef *sspi)
 Проверка корректности структуры инициализации SPI.
-

Detailed Description

-

Модуль для инициализации SPI.

-

Реализация функций для работы с SPI:

    -
  • Инициализация SPI и его линий CLK/MISO/MOSI
  • -
  • Настройка GPIO для SPI
  • -
  • Настройка NVIC и тактирования SPI
  • -
- -

Definition in file general_spi.c.

-

Function Documentation

- -

◆ SPI_GPIO_Init()

- -
-
- - - - - - - -
void SPI_GPIO_Init (SPI_SettingsTypeDef * sspi)
-
- -

Инициализация GPIO для SPI.

-
Parameters
- - -
sspiУказатель на структуру с настройками SPI.
-
-
- -

Definition at line 58 of file general_spi.c.

- -
-
- -

◆ SPI_DMA_Init()

- -
-
- - - - - - - - - - - - - - - - - - - - - -
void SPI_DMA_Init (SPI_HandleTypeDef * hspi,
DMA_HandleTypeDef * hdma_rx,
DMA_Stream_TypeDef * DMAChannel,
uint32_t DMA_CHANNEL_X )
-
- -

Definition at line 89 of file general_spi.c.

- -
-
-
-
- -
- - - - diff --git a/Doc/html/general__spi_8c.js b/Doc/html/general__spi_8c.js deleted file mode 100644 index 08a35c5..0000000 --- a/Doc/html/general__spi_8c.js +++ /dev/null @@ -1,8 +0,0 @@ -var general__spi_8c = -[ - [ "SPI_Base_Init", "group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba", null ], - [ "SPI_GPIO_Init", "general__spi_8c.html#ae80d21e5cab86571709a2619442733b5", null ], - [ "SPI_MspInit", "group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac", null ], - [ "SPI_MspDeInit", "group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4", null ], - [ "SPI_Check_Init_Struct", "group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__spi_8c__incl.map b/Doc/html/general__spi_8c__incl.map deleted file mode 100644 index 2329971..0000000 --- a/Doc/html/general__spi_8c__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Doc/html/general__spi_8c__incl.md5 b/Doc/html/general__spi_8c__incl.md5 deleted file mode 100644 index 14b5759..0000000 --- a/Doc/html/general__spi_8c__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e8a8ba39e529a75868089e477979172c \ No newline at end of file diff --git a/Doc/html/general__spi_8c__incl.png b/Doc/html/general__spi_8c__incl.png deleted file mode 100644 index fa0a2eb4c5c2e43e81e2d30130797a9d97623f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8347 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 diff --git a/Doc/html/general__spi_8c_source.html b/Doc/html/general__spi_8c_source.html deleted file mode 100644 index dc01161..0000000 --- a/Doc/html/general__spi_8c_source.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_spi.c Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_spi.c
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_spi.c
-
4* @brief Модуль для инициализации SPI.
-
5**************************************************************************
-
6Реализация функций для работы с SPI:
-
7 - Инициализация SPI и его линий CLK/MISO/MOSI
-
8 - Настройка GPIO для SPI
-
9 - Настройка NVIC и тактирования SPI
-
10**************************************************************************/
-
11#include "general_spi.h"
-
12#include "general_gpio.h"
-
13
-
14//-------------------------------------------------------------------
-
15//------------------------SPI INIT FUNCTIONS------------------------
-
16/**
-
17 * @brief Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
-
18 * @param sspi Указатель на структуру с настройками SPI.
-
19 * @return HAL status.
-
20 * @details
-
21 * Инициализирует SPI и его GPIO.
-
22 * Настройка аналогична HAL_SPI_Init
-
23 * @code
-
24 * suart.hspi.Init...
-
25 * @endcode
-
26 * но дополнительно надо прописать пины CLK/MISO/MOSI @ref SPI_SettingsTypeDef
-
27 */
-
-
28HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)
-
29{ // function takes setting structure for init
-
30
-
31 // check is settings are valid
-
32 if(SPI_Check_Init_Struct(sspi) != HAL_OK)
-
33 return HAL_ERROR;
-
34
-
35 SPI_MspInit(&sspi->hspi);
-
36
-
37 if (HAL_SPI_Init(&sspi->hspi) != HAL_OK)
-
38 {
- -
40 return HAL_ERROR;
-
41 }
-
42
-
43 // init gpio from SPISettings structure
-
44 SPI_GPIO_Init(sspi);
-
45
-
46// // init dma from SPISettings structure if need
-
47// if (sspi->DMAChannel != 0)
-
48// SPI_DMA_Init(&sspi->hspi, sspi->hspi.hdmarx, sspi->DMAChannel, sspi->DMA_CHANNEL_X);
-
49
-
50 return HAL_OK;
-
51}
-
-
52
-
53
-
54/**
-
55 * @brief Инициализация GPIO для SPI.
-
56 * @param sspi Указатель на структуру с настройками SPI.
-
57 */
-
- -
59{
-
60 GPIO_InitTypeDef GPIO_InitStruct = {0};
-
61 // GPIO INIT
- - - -
65 // CLK PIN INIT
-
66 GPIO_InitStruct.Pin = sspi->CLK_PIN;
-
67 GPIO_InitStruct.Alternate = sspi->CLK_GPIO_AlternageFunc;
-
68 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
69 GPIO_InitStruct.Pull = GPIO_NOPULL;
-
70 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
71 HAL_GPIO_Init(sspi->CLK_GPIOx, &GPIO_InitStruct);
-
72 // MISO PIN INIT
-
73 GPIO_InitStruct.Pin = sspi->MISO_PIN;
-
74 GPIO_InitStruct.Alternate = sspi->MISO_GPIO_AlternageFunc;
-
75 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
76 GPIO_InitStruct.Pull = GPIO_NOPULL;
-
77 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
78 HAL_GPIO_Init(sspi->MISO_GPIOx, &GPIO_InitStruct);
-
79 // MOSI PIN INIT
-
80 GPIO_InitStruct.Pin = sspi->MOSI_PIN;
-
81 GPIO_InitStruct.Alternate = sspi->MOSI_GPIO_AlternageFunc;
-
82 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
83 GPIO_InitStruct.Pull = GPIO_NOPULL;
-
84 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
85 HAL_GPIO_Init(sspi->MOSI_GPIOx, &GPIO_InitStruct);
-
86}
-
-
87
-
88
-
89void SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
-
90{ // function takes spi and dma handlers and dmachannel for spi
-
91// // for now only dma rx is supported, tx maybe later if needed
-
92// // calc defines on boot_project_setup.h
-
93
-
94// /* SPI3 DMA Init */
-
95// /* SPI3_RX Init */
-
96//
-
97// hdma_rx->Instance = DMAChannel;
-
98//#if defined(STM32F4xx) // dma channel choose for 407
-
99// hdma_rx->Init.Channel = DMA_CHANNEL_X;
-
100//#endif
-
101// hdma_rx->Init.Direction = DMA_PERIPH_TO_MEMORY;
-
102// hdma_rx->Init.PeriphInc = DMA_PINC_DISABLE;
-
103// hdma_rx->Init.MemInc = DMA_MINC_ENABLE;
-
104// hdma_rx->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
-
105// hdma_rx->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
-
106// hdma_rx->Init.Mode = DMA_CIRCULAR;
-
107// hdma_rx->Init.Priority = DMA_PRIORITY_LOW;
-
108// if (HAL_DMA_Init(hdma_rx) != HAL_OK)
-
109// {
-
110// MyLibs_Error_Handler();
-
111// }
-
112
-
113// __USER_LINKDMA(hspi,hdmarx,hdma_rx);
-
114//
-
115
-
116// // __USER_LINKDMA is need because __HAL_LINKDMA is written for global defined hdma_rx
-
117// // so you get error because hal uses . insted of ->
-
118}
-
119
-
120
-
121/**
-
122 * @brief Настройка тактирования и прерываний SPI.
-
123 * @param hspi Указатель на хендл SPI.
-
124 * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI,
-
125 дефайнами @ref SPI_INIT в @ref general_spi.h определяются используемые SPI.
-
126 */
-
-
127void SPI_MspInit(SPI_HandleTypeDef *hspi) // analog for hal function
-
128{
-
129 // rcc, dma and interrupt init for SPIs
-
130 // GPIO init was moved to own functions SPI_GPIO_Init
-
131 if(0);
-
132#ifdef USE_SPI1
-
133 else if(hspi->Instance==SPI1)
-
134 {
-
135
-
136// /* DMA2 clock enable */
-
137// __HAL_RCC_DMA2_CLK_ENABLE();
-
138// /* DMA interrupt init */
-
139// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
-
140// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
-
141
-
142 /* SPI1 clock enable */
-
143 __HAL_RCC_SPI1_CLK_ENABLE();
-
144
-
145 /* SPI1 interrupt Init */
-
146 HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0);
-
147 HAL_NVIC_EnableIRQ(SPI1_IRQn);
-
148 }
-
149#endif // USE_SPI1
-
150#ifdef USE_SPI2
-
151 else if(hspi->Instance==SPI2)
-
152 {
-
153// /* DMA1 clock enable */
-
154// __HAL_RCC_DMA1_CLK_ENABLE();
-
155// /* DMA interrupt init */
-
156// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
-
157// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
-
158
-
159 /* SPI2 clock enable */
-
160 __HAL_RCC_SPI2_CLK_ENABLE();
-
161
-
162 /* SPI2 interrupt Init */
-
163 HAL_NVIC_SetPriority(SPI2_IRQn, 0, 0);
-
164 HAL_NVIC_EnableIRQ(SPI2_IRQn);
-
165 }
-
166#endif // USE_SPI2
-
167#ifdef USE_SPI3
-
168 else if(hspi->Instance==SPI3)
-
169 {
-
170// /* DMA1 clock enable */
-
171// __HAL_RCC_DMA1_CLK_ENABLE();
-
172// /* DMA interrupt init */
-
173// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
-
174// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
-
175
-
176 /* SPI3 clock enable */
-
177 __HAL_RCC_SPI3_CLK_ENABLE();
-
178 /* SPI3 interrupt Init */
-
179 HAL_NVIC_SetPriority(SPI3_IRQn, 0, 0);
-
180 HAL_NVIC_EnableIRQ(SPI3_IRQn);
-
181 }
-
182#endif // USE_SPI3
-
183}
-
-
184
-
185/**
-
186 * @brief Деинициализация тактирования и прерываний SPI.
-
187 * @param hspi Указатель на хендл SPI.
-
188 * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI,
-
189 дефайнами @ref SPI_INIT в @ref general_spi.h определяются используемые SPI.
-
190 */
-
-
191void SPI_MspDeInit(SPI_HandleTypeDef *hspi) // analog for hal function
-
192{
-
193 // rcc, dma and interrupt init for SPIs
-
194 // GPIO init was moved to own functions SPI_GPIO_Init
-
195 if(0);
-
196#ifdef USE_SPI1
-
197 else if(hspi->Instance==SPI1)
-
198 {
-
199
-
200// /* DMA2 clock enable */
-
201// __HAL_RCC_DMA2_CLK_ENABLE();
-
202// /* DMA interrupt init */
-
203// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
-
204// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
-
205
-
206 /* SPI1 clock reset */
-
207 __HAL_RCC_SPI1_FORCE_RESET();
-
208 __HAL_RCC_SPI1_RELEASE_RESET();
-
209 }
-
210#endif // USE_SPI1
-
211#ifdef USE_SPI2
-
212 else if(hspi->Instance==SPI2)
-
213 {
-
214// /* DMA1 clock enable */
-
215// __HAL_RCC_DMA1_CLK_ENABLE();
-
216// /* DMA interrupt init */
-
217// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
-
218// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
-
219
-
220 /* SPI2 clock reset */
-
221 __HAL_RCC_SPI2_FORCE_RESET();
-
222 __HAL_RCC_SPI2_RELEASE_RESET();
-
223 }
-
224#endif // USE_SPI2
-
225#ifdef USE_SPI3
-
226 else if(hspi->Instance==SPI3)
-
227 {
-
228// /* DMA1 clock enable */
-
229// __HAL_RCC_DMA1_CLK_ENABLE();
-
230// /* DMA interrupt init */
-
231// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
-
232// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
-
233
-
234 /* SPI3 clock reset */
-
235 __HAL_RCC_SPI3_FORCE_RESET();
-
236 __HAL_RCC_SPI3_RELEASE_RESET();
-
237 }
-
238#endif // USE_SPI3
-
239}
-
-
240
-
241/**
-
242 * @brief Проверка корректности структуры инициализации SPI.
-
243 * @param sspi Указатель на структуру с настройками SPI.
-
244 * @return HAL status.
-
245 */
-
- -
247{
-
248 // check is settings are valid
-
249 if (!IS_SPI_ALL_INSTANCE(sspi->hspi.Instance))
-
250 return HAL_ERROR;
-
251
-
252 // check init settings
-
253 if (!IS_SPI_MODE(sspi->hspi.Init.Mode))
-
254 return HAL_ERROR;
-
255 if (!IS_SPI_DIRECTION(sspi->hspi.Init.Direction))
-
256 return HAL_ERROR;
-
257 if (!IS_SPI_DATASIZE(sspi->hspi.Init.DataSize))
-
258 return HAL_ERROR;
-
259 if (!IS_SPI_BAUDRATE_PRESCALER(sspi->hspi.Init.BaudRatePrescaler))
-
260 return HAL_ERROR;
-
261 if (!IS_SPI_CPOL(sspi->hspi.Init.CLKPolarity))
-
262 return HAL_ERROR;
-
263 if (!IS_SPI_CPHA(sspi->hspi.Init.CLKPhase))
-
264 return HAL_ERROR;
-
265 if (!IS_SPI_NSS(sspi->hspi.Init.NSS))
-
266 return HAL_ERROR;
-
267 if (!IS_SPI_FIRST_BIT(sspi->hspi.Init.FirstBit))
-
268 return HAL_ERROR;
-
269 if (!IS_SPI_CRC_CALCULATION(sspi->hspi.Init.CRCCalculation))
-
270 return HAL_ERROR;
-
271 if (!IS_SPI_CRC_POLYNOMIAL(sspi->hspi.Init.NSS) &&
-
272 (sspi->hspi.Init.CRCCalculation != SPI_CRCCALCULATION_DISABLE))
-
273 return HAL_ERROR;
-
274 if (!IS_SPI_TIMODE(sspi->hspi.Init.TIMode))
-
275 return HAL_ERROR;
-
276
-
277 // check gpio
-
278 if (!IS_GPIO_ALL_INSTANCE(sspi->CLK_GPIOx) || !IS_GPIO_ALL_INSTANCE(sspi->MISO_GPIOx) || !IS_GPIO_ALL_INSTANCE(sspi->MOSI_GPIOx))
-
279 return HAL_ERROR;
-
280 if (!IS_GPIO_PIN(sspi->CLK_PIN) && !IS_GPIO_PIN(sspi->MISO_PIN) && !IS_GPIO_PIN(sspi->MOSI_PIN)) // if both pins arent set up
-
281 return HAL_ERROR;
-
282
-
283 return HAL_OK;
-
284}
-
-
Заголовочный файл для модуля инициализации портов и работы с ними.
-
void SPI_GPIO_Init(SPI_SettingsTypeDef *sspi)
Инициализация GPIO для SPI.
Definition general_spi.c:58
-
Заголовочный файл для модуля инициализации SPI.
-
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
Definition mylibs_defs.h:31
-
HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)
Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
Definition general_spi.c:28
-
HAL_StatusTypeDef SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi)
Проверка корректности структуры инициализации SPI.
-
void SPI_MspInit(SPI_HandleTypeDef *hspi)
Настройка тактирования и прерываний SPI.
-
void SPI_MspDeInit(SPI_HandleTypeDef *hspi)
Деинициализация тактирования и прерываний SPI.
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
-
Структура настроек SPI.
-
GPIO_TypeDef * MOSI_GPIOx
Порт MOSI.
-
GPIO_TypeDef * MISO_GPIOx
Порт MISO.
-
uint32_t MISO_PIN
Пин MISO.
-
uint32_t CLK_PIN
Пин CLK.
-
uint32_t CLK_GPIO_AlternageFunc
Альтернативная функция для CLK.
-
GPIO_TypeDef * CLK_GPIOx
Порт CLK.
-
uint32_t MOSI_PIN
Пин MOSI.
-
SPI_HandleTypeDef hspi
HAL handle SPI.
-
uint32_t MISO_GPIO_AlternageFunc
Альтернативная функция для MISO.
-
uint32_t MOSI_GPIO_AlternageFunc
Альтернативная функция для MOSI.
-
-
-
- - - - diff --git a/Doc/html/general__spi_8h.html b/Doc/html/general__spi_8h.html deleted file mode 100644 index 1c24edc..0000000 --- a/Doc/html/general__spi_8h.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_spi.h File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_spi.h File Reference
-
-
- -

Заголовочный файл для модуля инициализации SPI. -More...

-
#include "mylibs_defs.h"
-
Include dependency graph for general_spi.h:
-
-
- -
This graph shows which files directly or indirectly include this file:
-
-
- -
-

Go to the source code of this file.

- - - - -

-Classes

struct  SPI_SettingsTypeDef
 Структура настроек SPI. More...
- - - - - - - - - -

-Macros

#define HAL_SPI_MODULE_ENABLED
 Включение HAL SPI.
#define USE_SPI1
 Включить SPI1 в SPI_MspInit.
#define USE_SPI2
 Включить SPI2 в SPI_MspInit.
#define USE_SPI3
 Включить SPI3 в SPI_MspInit.
- - - - - - - - - -

-Functions

HAL_StatusTypeDef SPI_Base_Init (SPI_SettingsTypeDef *sspi)
 Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
HAL_StatusTypeDef SPI_Check_Init_Struct (SPI_SettingsTypeDef *sspi)
 Проверка корректности структуры инициализации SPI.
void SPI_MspInit (SPI_HandleTypeDef *hspi)
 Настройка тактирования и прерываний SPI.
void SPI_MspDeInit (SPI_HandleTypeDef *hspi)
 Деинициализация тактирования и прерываний SPI.
-

Detailed Description

-

Заголовочный файл для модуля инициализации SPI.

- -

Definition in file general_spi.h.

-
-
- -
- - - - diff --git a/Doc/html/general__spi_8h.js b/Doc/html/general__spi_8h.js deleted file mode 100644 index 089149a..0000000 --- a/Doc/html/general__spi_8h.js +++ /dev/null @@ -1,11 +0,0 @@ -var general__spi_8h = -[ - [ "HAL_SPI_MODULE_ENABLED", "group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c", null ], - [ "USE_SPI1", "group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf", null ], - [ "USE_SPI2", "group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b", null ], - [ "USE_SPI3", "group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc", null ], - [ "SPI_Base_Init", "group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba", null ], - [ "SPI_Check_Init_Struct", "group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f", null ], - [ "SPI_MspInit", "group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac", null ], - [ "SPI_MspDeInit", "group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__spi_8h__dep__incl.map b/Doc/html/general__spi_8h__dep__incl.map deleted file mode 100644 index 137d3ba..0000000 --- a/Doc/html/general__spi_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/general__spi_8h__dep__incl.md5 b/Doc/html/general__spi_8h__dep__incl.md5 deleted file mode 100644 index 9bc3b53..0000000 --- a/Doc/html/general__spi_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -28ba97d776dc60daf2dacbd07abd4950 \ No newline at end of file diff --git a/Doc/html/general__spi_8h__dep__incl.png b/Doc/html/general__spi_8h__dep__incl.png deleted file mode 100644 index 92a63c72e77e23bd6ba5f340ee34193cabfda142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2908 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 M7+OH^28h^y0b}g1 - - - - - - - - diff --git a/Doc/html/general__spi_8h__incl.md5 b/Doc/html/general__spi_8h__incl.md5 deleted file mode 100644 index 4835835..0000000 --- a/Doc/html/general__spi_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -213a09e6961a8140466f45197dec0d04 \ No newline at end of file diff --git a/Doc/html/general__spi_8h__incl.png b/Doc/html/general__spi_8h__incl.png deleted file mode 100644 index f79fbf894a02712f1c146669b0aec01570aa3a39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4098 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 diff --git a/Doc/html/general__spi_8h_source.html b/Doc/html/general__spi_8h_source.html deleted file mode 100644 index 6371d3b..0000000 --- a/Doc/html/general__spi_8h_source.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_spi.h Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_spi.h
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_spi.h
-
4* @brief Заголовочный файл для модуля инициализации SPI.
-
5**************************************************************************
-
6* @defgroup MY_LIBS_SPI SPI Tools
-
7* @ingroup MYLIBS_PERIPHERAL
-
8* @brief Функции и макросы для удобной работы с SPI.
-
9* @details
-
10Модуль предоставляет функции для базовой инициализации SPI
-
11
-
12
-
13@par Пример использования:
-
14@code
-
15// Структура настроек SPI
-
16SPI_SettingsTypeDef spi1Settings;
-
17
-
18void SPI1_Init(void)
-
19{
-
20 // Настройка SPI1 как Master, 8 бит, полный дуплекс
-
21 spi1Settings.hspi.Instance = SPI1;
-
22 spi1Settings.hspi.Init.Mode = SPI_MODE_MASTER;
-
23 spi1Settings.hspi.Init.Direction = SPI_DIRECTION_2LINES;
-
24 spi1Settings.hspi.Init.DataSize = SPI_DATASIZE_8BIT;
-
25 spi1Settings.hspi.Init.CLKPolarity = SPI_POLARITY_LOW;
-
26 spi1Settings.hspi.Init.CLKPhase = SPI_PHASE_1EDGE;
-
27 spi1Settings.hspi.Init.NSS = SPI_NSS_SOFT;
-
28 spi1Settings.hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
-
29 spi1Settings.hspi.Init.FirstBit = SPI_FIRSTBIT_MSB;
-
30 spi1Settings.hspi.Init.TIMode = SPI_TIMODE_DISABLE;
-
31 spi1Settings.hspi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
-
32
-
33 // Настройка GPIO
-
34 spi1Settings.CLK_GPIOx = GPIOA;
-
35 spi1Settings.CLK_PIN = GPIO_PIN_5;
-
36 spi1Settings.CLK_GPIO_AlternageFunc = GPIO_AF5_SPI1;
-
37
-
38 spi1Settings.MISO_GPIOx = GPIOA;
-
39 spi1Settings.MISO_PIN = GPIO_PIN_6;
-
40 spi1Settings.MISO_GPIO_AlternageFunc = GPIO_AF5_SPI1;
-
41
-
42 spi1Settings.MOSI_GPIOx = GPIOA;
-
43 spi1Settings.MOSI_PIN = GPIO_PIN_7;
-
44 spi1Settings.MOSI_GPIO_AlternageFunc = GPIO_AF5_SPI1;
-
45
-
46 // Инициализация SPI
-
47 if(SPI_Base_Init(&spi1Settings) != HAL_OK)
-
48 {
-
49 // Обработка ошибки
-
50 Error_Handler();
-
51 }
-
52}
-
53@endcode
-
54
-
55
-
56
-
57* @note Требуется подключение модуля SPI в библиотеке HAL
-
58@code
-
59#define HAL_SPI_MODULE_ENABLED
-
60@endcode
-
61* @{
-
62*************************************************************************/
-
63#ifndef __SPI_GENERAL_H_
-
64#define __SPI_GENERAL_H_
-
65
-
66
-
67/////////////////////////////////////////////////////////////////////
-
68/////////////////////////---USER SETTINGS---/////////////////////////
-
69/**
-
70 * @addtogroup SPI_INIT Init defines
-
71 * @ingroup MY_LIBS_SPI
-
72 * @brief Настройка SPI
-
73 * @{
-
74 */
-
75#define HAL_SPI_MODULE_ENABLED ///< Включение HAL SPI
-
76
-
77#define USE_SPI1 ///< Включить SPI1 в @ref SPI_MspInit
-
78#define USE_SPI2 ///< Включить SPI2 в @ref SPI_MspInit
-
79#define USE_SPI3 ///< Включить SPI3 в @ref SPI_MspInit
-
80/** SPI_INIT
-
81 * @}
-
82 */
-
83/////////////////////////---USER SETTINGS---/////////////////////////
-
84#include "mylibs_defs.h"
-
85
-
86
-
87
-
88/////////////////////////////////////////////////////////////////////
-
89////////////////////////////---DEFINES---////////////////////////////
-
90
-
91
-
92
-
93////////////////////////////---DEFINES---////////////////////////////
-
94
-
95
-
96/////////////////////////////////////////////////////////////////////
-
97///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
98/**
-
99 * @brief Структура настроек SPI
-
100 * @details Содержит все необходимые параметры для инициализации SPI,
-
101 * включая GPIO и DMA.
-
102 */
-
-
103typedef struct
-
104{
-
105 SPI_HandleTypeDef hspi; ///< HAL handle SPI
-
106
-
107 GPIO_TypeDef *CLK_GPIOx; ///< Порт CLK
-
108 uint32_t CLK_PIN; ///< Пин CLK
-
109 uint32_t CLK_GPIO_AlternageFunc; ///< Альтернативная функция для CLK
-
110
-
111 GPIO_TypeDef *MISO_GPIOx; ///< Порт MISO
-
112 uint32_t MISO_PIN; ///< Пин MISO
-
113 uint32_t MISO_GPIO_AlternageFunc; ///< Альтернативная функция для MISO
-
114
-
115 GPIO_TypeDef *MOSI_GPIOx; ///< Порт MOSI
-
116 uint32_t MOSI_PIN; ///< Пин MOSI
-
117 uint32_t MOSI_GPIO_AlternageFunc; ///< Альтернативная функция для MOSI
-
118
-
119 DMA_Stream_TypeDef *DMAChannel; ///< Канал DMA (NULL если не нужен)
-
120 uint32_t DMA_CHANNEL_X; ///< Номер канала DMA (0 если не нужен)
-
121
- -
-
123///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
124
-
125
-
126/////////////////////////////////////////////////////////////////////
-
127///////////////////////////---FUNCTIONS---///////////////////////////
-
128
-
129/* Инициализация SPI с использованием структуры настроек */
-
130HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi);
-
131
-
132/* Проверка корректности структуры настроек SPI */
-
133HAL_StatusTypeDef SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi);
-
134
-
135/* Инициализация тактирования и прерываний для выбранного SPI */
-
136void SPI_MspInit(SPI_HandleTypeDef *hspi);
-
137
-
138/* Деинициализация тактирования и прерываний для выбранного SPI */
-
139void SPI_MspDeInit(SPI_HandleTypeDef *hspi);
-
140
-
141
-
142/**
-
143 * @cond SPI_INTERNAL
-
144 */
-
145
-
146/* Настройка GPIO для SPI */
- -
148
-
149/* Настройка DMA для SPI */
-
150void SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);
-
151
-
152#ifndef __USER_LINKDMA
-
153/**
-
154 * @brief Аналог HAL макроса для привязки DMA к UART.
-
155 * @note @ref __HAL_LINKDMA.
-
156 */
-
157#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
-
158do{ \
-
159(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \
-
160(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
-
161#endif
-
162
-
163/** @endcond */
-
164///////////////////////////---FUNCTIONS---///////////////////////////
-
165
-
166#endif // __SPI_GENERAL_H_
-
167
-
168/** MY_LIBS_SPI
-
169 * @}
-
170 */
-
void SPI_GPIO_Init(SPI_SettingsTypeDef *sspi)
Инициализация GPIO для SPI.
Definition general_spi.c:58
-
HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)
Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
Definition general_spi.c:28
-
HAL_StatusTypeDef SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi)
Проверка корректности структуры инициализации SPI.
-
void SPI_MspInit(SPI_HandleTypeDef *hspi)
Настройка тактирования и прерываний SPI.
-
void SPI_MspDeInit(SPI_HandleTypeDef *hspi)
Деинициализация тактирования и прерываний SPI.
-
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура настроек SPI.
-
GPIO_TypeDef * MOSI_GPIOx
Порт MOSI.
-
GPIO_TypeDef * MISO_GPIOx
Порт MISO.
-
uint32_t MISO_PIN
Пин MISO.
-
uint32_t CLK_PIN
Пин CLK.
-
DMA_Stream_TypeDef * DMAChannel
Канал DMA (NULL если не нужен)
-
uint32_t CLK_GPIO_AlternageFunc
Альтернативная функция для CLK.
-
GPIO_TypeDef * CLK_GPIOx
Порт CLK.
-
uint32_t MOSI_PIN
Пин MOSI.
-
uint32_t DMA_CHANNEL_X
Номер канала DMA (0 если не нужен)
-
SPI_HandleTypeDef hspi
HAL handle SPI.
-
uint32_t MISO_GPIO_AlternageFunc
Альтернативная функция для MISO.
-
uint32_t MOSI_GPIO_AlternageFunc
Альтернативная функция для MOSI.
-
-
-
- - - - diff --git a/Doc/html/general__tim_8c.html b/Doc/html/general__tim_8c.html deleted file mode 100644 index 2ef52ed..0000000 --- a/Doc/html/general__tim_8c.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_tim.c File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_tim.c File Reference
-
-
- -

Модуль для инициализации таймеров и работы с ними. -More...

-
#include "general_tim.h"
-
Include dependency graph for general_tim.c:
-
-
- -
-

Go to the source code of this file.

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

-Functions

HAL_StatusTypeDef TIM_Base_Init (TIM_SettingsTypeDef *stim)
 Инициализация таймера.
HAL_StatusTypeDef TIM_Encoder_Init (TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim)
 Инициализация режима энкодер у таймера.
HAL_StatusTypeDef TIM_Output_PWM_Init (TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)
 Инициализация выхода ШИМ таймера.
HAL_StatusTypeDef TIM_OC_Comparator_Init (TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
 Инициализация OC компаратора таймера.
HAL_StatusTypeDef TIM_Encoder_Read (TIM_EncoderTypeDef *henc)
 Считать энкодер.
int TIM_Encoder_ReadSwitch (TIM_EncoderTypeDef *henc)
 Считать кнопку энкодера.
HAL_StatusTypeDef TIM_Delay (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (блокирующая).
HAL_StatusTypeDef TIM_Delay_Start (TIM_HandleTypeDef *htim)
 Начать отсчет неблокирующей задержки.
HAL_StatusTypeDef TIM_Delay_NonBlocking (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (неблокирующая).
void TIM_Base_MspInit (TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
 Инициализация CLK и NVIC таймеров.
void TIM_Base_MspDeInit (TIM_HandleTypeDef *htim)
 Деинициализация CLK и NVIC таймеров.
-

Detailed Description

-

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

-

Реализация функций для работы с TIM:

    -
  • Инициализация таймера и его каналов
  • -
  • Формирование задержек через таймеры
  • -
  • Считывание энкодера
  • -
- -

Definition in file general_tim.c.

-
-
- -
- - - - diff --git a/Doc/html/general__tim_8c.js b/Doc/html/general__tim_8c.js deleted file mode 100644 index ae02dd9..0000000 --- a/Doc/html/general__tim_8c.js +++ /dev/null @@ -1,14 +0,0 @@ -var general__tim_8c = -[ - [ "TIM_Base_Init", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec", null ], - [ "TIM_Encoder_Init", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc", null ], - [ "TIM_Output_PWM_Init", "group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6", null ], - [ "TIM_OC_Comparator_Init", "group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889", null ], - [ "TIM_Encoder_Read", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501", null ], - [ "TIM_Encoder_ReadSwitch", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761", null ], - [ "TIM_Delay", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e", null ], - [ "TIM_Delay_Start", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834", null ], - [ "TIM_Delay_NonBlocking", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b", null ], - [ "TIM_Base_MspInit", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931", null ], - [ "TIM_Base_MspDeInit", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__tim_8c__incl.map b/Doc/html/general__tim_8c__incl.map deleted file mode 100644 index e83abba..0000000 --- a/Doc/html/general__tim_8c__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Doc/html/general__tim_8c__incl.md5 b/Doc/html/general__tim_8c__incl.md5 deleted file mode 100644 index 5340347..0000000 --- a/Doc/html/general__tim_8c__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -adcb5705b981f835d5bb5ebef2b2957e \ No newline at end of file diff --git a/Doc/html/general__tim_8c__incl.png b/Doc/html/general__tim_8c__incl.png deleted file mode 100644 index e6a9305f986c796ebbbdd9fe42d17806b0e095d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8300 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 - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_tim.c Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_tim.c
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_tim.c
-
4* @brief Модуль для инициализации таймеров и работы с ними.
-
5**************************************************************************
-
6Реализация функций для работы с TIM:
-
7 - Инициализация таймера и его каналов
-
8 - Формирование задержек через таймеры
-
9 - Считывание энкодера
-
10*************************************************************************/
-
11#include "general_tim.h"
-
12
-
13//-------------------------------------------------------------------
-
14//-------------------------TIM INIT FUNCTIONS------------------------
-
15/**
-
16 * @brief Инициализация таймера.
-
17 * @param stim Указатель на структуру с настройками таймера.
-
18 * @return HAL status.
-
19 * @details
-
20 * Инициализирует таймер исходя из настроек верхнего уровня:
-
21 * - Длительность одного тика @ref TIM_MHzTickBaseTypeDef
-
22 * - Частота таймера (в Гц, float)
-
23 * - Частота тактирования таймера от шины (в Гц, float)
-
24 *
-
25 * При невозможности выставления частоты при заданой длительности тика
-
26 * длительность тика увеличивается до тех пор, пока частота не будет достигнута.
-
27 *
-
28 * При выставлении дефайна @ref UPDATE_TIM_PARAMS_AFTER_INITIALIZATION
-
29 * новая длительность тика записывается в структуру.
-
30 *
-
31 * Также остается возможность низкоуровневой настройки по структурам @ref TIM_SettingsTypeDef.
-
32 * Для этого надо высокоуровневые настройки приравнять к нулю
-
33 */
-
-
34HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
-
35{ // function takes structure for init
-
36 // check that htim is defined
-
37 if(check_null_ptr_2(stim, stim->htim.Instance))
-
38 return HAL_ERROR;
-
39
-
40
-
41
-
42 if(stim->sTickBaseUS) // if tickbase isnt disable
-
43 {
-
44 if(stim->sTimAHBFreqMHz == NULL)
-
45 return HAL_ERROR;
-
46 stim->htim.Init.Prescaler = (stim->sTimAHBFreqMHz*stim->sTickBaseUS) - 1;
-
47
-
48 if ((stim->sTimFreqHz != NULL))
-
49 stim->htim.Init.Period = ((1000000/stim->sTickBaseUS) / stim->sTimFreqHz) - 1;
-
50 else if (stim->htim.Init.Period == NULL)
-
51 stim->htim.Init.Period = 0xFFFF;
-
52
-
53 if(stim->sTickBasePrescaler)
-
54 {
-
55 stim->htim.Init.Prescaler = (stim->htim.Init.Prescaler + 1)/stim->sTickBasePrescaler - 1;
-
56 stim->htim.Init.Period = (stim->htim.Init.Period + 1)*stim->sTickBasePrescaler - 1;
-
57 }
-
58 else
-
59 stim->sTickBasePrescaler = 1;
-
60 }
-
61
-
62 // fix overflow of presc and period if need
-
63 for(int i = 0; (stim->htim.Init.Prescaler > 0xFFFF) || (stim->htim.Init.Period > 0xFFFF); i++)
-
64 {
-
65 if (i>10) // if it isnt fixed after 10 itteration - return HAL_ERRPOR
-
66 {
-
67 return HAL_ERROR;
-
68 }
-
69
-
70 // if timbase is too big (prescaller too big for choosen base from MHZ)
-
71 if(stim->htim.Init.Prescaler > 0xFFFF)
-
72 {
-
73 // переносим часть пресскалера в период
-
74 stim->htim.Init.Prescaler = ((stim->htim.Init.Prescaler + 1)/2) - 1;
-
75 stim->htim.Init.Period = ((stim->htim.Init.Period + 1)*2) - 1;
-
76 // обновляем TickBase, если есть куда обновлять
-
77 if(stim->sTickBaseUS > 1)
-
78 stim->sTickBaseUS /= 2;
-
79 // обновляем sTickBasePrescaler, если sTickBaseUS - уже в минимуме
-
80 else if (stim->sTickBaseUS == 1)
-
81 stim->sTickBasePrescaler *= 2;
-
82 else // if TickBase = 0 - return error
-
83 return HAL_ERROR;
-
84 }
-
85 // if freq is too low (period too big for choosen base)
-
86 if(stim->htim.Init.Period > 0xFFFF)
-
87 {
-
88 // переносим часть периода в прескалер
-
89 stim->htim.Init.Period = ((stim->htim.Init.Period + 1)/2) - 1;
-
90 stim->htim.Init.Prescaler = ((stim->htim.Init.Prescaler + 1)*2) - 1;
-
91 // обновляем TickBase
-
92 stim->sTickBaseUS *= 2;
-
93 }
-
94 }
-
95
-
96 //-------------TIM BASE INIT----------------
-
97 // tim base init
-
98 TIM_Base_MspInit(&stim->htim, stim->sTimMode);
-
99 if (HAL_TIM_Base_Init(&stim->htim) != HAL_OK)
-
100 {
- -
102 return HAL_ERROR;
-
103 }
-
104
-
105 //-------------CLOCK SRC INIT---------------
-
106 // fill sClockSourceConfig if its NULL
-
107 if (stim->sClockSourceConfig.ClockSource == NULL)
-
108 stim->sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
-
109 // clock source init
-
110 if (HAL_TIM_ConfigClockSource(&stim->htim, &stim->sClockSourceConfig) != HAL_OK)
-
111 {
- -
113 return HAL_ERROR;
-
114 }
-
115
-
116 //--------------SLAVE INIT------------------
-
117 // if slave mode enables - config it
-
118 if (stim->sSlaveConfig.SlaveMode)
-
119 {
-
120 // slave mode init
-
121 if (HAL_TIM_SlaveConfigSynchro(&stim->htim, &stim->sSlaveConfig) != HAL_OK)
-
122 {
- -
124 return HAL_ERROR;
-
125 }
-
126 }
-
127 //--------------MASTER INIT-----------------
-
128 // master mode init
-
129 if (HAL_TIMEx_MasterConfigSynchronization(&stim->htim, &stim->sMasterConfig) != HAL_OK)
-
130 {
- -
132 return HAL_ERROR;
-
133 }
-
134
-
135 //--------------BDTR INIT-----------------
-
136 if (HAL_TIMEx_ConfigBreakDeadTime(&stim->htim, &stim->sBreakDeadTimeConfig) != HAL_OK)
-
137 {
- -
139 return HAL_ERROR;
-
140 }
-
141
-
142 //----------------IT CLEAR-------------------
-
143 __HAL_TIM_CLEAR_IT(&stim->htim, TIM_IT_UPDATE);
-
144
-
145
-
146 // обновляем TickBase
-
147 #ifdef UPDATE_TIM_PARAMS_AFTER_INITIALIZATION
-
148 stim->sTickBaseUS = (stim->htim.Instance->PSC+1)*stim->sTickBasePrescaler/(stim->sTimAHBFreqMHz);
-
149 if(stim->sTickBaseUS == 0) // if prescaler is too high
-
150 { // recalc what is prescaler irl
-
151 stim->sTickBaseUS = 1;
-
152 stim->sTickBasePrescaler = stim->sTimAHBFreqMHz/(stim->htim.Instance->PSC+1);
-
153 }
-
154 #endif
-
155 stim->htim.Instance->CNT = 0;
-
156 return HAL_OK;
-
157}
-
-
158
-
159
-
160
-
161/**
-
162 * @brief Инициализация режима энкодер у таймера.
-
163 * @param henc Указатель на хендл энкодера.
-
164 * @param htim Указатель на хендл таймера.
-
165 * @return HAL status.
-
166 * @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.
-
167 */
-
-
168HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim)
-
169{
-
170 if(check_null_ptr_3(henc, htim, htim->Instance))
-
171 return HAL_ERROR;
-
172 if(check_null_ptr_3(henc->GPIOx, henc->GPIO_PIN_TI1, henc->GPIO_PIN_TI2))
-
173 return HAL_ERROR;
-
174
-
175 GPIO_InitTypeDef GPIO_InitStruct = {0};
-
176 HAL_StatusTypeDef RES = HAL_ERROR;
-
177 henc->htim = htim;
-
178
-
179 // setup channel for pwm
-
180 RES = HAL_TIM_Encoder_Init(henc->htim, &henc->sConfig);
-
181 if (RES != HAL_OK)
-
182 {
- -
184 return RES;
-
185 }
-
186 // choose port for enable clock
-
187 RES = GPIO_Clock_Enable(henc->GPIOx);
-
188 if(RES != HAL_OK)
-
189 {
- -
191 return RES;
-
192 }
-
193
-
194 GPIO_InitStruct.Pin = henc->GPIO_PIN_TI1|henc->GPIO_PIN_TI2;
-
195 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
196 GPIO_InitStruct.Pull = GPIO_PULLUP;
-
197 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
198 GPIO_InitStruct.Alternate = GPIO_TIM_Alternate_Mapping(henc->htim->Instance);
-
199 if(GPIO_InitStruct.Alternate)
-
200 HAL_GPIO_Init(henc->GPIOx, &GPIO_InitStruct);
-
201
-
202 if(henc->GPIO_PIN_SW)
-
203 {
-
204 /*Configure switch pin */
-
205 GPIO_InitStruct.Pin = henc->GPIO_PIN_SW;
-
206 GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-
207 GPIO_InitStruct.Pull = GPIO_PULLUP;
-
208 HAL_GPIO_Init(henc->GPIOx, &GPIO_InitStruct);
-
209
-
210 GPIO_Switch_Init(&henc->Sw, henc->GPIOx, henc->GPIO_PIN_SW, 0);
-
211 }
-
212
-
213 return HAL_OK;
-
214}
-
-
215
-
216/**
-
217 * @brief Инициализация выхода ШИМ таймера.
-
218 * @param htim Указатель на хендл таймера.
-
219 * @param sConfigOC Указатель на настрйоки канала таймера.
-
220 * @param TIM_CHANNEL Канал таймера для настройки.
-
221 * @param GPIOx Порт для вывода ШИМ.
-
222 * @param GPIO_PIN Пин для вывода ШИМ.
-
223 * @return HAL status.
-
224 * @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.
-
225 */
-
-
226HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)
-
227{
-
228 if(check_null_ptr_3(htim, htim->Instance, sConfigOC))
-
229 return HAL_ERROR;
-
230 if(check_null_ptr_2(GPIOx, GPIO_PIN))
-
231 return HAL_ERROR;
-
232
-
233 GPIO_InitTypeDef GPIO_InitStruct = {0};
-
234 HAL_StatusTypeDef RES = HAL_ERROR;
-
235
-
236 // setup channel for pwm
-
237 RES = HAL_TIM_PWM_ConfigChannel(htim, sConfigOC, TIM_CHANNEL);
-
238 if (RES != HAL_OK)
-
239 {
- -
241 return RES;
-
242 }
-
243 // choose port for enable clock
-
244 RES = GPIO_Clock_Enable(GPIOx);
-
245 if(RES != HAL_OK)
-
246 {
- -
248 return RES;
-
249 }
-
250
-
251 GPIO_InitStruct.Pin = GPIO_PIN;
-
252 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
253 if(sConfigOC->OCPolarity == TIM_OCNPOLARITY_HIGH)
-
254 GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-
255 else
-
256 GPIO_InitStruct.Pull = GPIO_PULLUP;
-
257 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
258 GPIO_InitStruct.Alternate = GPIO_TIM_Alternate_Mapping(htim->Instance);
-
259 if(GPIO_InitStruct.Alternate)
-
260 HAL_GPIO_Init(GPIOx, &GPIO_InitStruct);
-
261
-
262 return HAL_OK;
-
263}
-
-
264
-
265/**
-
266 * @brief Инициализация OC компаратора таймера.
-
267 * @param htim Указатель на хендл таймера.
-
268 * @param TIM_CHANNEL Канал таймера для настройки.
-
269 * @return HAL status.
-
270 * @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.
-
271 */
-
-
272HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
-
273{
-
274 if(check_null_ptr_2(htim, htim->Instance))
-
275 return HAL_ERROR;
-
276
-
277 TIM_OC_InitTypeDef sConfigOC = {0};
-
278 HAL_StatusTypeDef RES = HAL_ERROR;
-
279
-
280 sConfigOC.OCMode = TIM_OCMODE_ACTIVE;
-
281 sConfigOC.Pulse = 0;
-
282 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
-
283
-
284 RES = HAL_TIM_OC_ConfigChannel(htim, &sConfigOC, TIM_CHANNEL);
-
285 if (RES != HAL_OK)
-
286 {
- -
288 return RES;
-
289 }
-
290 return RES;
-
291}
-
-
292
-
293
-
294//-------------------------------------------------------------------
-
295//-------------------------TIM USER FUNCTIONS------------------------
-
296/**
-
297 * @brief Считать энкодер.
-
298 * @param henc Указатель на хендл энкодера.
-
299 * @return HAL status.
-
300 * @details Читает разницу энкодера, которую он накопил после
-
301 * предыдущего вызова этой функции.
-
302 */
-
-
303HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc)
-
304{
-
305 if(check_null_ptr_3(henc, henc->htim, henc->htim->Instance))
-
306 return HAL_ERROR;
-
307
-
308 uint16_t cnt_now = (uint16_t)henc->htim->Instance->CNT;
-
309 int16_t diff = (int16_t)(cnt_now - henc->Encoder_Shdw); // переполнение корректно обрабатывается
-
310 henc->Encoder_Diff = diff;
-
311 henc->Encoder_Shdw = cnt_now;
-
312
-
313 return HAL_OK;
-
314}
-
-
315/**
-
316 * @brief Считать кнопку энкодера.
-
317 * @param henc Указатель на хендл энкодера.
-
318 * @return 1 - если кнопка нажата,
-
319 * 0 - если отжата,
-
320 * -1 - если ошибка
-
321 */
-
- -
323{
-
324 if(check_null_ptr_1(henc))
-
325 return -1;
-
326
-
327 return GPIO_Read_Switch(&henc->Sw);
-
328}
-
-
329
-
330/**
-
331 * @brief Задержка в тиках таймера (блокирующая).
-
332 * @param htim Указатель на хендл таймера.
-
333 * @param delay Задержка в тиках таймера.
-
334 * @return HAL status.
-
335 * @details Формирует задержку с блокировкой программы.
-
336 */
-
-
337HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)
-
338{
-
339 if(check_null_ptr_2(htim, htim->Instance))
-
340 return HAL_ERROR;
-
341
-
342 if(delay >= htim->Instance->ARR)
-
343 {
-
344 return HAL_ERROR;
-
345 }
-
346 htim->Instance->CNT = 0;
-
347 while(1)
-
348 {
-
349 if(htim->Instance->CNT > delay)
-
350 {
-
351 return HAL_OK;
-
352 }
-
353 }
-
354}
-
-
355
-
356/**
-
357 * @brief Начать отсчет неблокирующей задержки.
-
358 * @param htim Указатель на хендл таймера.
-
359 * @return HAL status.
-
360 * @details Сбрасывает счетчик для начала отсчета неблокирующей задержки.
-
361 * @ref TIM_Delay_NonBlocking для проверки статуса задержки
-
362 */
-
-
363HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim)
-
364{
-
365 if(check_null_ptr_2(htim, htim->Instance))
-
366 return HAL_ERROR;
-
367
-
368 htim->Instance->CNT = 0;
-
369
-
370 return HAL_OK;
-
371}
-
-
372
-
373/**
-
374 * @brief Задержка в тиках таймера (неблокирующая).
-
375 * @param htim Указатель на хендл таймера.
-
376 * @param delay Задержка в тиках таймера.
-
377 * @return HAL status.
-
378 * @details Формирует задержку с блокировкой программы.
-
379 * Перед ожиданием задержки надо запутстить таймер @ref TIM_Delay_Start
-
380 * @note Таймер не должен использоваться на время этой задержки
-
381 */
-
-
382HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)
-
383{
-
384 if(check_null_ptr_2(htim, htim->Instance))
-
385 return HAL_ERROR;
-
386
-
387 if(delay >= htim->Instance->ARR)
-
388 {
-
389 return HAL_ERROR;
-
390 }
-
391
-
392 if(htim->Instance->CNT <= delay)
-
393 {
-
394 return HAL_BUSY;
-
395 }
-
396 else
-
397 {
-
398 return HAL_OK;
-
399 }
-
400}
-
-
401
-
402/**
-
403 * @brief Инициализация CLK и NVIC таймеров.
-
404 * @param htim Указатель на хендл таймера.
-
405 * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых таймеров,
-
406 дефайнами @ref TIM_INIT в @ref general_tim.h определяются используемые таймеры.
-
407 */
-
-
408void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode)
-
409{
-
410 if(check_null_ptr_2(htim, htim->Instance))
-
411 return;
-
412
-
413 it_mode = it_mode&TIM_IT_CONF;
-
414#ifdef USE_TIM1
-
415 if(htim->Instance==TIM1)
-
416 {
-
417 /* TIM2 clock enable */
-
418 __HAL_RCC_TIM1_CLK_ENABLE();
-
419
-
420 /* TIM2 interrupt Init */
-
421 if(it_mode)
-
422 {
-
423 HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0);
-
424 HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);
-
425 }
-
426 }
-
427#endif
-
428#ifdef USE_TIM2
-
429 if(htim->Instance==TIM2)
-
430 {
-
431 /* TIM2 clock enable */
-
432 __HAL_RCC_TIM2_CLK_ENABLE();
-
433
-
434 /* TIM2 interrupt Init */
-
435 if(it_mode)
-
436 {
-
437 HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
-
438 HAL_NVIC_EnableIRQ(TIM2_IRQn);
-
439 }
-
440 }
-
441#endif
-
442#ifdef USE_TIM3
-
443 if(htim->Instance==TIM3)
-
444 {
-
445 /* TIM3 clock enable */
-
446 __HAL_RCC_TIM3_CLK_ENABLE();
-
447
-
448 /* TIM3 interrupt Init */
-
449 if(it_mode)
-
450 {
-
451 HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
-
452 HAL_NVIC_EnableIRQ(TIM3_IRQn);
-
453 }
-
454 }
-
455#endif
-
456#ifdef USE_TIM4
-
457 if(htim->Instance==TIM4)
-
458 {
-
459 /* TIM4 clock enable */
-
460 __HAL_RCC_TIM4_CLK_ENABLE();
-
461
-
462 /* TIM4 interrupt Init */
-
463 if(it_mode)
-
464 {
-
465 HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0);
-
466 HAL_NVIC_EnableIRQ(TIM4_IRQn);
-
467 }
-
468 }
-
469#endif
-
470#ifdef USE_TIM5
-
471 if(htim->Instance==TIM5)
-
472 {
-
473 /* TIM5 clock enable */
-
474 __HAL_RCC_TIM5_CLK_ENABLE();
-
475
-
476 /* TIM5 interrupt Init */
-
477 if(it_mode)
-
478 {
-
479 HAL_NVIC_SetPriority(TIM5_IRQn, 0, 0);
-
480 HAL_NVIC_EnableIRQ(TIM5_IRQn);
-
481 }
-
482 }
-
483#endif
-
484#ifdef USE_TIM6
-
485 if(htim->Instance==TIM6)
-
486 {
-
487 /* TIM6 clock enable */
-
488 __HAL_RCC_TIM6_CLK_ENABLE();
-
489
-
490 /* TIM6 interrupt Init */
-
491 if(it_mode)
-
492 {
-
493 HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);
-
494 HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
-
495 }
-
496 }
-
497#endif
-
498#ifdef USE_TIM7
-
499 if(htim->Instance==TIM7)
-
500 {
-
501 /* TIM7 clock enable */
-
502 __HAL_RCC_TIM7_CLK_ENABLE();
-
503
-
504 /* TIM7 interrupt Init */
-
505 if(it_mode)
-
506 {
-
507 HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0);
-
508 HAL_NVIC_EnableIRQ(TIM7_IRQn);
-
509 }
-
510 }
-
511#endif
-
512#ifdef USE_TIM8
-
513 if(htim->Instance==TIM8)
-
514 {
-
515 /* TIM8 clock enable */
-
516 __HAL_RCC_TIM8_CLK_ENABLE();
-
517
-
518 /* TIM8 interrupt Init */
-
519 if(it_mode)
-
520 {
-
521 HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0);
-
522 HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn);
-
523 }
-
524 }
-
525#endif
-
526#ifdef USE_TIM9
-
527 if(htim->Instance==TIM9)
-
528 {
-
529 /* TIM9 clock enable */
-
530 __HAL_RCC_TIM9_CLK_ENABLE();
-
531
-
532 /* TIM9 interrupt Init */
-
533 if(it_mode)
-
534 {
-
535 HAL_NVIC_SetPriority(TIM1_BRK_TIM9_IRQn, 0, 0);
-
536 HAL_NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn);
-
537 }
-
538 }
-
539#endif
-
540#ifdef USE_TIM10
-
541 if(htim->Instance==TIM10)
-
542 {
-
543 /* TIM10 clock enable */
-
544 __HAL_RCC_TIM10_CLK_ENABLE();
-
545
-
546 /* TIM10 interrupt Init */
-
547 if(it_mode)
-
548 {
-
549 HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0);
-
550 HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);
-
551 }
-
552 }
-
553#endif
-
554#ifdef USE_TIM11
-
555 if(htim->Instance==TIM11)
-
556 {
-
557 /* TIM11 clock enable */
-
558 __HAL_RCC_TIM11_CLK_ENABLE();
-
559
-
560 /* TIM11 interrupt Init */
-
561 if(it_mode)
-
562 {
-
563 HAL_NVIC_SetPriority(TIM1_TRG_COM_TIM11_IRQn, 0, 0);
-
564 HAL_NVIC_EnableIRQ(TIM1_TRG_COM_TIM11_IRQn);
-
565 }
-
566 }
-
567#endif
-
568#ifdef USE_TIM12
-
569 if(htim->Instance==TIM12)
-
570 {
-
571 /* TIM12 clock enable */
-
572 __HAL_RCC_TIM12_CLK_ENABLE();
-
573
-
574 /* TIM12 interrupt Init */
-
575 if(it_mode)
-
576 {
-
577 HAL_NVIC_SetPriority(TIM8_BRK_TIM12_IRQn, 0, 0);
-
578 HAL_NVIC_EnableIRQ(TIM8_BRK_TIM12_IRQn);
-
579 }
-
580 }
-
581#endif
-
582#ifdef USE_TIM13
-
583 if(htim->Instance==TIM13)
-
584 {
-
585 /* TIM13 clock enable */
-
586 __HAL_RCC_TIM13_CLK_ENABLE();
-
587
-
588 /* TIM13 interrupt Init */
-
589 if(it_mode)
-
590 {
-
591 HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0);
-
592 HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn);
-
593 }
-
594 }
-
595#endif
-
596#ifdef USE_TIM14
-
597 if(htim->Instance==TIM14)
-
598 {
-
599 /* TIM14 clock enable */
-
600 __HAL_RCC_TIM14_CLK_ENABLE();
-
601
-
602 /* TIM14 interrupt Init */
-
603 if(it_mode)
-
604 {
-
605 HAL_NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 0, 0);
-
606 HAL_NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn);
-
607 }
-
608 }
-
609#endif
-
610}
-
-
611/**
-
612 * @brief Деинициализация CLK и NVIC таймеров.
-
613 * @param htim Указатель на хендл таймера.
-
614 * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых таймеров,
-
615 дефайнами @ref TIM_INIT в @ref general_tim.h определяются используемые таймеры.
-
616 */
-
-
617void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim)
-
618{
-
619 if(check_null_ptr_2(htim, htim->Instance))
-
620 return;
-
621
-
622#ifdef USE_TIM1
-
623 if(htim->Instance==TIM1)
-
624 {
-
625 __HAL_RCC_TIM1_FORCE_RESET();
-
626 __HAL_RCC_TIM1_RELEASE_RESET();
-
627 }
-
628#endif
-
629#ifdef USE_TIM2
-
630 if(htim->Instance==TIM2)
-
631 {
-
632 __HAL_RCC_TIM2_FORCE_RESET();
-
633 __HAL_RCC_TIM2_RELEASE_RESET();
-
634 }
-
635#endif
-
636#ifdef USE_TIM3
-
637 if(htim->Instance==TIM3)
-
638 {
-
639 __HAL_RCC_TIM3_FORCE_RESET();
-
640 __HAL_RCC_TIM3_RELEASE_RESET();
-
641 }
-
642#endif
-
643#ifdef USE_TIM4
-
644 if(htim->Instance==TIM4)
-
645 {
-
646 __HAL_RCC_TIM4_FORCE_RESET();
-
647 __HAL_RCC_TIM4_RELEASE_RESET();
-
648 }
-
649#endif
-
650#ifdef USE_TIM5
-
651 if(htim->Instance==TIM5)
-
652 {
-
653 __HAL_RCC_TIM5_FORCE_RESET();
-
654 __HAL_RCC_TIM5_RELEASE_RESET();
-
655 }
-
656#endif
-
657#ifdef USE_TIM6
-
658 if(htim->Instance==TIM6)
-
659 {
-
660 __HAL_RCC_TIM6_FORCE_RESET();
-
661 __HAL_RCC_TIM6_RELEASE_RESET();
-
662 }
-
663#endif
-
664#ifdef USE_TIM7
-
665 if(htim->Instance==TIM7)
-
666 {
-
667 __HAL_RCC_TIM7_FORCE_RESET();
-
668 __HAL_RCC_TIM7_RELEASE_RESET();
-
669 }
-
670#endif
-
671#ifdef USE_TIM8
-
672 if(htim->Instance==TIM8)
-
673 {
-
674 __HAL_RCC_TIM8_FORCE_RESET();
-
675 __HAL_RCC_TIM8_RELEASE_RESET();
-
676 }
-
677#endif
-
678#ifdef USE_TIM9
-
679 if(htim->Instance==TIM9)
-
680 {
-
681 __HAL_RCC_TIM9_FORCE_RESET();
-
682 __HAL_RCC_TIM9_RELEASE_RESET();
-
683 }
-
684#endif
-
685#ifdef USE_TIM10
-
686 if(htim->Instance==TIM10)
-
687 {
-
688 __HAL_RCC_TIM10_FORCE_RESET();
-
689 __HAL_RCC_TIM10_RELEASE_RESET();
-
690 }
-
691#endif
-
692#ifdef USE_TIM11
-
693 if(htim->Instance==TIM11)
-
694 {
-
695 __HAL_RCC_TIM11_FORCE_RESET();
-
696 __HAL_RCC_TIM11_RELEASE_RESET();
-
697 }
-
698#endif
-
699#ifdef USE_TIM12
-
700 if(htim->Instance==TIM12)
-
701 {
-
702 __HAL_RCC_TIM12_FORCE_RESET();
-
703 __HAL_RCC_TIM12_RELEASE_RESET();
-
704 }
-
705#endif
-
706#ifdef USE_TIM13
-
707 if(htim->Instance==TIM13)
-
708 {
-
709 __HAL_RCC_TIM13_FORCE_RESET();
-
710 __HAL_RCC_TIM13_RELEASE_RESET();
-
711 }
-
712#endif
-
713#ifdef USE_TIM14
-
714 if(htim->Instance==TIM14)
-
715 {
-
716 __HAL_RCC_TIM14_FORCE_RESET();
-
717 __HAL_RCC_TIM14_RELEASE_RESET();
-
718 }
-
719#endif
-
720}
-
-
721//-------------------------TIM INIT FUNCTIONS------------------------
-
722//-------------------------------------------------------------------
-
Заголовочный файл для модуля инициализации таймеров и работы с ними.
-
#define check_null_ptr_2(p1, p2)
Проверить два указателя на NULL.
Definition mylibs_defs.h:41
-
#define check_null_ptr_1(p1)
Проверить один указатель на NULL.
Definition mylibs_defs.h:38
-
#define check_null_ptr_3(p1, p2, p3)
Проверить три указателя на NULL.
Definition mylibs_defs.h:44
-
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
Definition mylibs_defs.h:31
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
-
int GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart)
Считать состоянии кнопки
-
HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
Инициализировать кнопку (структуру кнопки)
-
HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)
Задержка в тиках таймера (неблокирующая).
-
HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim)
Начать отсчет неблокирующей задержки.
-
HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)
Задержка в тиках таймера (блокирующая).
-
int TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc)
Считать кнопку энкодера.
-
HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim)
Инициализация режима энкодер у таймера.
-
HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc)
Считать энкодер.
-
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
Инициализация таймера.
Definition general_tim.c:34
-
void TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)
Деинициализация CLK и NVIC таймеров.
-
void TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
Инициализация CLK и NVIC таймеров.
-
TIM_ITModeTypeDef
Режим прерываний таймера
Definition general_tim.h:78
-
HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)
Инициализация выхода ШИМ таймера.
-
HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
Инициализация OC компаратора таймера.
-
Структура инициализации енкодера
-
TIM_Encoder_InitTypeDef sConfig
Указатель на структуру настройки энкодера
-
uint16_t Encoder_Shdw
Последние считанные тики
-
uint32_t GPIO_PIN_TI1
Пин, куда подключается канал TI1.
-
uint32_t GPIO_PIN_TI2
Пин, куда подключается канал TI2.
-
uint32_t GPIO_PIN_SW
Пин, куда кнопка энкодера (если есть)
-
int16_t Encoder_Diff
Считанная разница
-
GPIO_SwitchTypeDef Sw
Структура кнопки
-
GPIO_TypeDef * GPIOx
Порт, куда подключается энкодер
-
TIM_HandleTypeDef * htim
Указатель на HAL handle таймера
-
Структура инициализации таймера
-
uint8_t sTickBasePrescaler
Дополнительный делитель, для удобного деления sTickBaseUS.
-
TIM_MasterConfigTypeDef sMasterConfig
Настройки мастер режима таймера
-
TIM_ClockConfigTypeDef sClockSourceConfig
Настройки тактирования таймера
-
TIM_MHzTickBaseTypeDef sTickBaseUS
Длительность одного тика
-
float sTimAHBFreqMHz
Частота шины тактирования таймера
-
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig
Настройки дедтаймов таймера
-
TIM_SlaveConfigTypeDef sSlaveConfig
Настройки слейв режима таймера
-
TIM_ITModeTypeDef sTimMode
Настройки прерывания таймера
-
TIM_HandleTypeDef htim
HAL handle таймера
-
float sTimFreqHz
Желаемая частота таймера
-
-
-
- - - - diff --git a/Doc/html/general__tim_8h.html b/Doc/html/general__tim_8h.html deleted file mode 100644 index 7d2c85a..0000000 --- a/Doc/html/general__tim_8h.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_tim.h File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_tim.h File Reference
-
-
- -

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

-
#include "mylibs_defs.h"
-#include "general_gpio.h"
-
Include dependency graph for general_tim.h:
-
-
- -
This graph shows which files directly or indirectly include this file:
-
-
- -
-

Go to the source code of this file.

- - - - - - -

-Classes

struct  TIM_SettingsTypeDef
 Структура инициализации таймера More...
struct  TIM_EncoderTypeDef
 Структура инициализации енкодера More...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

#define HAL_TIM_MODULE_ENABLED
#define USE_TIM1
 Включить TIM1 в TIM_Base_MspInit.
#define USE_TIM2
 Включить TIM2 в TIM_Base_MspInit.
#define USE_TIM3
 Включить TIM3 в TIM_Base_MspInit.
#define USE_TIM4
 Включить TIM4 в TIM_Base_MspInit.
#define USE_TIM5
 Включить TIM5 в TIM_Base_MspInit.
#define USE_TIM6
 Включить TIM6 в TIM_Base_MspInit.
#define USE_TIM7
 Включить TIM7 в TIM_Base_MspInit.
#define USE_TIM8
 Включить TIM8 в TIM_Base_MspInit.
#define USE_TIM9
 Включить TIM9 в TIM_Base_MspInit.
#define USE_TIM10
 Включить TIM10 в TIM_Base_MspInit.
#define USE_TIM11
 Включить TIM11 в TIM_Base_MspInit.
#define USE_TIM12
 Включить TIM12 в TIM_Base_MspInit.
#define USE_TIM13
 Включить TIM13 в TIM_Base_MspInit.
#define USE_TIM14
 Включить TIM14 в TIM_Base_MspInit.
#define TIM_IT_CONF_Pos   0
#define TIM_IT_CONF   (1<<(TIM_IT_CONF_Pos))
- - - - - -

-Enumerations

enum  TIM_ITModeTypeDef { TIM_DEFAULT = 0 -, TIM_IT_MODE = (1<<( 0 )) - }
 Режим прерываний таймера More...
enum  TIM_MHzTickBaseTypeDef {
-  TIM_Base_Disable = 0 -, TIM_TickBase_1US = 1 -, TIM_TickBase_10US = 10 -, TIM_TickBase_100US = 100 -,
-  TIM_TickBase_1MS = 1000 -, TIM_TickBase_10MS = 10000 -, TIM_TickBase_100MS = 100000 -
- }
 Длительность тика таймера (частота тактирования таймера) More...
- - - - - - - - - - - - - - - - - - - - - - - -

-Functions

HAL_StatusTypeDef TIM_Base_Init (TIM_SettingsTypeDef *stim)
 Инициализация таймера.
void TIM_Base_MspInit (TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
 Инициализация CLK и NVIC таймеров.
void TIM_Base_MspDeInit (TIM_HandleTypeDef *htim)
 Деинициализация CLK и NVIC таймеров.
HAL_StatusTypeDef TIM_Delay_Start (TIM_HandleTypeDef *htim)
 Начать отсчет неблокирующей задержки.
HAL_StatusTypeDef TIM_Delay (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (блокирующая).
HAL_StatusTypeDef TIM_Delay_NonBlocking (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (неблокирующая).
HAL_StatusTypeDef TIM_Output_PWM_Init (TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN)
 Инициализация выхода ШИМ таймера.
HAL_StatusTypeDef TIM_OC_Comparator_Init (TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
 Инициализация OC компаратора таймера.
HAL_StatusTypeDef TIM_Encoder_Init (TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim)
 Инициализация режима энкодер у таймера.
HAL_StatusTypeDef TIM_Encoder_Read (TIM_EncoderTypeDef *henc)
 Считать энкодер.
int TIM_Encoder_ReadSwitch (TIM_EncoderTypeDef *henc)
 Считать кнопку энкодера.
-

Detailed Description

-

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

- -

Definition in file general_tim.h.

-

Macro Definition Documentation

- -

◆ TIM_IT_CONF_Pos

- -
-
- - - - -
#define TIM_IT_CONF_Pos   0
-
- -

Definition at line 57 of file general_tim.h.

- -
-
- -

◆ TIM_IT_CONF

- -
-
- - - - -
#define TIM_IT_CONF   (1<<(TIM_IT_CONF_Pos))
-
- -

Definition at line 64 of file general_tim.h.

- -
-
-
-
- -
- - - - diff --git a/Doc/html/general__tim_8h.js b/Doc/html/general__tim_8h.js deleted file mode 100644 index d72435a..0000000 --- a/Doc/html/general__tim_8h.js +++ /dev/null @@ -1,41 +0,0 @@ -var general__tim_8h = -[ - [ "USE_TIM1", "group___t_i_m___i_n_i_t.html#ga54a98c21365e0bc45b81555d2b101f2b", null ], - [ "USE_TIM2", "group___t_i_m___i_n_i_t.html#ga72535a44955b43cbcd56e25039ab32eb", null ], - [ "USE_TIM3", "group___t_i_m___i_n_i_t.html#ga5b5685a43273b6e37242a4aba3ee0617", null ], - [ "USE_TIM4", "group___t_i_m___i_n_i_t.html#ga1493b39c9214501180b81b4c892f9be0", null ], - [ "USE_TIM5", "group___t_i_m___i_n_i_t.html#ga252f4fba93fc265110e83760e0590af3", null ], - [ "USE_TIM6", "group___t_i_m___i_n_i_t.html#ga8fe31b98160627d19038222910be3f46", null ], - [ "USE_TIM7", "group___t_i_m___i_n_i_t.html#ga7cdc54cc8cbbb6e9f60001f1e3e6ec67", null ], - [ "USE_TIM8", "group___t_i_m___i_n_i_t.html#ga28ba33d7c6bf22821dafa5bcee4854be", null ], - [ "USE_TIM9", "group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a", null ], - [ "USE_TIM10", "group___t_i_m___i_n_i_t.html#ga98c0691052d1da2c4053dd3586ff7ce9", null ], - [ "USE_TIM11", "group___t_i_m___i_n_i_t.html#ga176c97f06ebcf14e06e5c5bdbfac44c2", null ], - [ "USE_TIM12", "group___t_i_m___i_n_i_t.html#ga4e2b0e6cdf9eed74581b575c3fd9516b", null ], - [ "USE_TIM13", "group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac", null ], - [ "USE_TIM14", "group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c", null ], - [ "TIM_ITModeTypeDef", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787", [ - [ "TIM_DEFAULT", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8", null ], - [ "TIM_IT_MODE", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c", null ] - ] ], - [ "TIM_MHzTickBaseTypeDef", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800", [ - [ "TIM_Base_Disable", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5", null ], - [ "TIM_TickBase_1US", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2", null ], - [ "TIM_TickBase_10US", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f", null ], - [ "TIM_TickBase_100US", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30", null ], - [ "TIM_TickBase_1MS", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25", null ], - [ "TIM_TickBase_10MS", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa", null ], - [ "TIM_TickBase_100MS", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da", null ] - ] ], - [ "TIM_Base_Init", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec", null ], - [ "TIM_Base_MspInit", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931", null ], - [ "TIM_Base_MspDeInit", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115", null ], - [ "TIM_Delay_Start", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834", null ], - [ "TIM_Delay", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e", null ], - [ "TIM_Delay_NonBlocking", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b", null ], - [ "TIM_Output_PWM_Init", "group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6", null ], - [ "TIM_OC_Comparator_Init", "group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889", null ], - [ "TIM_Encoder_Init", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc", null ], - [ "TIM_Encoder_Read", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501", null ], - [ "TIM_Encoder_ReadSwitch", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__tim_8h__dep__incl.map b/Doc/html/general__tim_8h__dep__incl.map deleted file mode 100644 index 84adee9..0000000 --- a/Doc/html/general__tim_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/general__tim_8h__dep__incl.md5 b/Doc/html/general__tim_8h__dep__incl.md5 deleted file mode 100644 index 8904165..0000000 --- a/Doc/html/general__tim_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8802313afe910e242feaa8190128829f \ No newline at end of file diff --git a/Doc/html/general__tim_8h__dep__incl.png b/Doc/html/general__tim_8h__dep__incl.png deleted file mode 100644 index b6cf84e8f1dc8534c3ccae31c49b93e9bf116eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2904 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 Bx9R`@ diff --git a/Doc/html/general__tim_8h__incl.map b/Doc/html/general__tim_8h__incl.map deleted file mode 100644 index 389feb9..0000000 --- a/Doc/html/general__tim_8h__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Doc/html/general__tim_8h__incl.md5 b/Doc/html/general__tim_8h__incl.md5 deleted file mode 100644 index 36709ff..0000000 --- a/Doc/html/general__tim_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ae2c66b7d004eaa522ecfa16e35c3dc6 \ No newline at end of file diff --git a/Doc/html/general__tim_8h__incl.png b/Doc/html/general__tim_8h__incl.png deleted file mode 100644 index 90e478a3892697973fc35c70dffa8e619e7cb723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7324 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 QxsgF%$K*l1mdn%s0v@zoA^-pY diff --git a/Doc/html/general__tim_8h_source.html b/Doc/html/general__tim_8h_source.html deleted file mode 100644 index e269d44..0000000 --- a/Doc/html/general__tim_8h_source.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_tim.h Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_tim.h
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_tim.h
-
4* @brief Заголовочный файл для модуля инициализации таймеров и работы с ними.
-
5**************************************************************************
-
6* @defgroup MY_LIBS_TIM TIM Tools
-
7* @ingroup MYLIBS_PERIPHERAL
-
8* @brief Функции и макросы для удобной работы с TIM.
-
9* @details
-
10Модуль предоставляет универсальные инструменты для работы с TIM:
-
11 - @ref MYLIBS_TIM_GENERAL — базовая инициализация таймеров и прерываний.
-
12 - @ref MYLIBS_TIM_DELAY — функции задержки через таймеры (blocking и non-blocking).
-
13 - @ref MYLIBS_TIM_OC — настройка каналов Output Compare и PWM.
-
14 - @ref MYLIBS_TIM_ENCODER — работа с энкодерами, чтение положения и кнопки.
-
15
-
16* @note Требуется подключение модуля TIM в библиотеке HAL и GPIO (@ref MY_LIBS_GPIO) из MyLibs
-
17@code
-
18#define HAL_TIM_MODULE_ENABLED
-
19@endcode
-
20*************************************************************************/
-
21#ifndef __TIM_GENERAL_H_
-
22#define __TIM_GENERAL_H_
-
23
-
24/////////////////////////////////////////////////////////////////////
-
25/////////////////////////---USER SETTINGS---/////////////////////////
-
26/**
-
27 * @addtogroup TIM_INIT Init defines
-
28 * @ingroup MYLIBS_TIM_GENERAL
-
29 * @brief Настройка таймеров
-
30 * @{
-
31 */
-
32#define HAL_TIM_MODULE_ENABLED
-
33
-
34#define USE_TIM1 ///< Включить TIM1 в @ref TIM_Base_MspInit
-
35#define USE_TIM2 ///< Включить TIM2 в @ref TIM_Base_MspInit
-
36#define USE_TIM3 ///< Включить TIM3 в @ref TIM_Base_MspInit
-
37#define USE_TIM4 ///< Включить TIM4 в @ref TIM_Base_MspInit
-
38#define USE_TIM5 ///< Включить TIM5 в @ref TIM_Base_MspInit
-
39#define USE_TIM6 ///< Включить TIM6 в @ref TIM_Base_MspInit
-
40#define USE_TIM7 ///< Включить TIM7 в @ref TIM_Base_MspInit
-
41#define USE_TIM8 ///< Включить TIM8 в @ref TIM_Base_MspInit
-
42#define USE_TIM9 ///< Включить TIM9 в @ref TIM_Base_MspInit
-
43#define USE_TIM10 ///< Включить TIM10 в @ref TIM_Base_MspInit
-
44#define USE_TIM11 ///< Включить TIM11 в @ref TIM_Base_MspInit
-
45#define USE_TIM12 ///< Включить TIM12 в @ref TIM_Base_MspInit
-
46#define USE_TIM13 ///< Включить TIM13 в @ref TIM_Base_MspInit
-
47#define USE_TIM14 ///< Включить TIM14 в @ref TIM_Base_MspInit
-
48/** TIM_INIT
-
49 * @}
-
50 */
-
51/////////////////////////---USER SETTINGS---/////////////////////////
-
52#include "mylibs_defs.h"
-
53#include "general_gpio.h"
-
54
-
55/////////////////////////////////////////////////////////////////////
-
56////////////////////////////---DEFINES---////////////////////////////
-
57#define TIM_IT_CONF_Pos 0
-
58//#define TIM_PWM_CONF_Pos 1
-
59//#define TIM_CLCK_SRC_CONF_Pos 2
-
60//#define TIM_SLAVE_CONF_Pos 3
-
61//#define TIM_MASTER_CONF_Pos 4
-
62//#define TIM_BDTR_CONF_Pos 5
-
63
-
64#define TIM_IT_CONF (1<<(TIM_IT_CONF_Pos))
-
65//#define TIM_PWM_CONF (1<<(TIM_PWM_Pos))
-
66
-
67////////////////////////////---DEFINES---////////////////////////////]
-
68
-
69
-
70
-
71/////////////////////////////////////////////////////////////////////
-
72///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
73/**
-
74 * @brief Режим прерываний таймера
-
75 * @ingroup MYLIBS_TIM_GENERAL
-
76 */
-
-
77typedef enum
-
78{
-
79 TIM_DEFAULT = 0, ///< Прерываний отключены
-
80 TIM_IT_MODE = TIM_IT_CONF, ///< Прерываний включены
-
81// TIM_PWM_MODE = TIM_PWM_ENABLE,
-
82// TIM_PWM_IT_MODE = TIM_PWM_ENABLE | TIM_IT_CONF,
- -
-
84
-
85/**
-
86 * @brief Длительность тика таймера (частота тактирования таймера)
-
87 * @ingroup MYLIBS_TIM_GENERAL
-
88 * @details enum дает базовые длительности, но можно выставить другие
-
89 * (напр 500 - 0.5 мс)
-
90 */
-
-
91typedef enum
-
92{
-
93 TIM_Base_Disable = 0, ///< Таймер отключен
-
94 TIM_TickBase_1US = 1, ///< Таймер тактируется с частотой 1 МГц
-
95 TIM_TickBase_10US = 10, ///< Таймер тактируется с частотой 100 кГц
-
96 TIM_TickBase_100US = 100, ///< Таймер тактируется с частотой 10 кГц
-
97 TIM_TickBase_1MS = 1000, ///< Таймер тактируется с частотой 1 кГц
-
98 TIM_TickBase_10MS = 10000, ///< Таймер тактируется с частотой 100 Гц
-
99 TIM_TickBase_100MS = 100000, ///< Таймер тактируется с частотой 10 Гц
- -
-
101
-
102/**
-
103 * @brief Структура инициализации таймера
-
104 * @ingroup MYLIBS_TIM_GENERAL
-
105 * @details
-
106 * Содержит все базовые структуры, которые нужны для инициализации таймера.
-
107 * Если структуры настроек не заданы, то они заполнятся сами дефолтными параметрами
-
108 *
-
109 * Также высокоуровневые настройки частоты работы таймера.
-
110 * Если какая-либо высокоуровневая настройка не задана, то
-
111 * по возможности берется низкоуровневая настройка из структур
-
112 */
-
-
113typedef struct // struct with settings for custom function
-
114{
-
115 TIM_HandleTypeDef htim; ///< HAL handle таймера
-
116 TIM_ClockConfigTypeDef sClockSourceConfig; ///< Настройки тактирования таймера
-
117 TIM_SlaveConfigTypeDef sSlaveConfig; ///< Настройки слейв режима таймера
-
118 TIM_MasterConfigTypeDef sMasterConfig; ///< Настройки мастер режима таймера
-
119 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; ///< Настройки дедтаймов таймера
-
120
-
121 TIM_ITModeTypeDef sTimMode; ///< Настройки прерывания таймера
-
122 TIM_MHzTickBaseTypeDef sTickBaseUS; ///< Длительность одного тика
-
123 uint8_t sTickBasePrescaler; ///< Дополнительный делитель, для удобного деления @ref sTickBaseUS
-
124 float sTimAHBFreqMHz; ///< Частота шины тактирования таймера
-
125 float sTimFreqHz; ///< Желаемая частота таймера
-
126
- -
-
128
-
129
-
130/**
-
131 * @brief Структура инициализации енкодера
-
132 * @ingroup MYLIBS_TIM_ENCODER
-
133 * @details
-
134 * Содержит все базовые структуры, которые нужны для инициализации таймера.
-
135 * Если структуры настроек не заданы, то они заполнятся сами дефолтными параметрами
-
136 *
-
137 * Также высокоуровневые настройки частоты работы таймера.
-
138 * Если какая-либо высокоуровневая настройка не задана, то
-
139 * по возможности берется низкоуровневая настройка из структур
-
140 */
-
-
141typedef struct // struct with variables for encoder
-
142{
-
143 int16_t Encoder_Diff; ///< Считанная разница
-
144 uint16_t Encoder_Shdw; ///< Последние считанные тики
-
145
-
146 TIM_HandleTypeDef *htim; ///< Указатель на HAL handle таймера
-
147 TIM_Encoder_InitTypeDef sConfig; ///< Указатель на структуру настройки энкодера
-
148
-
149 GPIO_TypeDef *GPIOx; ///< Порт, куда подключается энкодер
-
150 uint32_t GPIO_PIN_TI1; ///< Пин, куда подключается канал TI1
-
151 uint32_t GPIO_PIN_TI2; ///< Пин, куда подключается канал TI2
-
152 uint32_t GPIO_PIN_SW; ///< Пин, куда кнопка энкодера (если есть)
-
153
-
154 GPIO_SwitchTypeDef Sw; ///< Структура кнопки
-
155
- -
-
157///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
158
-
159/////////////////////////////////////////////////////////////////////
-
160///////////////////////////---FUNCTIONS---///////////////////////////
-
161/**
-
162 * @addtogroup MYLIBS_TIM_GENERAL General tools
-
163 * @ingroup MY_LIBS_TIM
-
164 * @brief Функции для базовой инициализации таймеров
-
165 * @par Пример использования:
-
166 @code
-
167 TIM_SettingsTypeDef tim2Settings;
-
168
-
169 void TIM2_Init(void)
-
170 {
-
171 // Настройка таймера TIM2 на 1 кГц с прерываниями с шагом таймера 10 мкс
-
172 tim2Settings.htim.Instance = TIM2;
-
173 tim2Settings.sTimMode = TIM_IT_MODE;
-
174 tim2Settings.sTickBaseUS = TIM_TickBase_10US;
-
175 tim2Settings.sTickBasePrescaler = 1;
-
176 tim2Settings.sTimFreqHz = 1000; // 1 кГц
-
177 tim2Settings.sTimAHBFreqMHz = 72000000; // Hz
-
178
-
179 if(TIM_Base_Init(&tim2Settings) != HAL_OK)
-
180 {
-
181 Error_Handler();
-
182 }
-
183 }
-
184 @endcode
-
185 * @{
-
186 */
-
187/* Initialize TIM with TIM_SettingsTypeDef structure */
-
188HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef* stim);
-
189/* Initialize TIMs clock and interrupt */
-
190void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode);
-
191/* DeInitialize TIMs clock and interrupt */
-
192void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim);
-
193/** MYLIBS_TIM_GENERAL
-
194 * @}
-
195 */
-
196
-
197/**
-
198 * @addtogroup MYLIBS_TIM_DELAY Delay tools
-
199 * @ingroup MY_LIBS_TIM
-
200 * @brief Функции для формирования задержек с помощью таймеров
-
201 * @par Пример использования:
-
202 @code
-
203 TIM_HandleTypeDef htim2;
-
204
-
205 // блокирующая задержка 500 тиков таймера
-
206 LED_ON();
-
207 TIM_Delay(&htim2, 500);
-
208 LED_OFF();
-
209
-
210
-
211 while(1)
-
212 {
-
213 // не блокирующая задержка 200 тиков таймера
-
214 if(TIM_Delay_NonBlocking(&htim2, 200) == HAL_OK)
-
215 {
-
216 TIM_Delay_Start(&htim2);
-
217 LED_TOOGLE();
-
218 }
-
219 }
-
220 @endcode
-
221 * @{
-
222 */
-
223/* Start delay via TIM */
-
224HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim);
-
225/* Delay via TIM */
-
226HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay);
-
227/* Wait Delay via TIM without blocking app */
-
228HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay);
-
229/** MYLIBS_TIM_DELAY
-
230 * @}
-
231 */
-
232
-
233/**
-
234 * @addtogroup MYLIBS_TIM_OC PWM/OC Channels tools
-
235 * @ingroup MY_LIBS_TIM
-
236 * @brief Функции для инициализации базовых функций каналов таймера
-
237 * @par Пример использования:
-
238 @code
-
239 void PWM_Channel_Init_Example(void)
-
240 {
-
241 TIM_HandleTypeDef htim3;
-
242 TIM_OC_InitTypeDef sConfigOC;
-
243 GPIO_TypeDef *GPIOx = GPIOB;
-
244 uint32_t PWM_PIN = GPIO_PIN_0;
-
245
-
246 // Настройка таймера и канала PWM
-
247 TIM_Output_PWM_Init(&htim3, &sConfigOC, TIM_CHANNEL_1, GPIOx, PWM_PIN);
-
248
-
249 // Настройка компаратора OC
-
250 TIM_OC_Comparator_Init(&htim3, TIM_CHANNEL_1);
-
251 }
-
252 @endcode
-
253 * @{
-
254 */
-
255/* Initialize PWM Channel and GPIO for output */
-
256HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN);
-
257/* Initialize OC Comparator */
-
258HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL);
-
259/** MYLIBS_TIM_ENCODER
-
260 * @}
-
261 */
-
262
-
263/**
-
264 * @addtogroup MYLIBS_TIM_ENCODER Encoder tools
-
265 * @ingroup MY_LIBS_TIM
-
266 * @brief Функции для считывания энкодера
-
267 * @par Пример использования:
-
268 @code
-
269 TIM_EncoderTypeDef henc1;
-
270 TIM_HandleTypeDef htim4;
-
271
-
272 // инициализация
-
273 henc1.htim = &htim4;
-
274 henc1.GPIOx = GPIOA;
-
275 henc1.GPIO_PIN_TI1 = GPIO_PIN_0;
-
276 henc1.GPIO_PIN_TI2 = GPIO_PIN_1;
-
277 TIM_Encoder_Init(&henc1, &htim4);
-
278
-
279 // считывание энкодера и кнопки
-
280 int16_t delta = TIM_Encoder_Read(&henc1);
-
281 setpoint_tmp += delta;
-
282 if(TIM_Encoder_ReadSwitch(&henc1))
-
283 {
-
284 setpoint = setpoint_tmp; // подтвердить новое значение
-
285 }
-
286 @endcode
-
287 * @{
-
288 */
-
289/* Initialize TIM Encoder functional */
-
290HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim);
-
291/* Считать энкодер */
-
292HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc);
-
293/* Считать кнопку энкодера */
- -
295/** MYLIBS_TIM_ENCODER
-
296 * @}
-
297 */
-
298///////////////////////////---FUNCTIONS---///////////////////////////
-
299
-
300
-
301#endif // __TIM_GENERAL_H_
-
Заголовочный файл для модуля инициализации портов и работы с ними.
-
HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)
Задержка в тиках таймера (неблокирующая).
-
HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim)
Начать отсчет неблокирующей задержки.
-
HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)
Задержка в тиках таймера (блокирующая).
-
int TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc)
Считать кнопку энкодера.
-
HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim)
Инициализация режима энкодер у таймера.
-
HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc)
Считать энкодер.
-
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
Инициализация таймера.
Definition general_tim.c:34
-
void TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)
Деинициализация CLK и NVIC таймеров.
-
TIM_MHzTickBaseTypeDef
Длительность тика таймера (частота тактирования таймера)
Definition general_tim.h:92
-
void TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
Инициализация CLK и NVIC таймеров.
-
TIM_ITModeTypeDef
Режим прерываний таймера
Definition general_tim.h:78
-
@ TIM_TickBase_10US
Таймер тактируется с частотой 100 кГц
Definition general_tim.h:95
-
@ TIM_TickBase_100US
Таймер тактируется с частотой 10 кГц
Definition general_tim.h:96
-
@ TIM_TickBase_100MS
Таймер тактируется с частотой 10 Гц
Definition general_tim.h:99
-
@ TIM_TickBase_1US
Таймер тактируется с частотой 1 МГц
Definition general_tim.h:94
-
@ TIM_TickBase_1MS
Таймер тактируется с частотой 1 кГц
Definition general_tim.h:97
-
@ TIM_TickBase_10MS
Таймер тактируется с частотой 100 Гц
Definition general_tim.h:98
-
@ TIM_Base_Disable
Таймер отключен
Definition general_tim.h:93
-
@ TIM_IT_MODE
Прерываний включены
Definition general_tim.h:80
-
@ TIM_DEFAULT
Прерываний отключены
Definition general_tim.h:79
-
HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN)
Инициализация выхода ШИМ таймера.
-
HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
Инициализация OC компаратора таймера.
-
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура кнопки
-
Структура инициализации енкодера
-
TIM_Encoder_InitTypeDef sConfig
Указатель на структуру настройки энкодера
-
uint16_t Encoder_Shdw
Последние считанные тики
-
uint32_t GPIO_PIN_TI1
Пин, куда подключается канал TI1.
-
uint32_t GPIO_PIN_TI2
Пин, куда подключается канал TI2.
-
uint32_t GPIO_PIN_SW
Пин, куда кнопка энкодера (если есть)
-
int16_t Encoder_Diff
Считанная разница
-
GPIO_SwitchTypeDef Sw
Структура кнопки
-
GPIO_TypeDef * GPIOx
Порт, куда подключается энкодер
-
TIM_HandleTypeDef * htim
Указатель на HAL handle таймера
-
Структура инициализации таймера
-
uint8_t sTickBasePrescaler
Дополнительный делитель, для удобного деления sTickBaseUS.
-
TIM_MasterConfigTypeDef sMasterConfig
Настройки мастер режима таймера
-
TIM_ClockConfigTypeDef sClockSourceConfig
Настройки тактирования таймера
-
TIM_MHzTickBaseTypeDef sTickBaseUS
Длительность одного тика
-
float sTimAHBFreqMHz
Частота шины тактирования таймера
-
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig
Настройки дедтаймов таймера
-
TIM_SlaveConfigTypeDef sSlaveConfig
Настройки слейв режима таймера
-
TIM_ITModeTypeDef sTimMode
Настройки прерывания таймера
-
TIM_HandleTypeDef htim
HAL handle таймера
-
float sTimFreqHz
Желаемая частота таймера
-
-
-
- - - - diff --git a/Doc/html/general__uart_8c.html b/Doc/html/general__uart_8c.html deleted file mode 100644 index 5d34ff8..0000000 --- a/Doc/html/general__uart_8c.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_uart.c File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_uart.c File Reference
-
-
- -

Модуль для инициализации UART. -More...

-
#include "general_uart.h"
-#include "general_gpio.h"
-
Include dependency graph for general_uart.c:
-
-
- -
-

Go to the source code of this file.

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

-Functions

HAL_StatusTypeDef UART_Base_Init (UART_SettingsTypeDef *suart)
 Инициализация UART с помощью структуры UART_SettingsTypeDef.
void UART_GPIO_Init (GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX)
 Инициализация GPIO для UART.
void UART_DMA_Init (UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
 Инициализация DMA для UART.
void UART_MspInit (UART_HandleTypeDef *huart)
 Настройка тактирования и прерываний UART.
void UART_MspDeInit (UART_HandleTypeDef *huart)
 Деинициализация тактирования и прерываний UART.
HAL_StatusTypeDef UART_Check_Init_Struct (UART_SettingsTypeDef *suart)
 Проверка корректности структуры инициализации UART.
-

Detailed Description

-

Модуль для инициализации UART.

-

Реализация функций для работы с UART:

    -
  • Инициализация UART и его линий RX/TX
  • -
  • Настройка DMA для UART
  • -
  • Настройка GPIO для UART
  • -
  • Настройка NVIC и тактирования UART
  • -
- -

Definition in file general_uart.c.

-

Function Documentation

- -

◆ UART_GPIO_Init()

- -
-
- - - - - - - - - - - - - - - - -
void UART_GPIO_Init (GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN_RX,
uint16_t GPIO_PIN_TX )
-
- -

Инициализация GPIO для UART.

-
Parameters
- - - - -
GPIOxПорт для настройки.
GPIO_PIN_RXПин для приема.
GPIO_PIN_TXПин для передачи.
-
-
- -

Definition at line 69 of file general_uart.c.

- -
-
- -

◆ UART_DMA_Init()

- -
-
- - - - - - - - - - - - - - - - - - - - - -
void UART_DMA_Init (UART_HandleTypeDef * huart,
DMA_HandleTypeDef * hdma_rx,
DMA_Stream_TypeDef * DMAChannel,
uint32_t DMA_CHANNEL_X )
-
- -

Инициализация DMA для UART.

-
Parameters
- - - - - -
huartУказатель на хендл UART.
hdma_rxУказатель на хендл DMA для линии приема UART.
DMAChannelУказатель на канал DMA/поток DMA в STM32F407.
DMA_CHANNEL_XКанал DMA.
-
-
- -

Definition at line 109 of file general_uart.c.

- -
-
-
-
- -
- - - - diff --git a/Doc/html/general__uart_8c.js b/Doc/html/general__uart_8c.js deleted file mode 100644 index 9425ccf..0000000 --- a/Doc/html/general__uart_8c.js +++ /dev/null @@ -1,9 +0,0 @@ -var general__uart_8c = -[ - [ "UART_Base_Init", "group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154", null ], - [ "UART_GPIO_Init", "general__uart_8c.html#a3abae05bbde5f3b402bf18ca13dc6a0b", null ], - [ "UART_DMA_Init", "general__uart_8c.html#ad82d0cbd19151675135fd75dad315d05", null ], - [ "UART_MspInit", "group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb", null ], - [ "UART_MspDeInit", "group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc", null ], - [ "UART_Check_Init_Struct", "group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__uart_8c__incl.map b/Doc/html/general__uart_8c__incl.map deleted file mode 100644 index e71c772..0000000 --- a/Doc/html/general__uart_8c__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Doc/html/general__uart_8c__incl.md5 b/Doc/html/general__uart_8c__incl.md5 deleted file mode 100644 index 7ab45ec..0000000 --- a/Doc/html/general__uart_8c__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5138957c180f3bda2d688862ab8afa6e \ No newline at end of file diff --git a/Doc/html/general__uart_8c__incl.png b/Doc/html/general__uart_8c__incl.png deleted file mode 100644 index 1331e53727fece7cbf9d6f6f37143f93a94b801e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7148 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 - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Src/general_uart.c Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_uart.c
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_uart.c
-
4* @brief Модуль для инициализации UART.
-
5**************************************************************************
-
6Реализация функций для работы с UART:
-
7 - Инициализация UART и его линий RX/TX
-
8 - Настройка DMA для UART
-
9 - Настройка GPIO для UART
-
10 - Настройка NVIC и тактирования UART
-
11**************************************************************************/
-
12#include "general_uart.h"
-
13#include "general_gpio.h"
-
14
-
15//-------------------------------------------------------------------
-
16//------------------------UART INIT FUNCTIONS------------------------
-
17/**
-
18 * @brief Инициализация UART с помощью структуры UART_SettingsTypeDef.
-
19 * @param suart Указатель на структуру с настройками UART.
-
20 * @return HAL status.
-
21 * @details
-
22 * Инициализирует UART и его GPIO и при необходимости DMA.
-
23 * Настройка аналогична HAL_UART_Init
-
24 * @code
-
25 * suart.huart.Init...
-
26 * @endcode
-
27 * но дополнительно надо прописать пины RX/TX @ref UART_SettingsTypeDef
-
28 * @code
-
29 * suart->GPIOx, suart->GPIO_PIN_RX, suart->GPIO_PIN_TX
-
30 * @endcode
-
31 */
-
-
32HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart)
-
33{ // function takes setting structure for init
-
34
-
35 // check is settings are valid
-
36 if(UART_Check_Init_Struct(suart) != HAL_OK)
-
37 return HAL_ERROR;
-
38
-
39 suart->huart.Init.Mode = UART_MODE_TX_RX;
-
40
-
41 UART_MspInit(&suart->huart);
-
42
-
43
-
44 if (HAL_UART_Init(&suart->huart) != HAL_OK)
-
45 {
- -
47 return HAL_ERROR;
-
48 }
-
49
-
50 // init gpio from UARTSettings structure
-
51 UART_GPIO_Init(suart->GPIOx, suart->GPIO_PIN_RX, suart->GPIO_PIN_TX);
-
52
-
53 __HAL_UART_ENABLE_IT(&suart->huart, UART_IT_IDLE);
-
54 // init dma from UARTSettings structure if need
-
55 if (suart->DMAChannel != 0)
-
56 UART_DMA_Init(&suart->huart, suart->huart.hdmarx, suart->DMAChannel, suart->DMA_CHANNEL_X);
-
57
-
58
-
59 return HAL_OK;
-
60}
-
-
61
-
62
-
63/**
-
64 * @brief Инициализация GPIO для UART.
-
65 * @param GPIOx Порт для настройки.
-
66 * @param GPIO_PIN_RX Пин для приема.
-
67 * @param GPIO_PIN_TX Пин для передачи.
-
68 */
-
-
69void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX)
-
70{ // function takes port and pins (for rx and tx)
-
71 GPIO_InitTypeDef GPIO_InitStruct = {0};
-
72
-
73 // choose port for enable clock
-
74 GPIO_Clock_Enable(GPIOx);
-
75
-
76 //USART3 GPIO Configuration
-
77 //GPIO_PIN_TX ------> USART_TX
-
78 //GPIO_PIN_RX ------> USART_RX
-
79
-
80#if defined(STM32F4xx) // gpio init for 407
-
81 GPIO_InitStruct.Pin = GPIO_PIN_TX|GPIO_PIN_RX;
-
82 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
83 GPIO_InitStruct.Pull = GPIO_NOPULL;
-
84 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
85 GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
-
86 HAL_GPIO_Init(GPIOx, &GPIO_InitStruct);
-
87#elif defined(STM32F1xx) // gpio init for atm403/stm103
-
88 //GPIO_PIN_TX ------> USART_TX
-
89 GPIO_InitStruct.Pin = GPIO_PIN_TX;
-
90 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
91 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
-
92 HAL_GPIO_Init(GPIOx, &GPIO_InitStruct);
-
93
-
94// GPIO_PIN_RX ------> USART_RX
-
95 GPIO_InitStruct.Pin = GPIO_PIN_RX;
-
96 GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-
97 GPIO_InitStruct.Pull = GPIO_NOPULL;
-
98 HAL_GPIO_Init(GPIOx, &GPIO_InitStruct);
-
99#endif
-
100}
-
-
101
-
102/**
-
103 * @brief Инициализация DMA для UART.
-
104 * @param huart Указатель на хендл UART.
-
105 * @param hdma_rx Указатель на хендл DMA для линии приема UART.
-
106 * @param DMAChannel Указатель на канал DMA/поток DMA в STM32F407.
-
107 * @param DMA_CHANNEL_X Канал DMA.
-
108 */
-
-
109void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
-
110{ // function takes uart and dma handlers and dmachannel for uart
-
111 // for now only dma rx is supported, tx maybe later if needed
-
112 // calc defines on boot_project_setup.h
-
113
-
114 /* USART3 DMA Init */
-
115 /* USART3_RX Init */
-
116
-
117 hdma_rx->Instance = DMAChannel;
-
118#if defined(STM32F4xx) // dma channel choose for 407
-
119 hdma_rx->Init.Channel = DMA_CHANNEL_X;
-
120#endif
-
121 hdma_rx->Init.Direction = DMA_PERIPH_TO_MEMORY;
-
122 hdma_rx->Init.PeriphInc = DMA_PINC_DISABLE;
-
123 hdma_rx->Init.MemInc = DMA_MINC_ENABLE;
-
124 hdma_rx->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
-
125 hdma_rx->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
-
126 hdma_rx->Init.Mode = DMA_CIRCULAR;
-
127 hdma_rx->Init.Priority = DMA_PRIORITY_LOW;
-
128 if (HAL_DMA_Init(hdma_rx) != HAL_OK)
-
129 {
- -
131 }
-
132
-
133 __USER_LINKDMA(huart,hdmarx,hdma_rx);
-
134
-
135
-
136 // __USER_LINKDMA is need because __HAL_LINKDMA is written for global defined hdma_rx
-
137 // so you get error because hal uses . insted of ->
-
138}
-
-
139
-
140/**
-
141 * @brief Настройка тактирования и прерываний UART.
-
142 * @param huart Указатель на хендл UART.
-
143 * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых UART,
-
144 дефайнами @ref UART_INIT в @ref general_uart.h определяются используемые UART.
-
145 */
-
-
146void UART_MspInit(UART_HandleTypeDef *huart) // analog for hal function
-
147{
-
148// __RCC_DMA_UART_CLK_ENABLE();
-
149// /* DMA interrupt init */
-
150// /* DMA1_Stream1_IRQn interrupt configuration */
-
151// HAL_NVIC_SetPriority(DMA_UART_IRQn, 0, 0);
-
152// HAL_NVIC_EnableIRQ(DMA_UART_IRQn);
-
153
-
154 // rcc, dma and interrupt init for USARTs
-
155 // GPIO init was moved to own functions UART_GPIO_Init
-
156 if(0);
-
157#ifdef USE_USART1
-
158 else if(huart->Instance==USART1)
-
159 {
-
160
-
161 /* DMA2 clock enable */
-
162 __HAL_RCC_DMA2_CLK_ENABLE();
-
163 /* DMA interrupt init */
-
164 HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
-
165 HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
-
166
-
167 /* USART1 clock enable */
-
168 __HAL_RCC_USART1_CLK_ENABLE();
-
169
-
170 /* USART1 interrupt Init */
-
171 HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
-
172 HAL_NVIC_EnableIRQ(USART1_IRQn);
-
173 }
-
174#endif // USE_USART1
-
175#ifdef USE_USART2
-
176 else if(huart->Instance==USART2)
-
177 {
-
178 /* DMA1 clock enable */
-
179 __HAL_RCC_DMA1_CLK_ENABLE();
-
180 /* DMA interrupt init */
-
181 HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
-
182 HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
-
183
-
184 /* USART2 clock enable */
-
185 __HAL_RCC_USART2_CLK_ENABLE();
-
186
-
187 /* USART2 interrupt Init */
-
188 HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
-
189 HAL_NVIC_EnableIRQ(USART2_IRQn);
-
190 }
-
191#endif // USE_USART2
-
192#ifdef USE_USART3
-
193 else if(huart->Instance==USART3)
-
194 {
-
195 /* DMA1 clock enable */
-
196 __HAL_RCC_DMA1_CLK_ENABLE();
-
197 /* DMA interrupt init */
-
198 HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
-
199 HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
-
200
-
201 /* USART3 clock enable */
-
202 __HAL_RCC_USART3_CLK_ENABLE();
-
203 /* USART3 interrupt Init */
-
204 HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
-
205 HAL_NVIC_EnableIRQ(USART3_IRQn);
-
206 }
-
207#endif // USE_USART3
-
208#ifdef USE_UART4
-
209 else if(huart->Instance==UART4)
-
210 {
-
211 /* DMA1 clock enable */
-
212 __HAL_RCC_DMA1_CLK_ENABLE();
-
213 /* DMA interrupt init */
-
214 HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 0, 0);
-
215 HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);
-
216
-
217 /* UART4 clock enable */
-
218 __HAL_RCC_UART4_CLK_ENABLE();
-
219
-
220 /* UART4 interrupt Init */
-
221 HAL_NVIC_SetPriority(UART4_IRQn, 0, 0);
-
222 HAL_NVIC_EnableIRQ(UART4_IRQn);
-
223 }
-
224#endif // USE_UART4
-
225#ifdef USE_UART5
-
226 else if(huart->Instance==UART5)
-
227 {
-
228 /* DMA1 clock enable */
-
229 __HAL_RCC_DMA1_CLK_ENABLE();
-
230 /* DMA interrupt init */
-
231 HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 0, 0);
-
232 HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
-
233
-
234 /* UART5 clock enable */
-
235 __HAL_RCC_DMA1_CLK_ENABLE();
-
236
-
237 /* UART5 interrupt Init */
-
238 HAL_NVIC_SetPriority(UART5_IRQn, 0, 0);
-
239 HAL_NVIC_EnableIRQ(UART5_IRQn);
-
240 }
-
241#endif // USE_UART5
-
242#ifdef USE_USART6
-
243 else if(huart->Instance==USART6)
-
244 {
-
245 /* DMA2 clock enable */
-
246 __HAL_RCC_DMA2_CLK_ENABLE();
-
247 /* DMA interrupt init */
-
248 HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
-
249 HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
-
250
-
251 /* USART6 clock enable */
-
252 __HAL_RCC_USART6_CLK_ENABLE();
-
253
-
254 /* USART6 interrupt Init */
-
255 HAL_NVIC_SetPriority(USART6_IRQn, 0, 0);
-
256 HAL_NVIC_EnableIRQ(USART6_IRQn);
-
257 }
-
258#endif // USE_USART6
-
259}
-
-
260
-
261/**
-
262 * @brief Деинициализация тактирования и прерываний UART.
-
263 * @param huart Указатель на хендл UART.
-
264 * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых UART,
-
265 дефайнами @ref UART_INIT в @ref general_uart.h определяются используемые UART.
-
266 */
-
-
267void UART_MspDeInit(UART_HandleTypeDef *huart) // analog for hal function
-
268{
-
269 // rcc, dma and interrupt init for USARTs
-
270 // GPIO init was moved to own functions UART_GPIO_Init
-
271 if(0);
-
272#ifdef USE_USART1
-
273 else if(huart->Instance==USART1)
-
274 {
-
275
-
276// /* DMA2 clock enable */
-
277// __HAL_RCC_DMA2_CLK_ENABLE();
-
278// /* DMA interrupt init */
-
279// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
-
280// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
-
281
-
282 /* USART1 clock reset */
-
283 __HAL_RCC_USART1_FORCE_RESET();
-
284 __HAL_RCC_USART1_RELEASE_RESET();
-
285 }
-
286#endif // USE_USART1
-
287#ifdef USE_USART2
-
288 else if(huart->Instance==USART2)
-
289 {
-
290// /* DMA1 clock enable */
-
291// __HAL_RCC_DMA1_CLK_ENABLE();
-
292// /* DMA interrupt init */
-
293// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
-
294// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
-
295
-
296 /* USART2 clock reset */
-
297 __HAL_RCC_USART2_FORCE_RESET();
-
298 __HAL_RCC_USART2_RELEASE_RESET();
-
299 }
-
300#endif // USE_USART2
-
301#ifdef USE_USART3
-
302 else if(huart->Instance==USART3)
-
303 {
-
304// /* DMA1 clock enable */
-
305// __HAL_RCC_DMA1_CLK_ENABLE();
-
306// /* DMA interrupt init */
-
307// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
-
308// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
-
309
-
310 /* USART3 clock reset */
-
311 __HAL_RCC_USART3_FORCE_RESET();
-
312 __HAL_RCC_USART3_RELEASE_RESET();
-
313 }
-
314#endif // USE_USART3
-
315#ifdef USE_UART4
-
316 else if(huart->Instance==UART4)
-
317 {
-
318// /* DMA1 clock enable */
-
319// __HAL_RCC_DMA1_CLK_ENABLE();
-
320// /* DMA interrupt init */
-
321// HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 0, 0);
-
322// HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);
-
323
-
324 /* UART4 clock reset */
-
325 __HAL_RCC_UART4_FORCE_RESET();
-
326 __HAL_RCC_UART4_RELEASE_RESET();
-
327 }
-
328#endif // USE_UART4
-
329#ifdef USE_UART5
-
330 else if(huart->Instance==UART5)
-
331 {
-
332// /* DMA1 clock enable */
-
333// __HAL_RCC_DMA1_CLK_ENABLE();
-
334// /* DMA interrupt init */
-
335// HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 0, 0);
-
336// HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
-
337
-
338 /* UART5 clock reset */
-
339 __HAL_RCC_UART5_FORCE_RESET();
-
340 __HAL_RCC_UART5_RELEASE_RESET();
-
341 }
-
342#endif // USE_UART5
-
343#ifdef USE_USART6
-
344 else if(huart->Instance==USART6)
-
345 {
-
346// /* DMA2 clock enable */
-
347// __HAL_RCC_DMA2_CLK_ENABLE();
-
348// /* DMA interrupt init */
-
349// HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
-
350// HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
-
351
-
352 /* USART6 clock reset */
-
353 __HAL_RCC_USART6_FORCE_RESET();
-
354 __HAL_RCC_USART6_RELEASE_RESET();
-
355 }
-
356#endif // USE_USART6
-
357}
-
-
358
-
359/**
-
360 * @brief Проверка корректности структуры инициализации UART.
-
361 * @param suart Указатель на структуру с настройками UART.
-
362 * @return HAL status.
-
363 */
-
- -
365{
-
366 // check is settings are valid
-
367 if (!IS_UART_INSTANCE(suart->huart.Instance))
-
368 return HAL_ERROR;
-
369
-
370 if (!IS_UART_BAUDRATE(suart->huart.Init.BaudRate) || (suart->huart.Init.BaudRate == NULL))
-
371 return HAL_ERROR;
-
372
-
373 if (!IS_GPIO_ALL_INSTANCE(suart->GPIOx))
-
374 return HAL_ERROR;
-
375
-
376 if (!IS_GPIO_PIN(suart->GPIO_PIN_RX) && !IS_GPIO_PIN(suart->GPIO_PIN_TX)) // if both pins arent set up
-
377 return HAL_ERROR;
-
378
-
379 return HAL_OK;
-
380}
-
-
381
-
382//------------------------UART INIT FUNCTIONS------------------------
-
383//-------------------------------------------------------------------
-
Заголовочный файл для модуля инициализации портов и работы с ними.
-
void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX)
Инициализация GPIO для UART.
-
void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
Инициализация DMA для UART.
-
Заголовочный файл для модуля инициализации UART.
-
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
Definition mylibs_defs.h:31
-
HAL_StatusTypeDef UART_Check_Init_Struct(UART_SettingsTypeDef *suart)
Проверка корректности структуры инициализации UART.
-
void UART_MspDeInit(UART_HandleTypeDef *huart)
Деинициализация тактирования и прерываний UART.
-
void UART_MspInit(UART_HandleTypeDef *huart)
Настройка тактирования и прерываний UART.
-
HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart)
Инициализация UART с помощью структуры UART_SettingsTypeDef.
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
-
Структура настроек UART.
-
uint32_t DMA_CHANNEL_X
Номер канала DMA (0 если не нужен)
-
DMA_Stream_TypeDef * DMAChannel
Канал DMA (NULL если не нужен)
-
uint16_t GPIO_PIN_RX
Пин приема
-
uint16_t GPIO_PIN_TX
Пин передачи
-
UART_HandleTypeDef huart
HAL handle UART.
-
GPIO_TypeDef * GPIOx
Порт для UART.
-
-
-
- - - - diff --git a/Doc/html/general__uart_8h.html b/Doc/html/general__uart_8h.html deleted file mode 100644 index 2f9740f..0000000 --- a/Doc/html/general__uart_8h.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_uart.h File Reference - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_uart.h File Reference
-
-
- -

Заголовочный файл для модуля инициализации UART. -More...

-
#include "mylibs_defs.h"
-
Include dependency graph for general_uart.h:
-
-
- -
This graph shows which files directly or indirectly include this file:
-
-
- -
-

Go to the source code of this file.

- - - - -

-Classes

struct  UART_SettingsTypeDef
 Структура настроек UART. More...
- - - - - - - - - - - - - - - -

-Macros

#define HAL_UART_MODULE_ENABLED
 Включение HAL UART.
#define USE_USART1
 Включить USART1 в UART_MspInit.
#define USE_USART2
 Включить USART2 в UART_MspInit.
#define USE_USART3
 Включить USART3 в UART_MspInit.
#define USE_UART4
 Включить UART4 в UART_MspInit.
#define USE_UART5
 Включить UART5 в UART_MspInit.
#define USE_USART6
 Включить USART6 в UART_MspInit.
- - - - - - - - - -

-Functions

HAL_StatusTypeDef UART_Base_Init (UART_SettingsTypeDef *suart)
 Инициализация UART с помощью структуры UART_SettingsTypeDef.
HAL_StatusTypeDef UART_Check_Init_Struct (UART_SettingsTypeDef *suart)
 Проверка корректности структуры инициализации UART.
void UART_MspInit (UART_HandleTypeDef *huart)
 Настройка тактирования и прерываний UART.
void UART_MspDeInit (UART_HandleTypeDef *huart)
 Деинициализация тактирования и прерываний UART.
-

Detailed Description

-

Заголовочный файл для модуля инициализации UART.

- -

Definition in file general_uart.h.

-
-
- -
- - - - diff --git a/Doc/html/general__uart_8h.js b/Doc/html/general__uart_8h.js deleted file mode 100644 index 8784c8c..0000000 --- a/Doc/html/general__uart_8h.js +++ /dev/null @@ -1,14 +0,0 @@ -var general__uart_8h = -[ - [ "HAL_UART_MODULE_ENABLED", "group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89", null ], - [ "USE_USART1", "group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b", null ], - [ "USE_USART2", "group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d", null ], - [ "USE_USART3", "group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976", null ], - [ "USE_UART4", "group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7", null ], - [ "USE_UART5", "group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340", null ], - [ "USE_USART6", "group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868", null ], - [ "UART_Base_Init", "group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154", null ], - [ "UART_Check_Init_Struct", "group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a", null ], - [ "UART_MspInit", "group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb", null ], - [ "UART_MspDeInit", "group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc", null ] -]; \ No newline at end of file diff --git a/Doc/html/general__uart_8h__dep__incl.map b/Doc/html/general__uart_8h__dep__incl.map deleted file mode 100644 index 018bede..0000000 --- a/Doc/html/general__uart_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/general__uart_8h__dep__incl.md5 b/Doc/html/general__uart_8h__dep__incl.md5 deleted file mode 100644 index 6db4c7d..0000000 --- a/Doc/html/general__uart_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6bb50d26e5b3283573c6c05b2d6234bd \ No newline at end of file diff --git a/Doc/html/general__uart_8h__dep__incl.png b/Doc/html/general__uart_8h__dep__incl.png deleted file mode 100644 index 9824e4d879c9e184b5002e1dbfcaf0c44dbdc99a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2913 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 - - - - - - - - diff --git a/Doc/html/general__uart_8h__incl.md5 b/Doc/html/general__uart_8h__incl.md5 deleted file mode 100644 index 0460597..0000000 --- a/Doc/html/general__uart_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -82fa5509209ca330e6fbcd1a22121907 \ No newline at end of file diff --git a/Doc/html/general__uart_8h__incl.png b/Doc/html/general__uart_8h__incl.png deleted file mode 100644 index 1590198fd4625b6cff71472adfca43504b4a0466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4102 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 E0)R@~qW}N^ diff --git a/Doc/html/general__uart_8h_source.html b/Doc/html/general__uart_8h_source.html deleted file mode 100644 index bc91a20..0000000 --- a/Doc/html/general__uart_8h_source.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_uart.h Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
general_uart.h
-
-
-Go to the documentation of this file.
1/**
-
2**************************************************************************
-
3* @file general_uart.h
-
4* @brief Заголовочный файл для модуля инициализации UART.
-
5**************************************************************************
-
6* @defgroup MY_LIBS_UART UART Tools
-
7* @ingroup MYLIBS_PERIPHERAL
-
8* @brief Функции и макросы для удобной работы с UART.
-
9* @details
-
10Модуль предоставляет функции для базовой инициализации UART
-
11
-
12
-
13@par Пример использования:
-
14@code
-
15// Структура настроек UART
-
16UART_SettingsTypeDef uart2Settings;
-
17
-
18void UART2_Init(void)
-
19{
-
20 // Настройка UART2 с 115200 бод, 8 бит, 1 стоп-бит, без паритета
-
21 uart2Settings.huart.Instance = USART2;
-
22 uart2Settings.huart.Init.BaudRate = 115200;
-
23 uart2Settings.huart.Init.WordLength = UART_WORDLENGTH_8B;
-
24 uart2Settings.huart.Init.StopBits = UART_STOPBITS_1;
-
25 uart2Settings.huart.Init.Parity = UART_PARITY_NONE;
-
26 uart2Settings.huart.Init.Mode = UART_MODE_TX_RX;
-
27 uart2Settings.huart.Init.HwFlowCtl = UART_HWCONTROL_NONE;
-
28 uart2Settings.huart.Init.OverSampling = UART_OVERSAMPLING_16;
-
29
-
30 // Настройка GPIO
-
31 uart2Settings.GPIOx = GPIOA;
-
32 uart2Settings.GPIO_PIN_TX = GPIO_PIN_2;
-
33 uart2Settings.GPIO_PIN_RX = GPIO_PIN_3;
-
34
-
35 // DMA не используется в этом примере
-
36 uart2Settings.DMAChannel = NULL;
-
37 uart2Settings.DMA_CHANNEL_X = 0;
-
38
-
39 // Инициализация UART
-
40 if(UART_Base_Init(&uart2Settings) != HAL_OK)
-
41 {
-
42 // Обработка ошибки
-
43 Error_Handler();
-
44 }
-
45}
-
46@endcode
-
47
-
48* @note Требуется подключение модуля UART в библиотеке HAL
-
49@code
-
50#define HAL_UART_MODULE_ENABLED
-
51@endcode
-
52* @{
-
53*************************************************************************/
-
54#ifndef __UART_GENERAL_H_
-
55#define __UART_GENERAL_H_
-
56
-
57/////////////////////////////////////////////////////////////////////
-
58/////////////////////////---USER SETTINGS---/////////////////////////
-
59/**
-
60 * @addtogroup UART_INIT Init defines
-
61 * @ingroup MY_LIBS_UART
-
62 * @brief Настройка UART
-
63 * @{
-
64 */
-
65#define HAL_UART_MODULE_ENABLED ///< Включение HAL UART
-
66
-
67#define USE_USART1 ///< Включить USART1 в @ref UART_MspInit
-
68#define USE_USART2 ///< Включить USART2 в @ref UART_MspInit
-
69#define USE_USART3 ///< Включить USART3 в @ref UART_MspInit
-
70#define USE_UART4 ///< Включить UART4 в @ref UART_MspInit
-
71#define USE_UART5 ///< Включить UART5 в @ref UART_MspInit
-
72#define USE_USART6 ///< Включить USART6 в @ref UART_MspInit
-
73/** UART_INIT
-
74 * @}
-
75 */
-
76/////////////////////////---USER SETTINGS---/////////////////////////
-
77#include "mylibs_defs.h"
-
78
-
79
-
80
-
81/////////////////////////////////////////////////////////////////////
-
82////////////////////////////---DEFINES---////////////////////////////
-
83
-
84
-
85
-
86////////////////////////////---DEFINES---////////////////////////////
-
87
-
88
-
89/////////////////////////////////////////////////////////////////////
-
90///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
91/**
-
92 * @brief Структура настроек UART
-
93 * @details Содержит все необходимые параметры для инициализации UART,
-
94 * включая GPIO и DMA.
-
95 */
-
-
96typedef struct
-
97{
-
98 UART_HandleTypeDef huart; ///< HAL handle UART
-
99
-
100 GPIO_TypeDef *GPIOx; ///< Порт для UART
-
101 uint16_t GPIO_PIN_RX; ///< Пин приема
-
102 uint16_t GPIO_PIN_TX; ///< Пин передачи
-
103
-
104 DMA_Stream_TypeDef *DMAChannel; ///< Канал DMA (NULL если не нужен)
-
105 uint32_t DMA_CHANNEL_X; ///< Номер канала DMA (0 если не нужен)
-
106
- -
-
108
-
109///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
110
-
111
-
112/////////////////////////////////////////////////////////////////////
-
113///////////////////////////---FUNCTIONS---///////////////////////////
-
114
-
115/* Инициализация UART с использованием структуры настроек */
-
116HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart);
-
117
-
118/* Проверка корректности структуры настроек UART */
-
119HAL_StatusTypeDef UART_Check_Init_Struct(UART_SettingsTypeDef *suart);
-
120
-
121/* Инициализация тактирования и прерываний для выбранного UART */
-
122void UART_MspInit(UART_HandleTypeDef *huart);
-
123
-
124/* Деинициализация тактирования и прерываний для выбранного UART */
-
125void UART_MspDeInit(UART_HandleTypeDef *huart);
-
126
-
127
-
128/**
-
129 * @cond UART_INTERNAL
-
130 */
-
131
-
132/* Настройка GPIO для UART */
-
133void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX);
-
134
-
135/* Настройка DMA для UART */
-
136void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);
-
137
-
138#ifndef __USER_LINKDMA
-
139/**
-
140 * @brief Аналог HAL макроса для привязки DMA к UART.
-
141 * @note @ref __HAL_LINKDMA.
-
142 */
-
143#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
-
144do{ \
-
145(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \
-
146(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
-
147#endif
-
148
-
149/** @endcond */
-
150///////////////////////////---FUNCTIONS---///////////////////////////
-
151
-
152#endif // __UART_GENERAL_H_
-
153
-
154/** MY_LIBS_UART
-
155 * @}
-
156 */
-
void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX)
Инициализация GPIO для UART.
-
void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
Инициализация DMA для UART.
-
HAL_StatusTypeDef UART_Check_Init_Struct(UART_SettingsTypeDef *suart)
Проверка корректности структуры инициализации UART.
-
void UART_MspDeInit(UART_HandleTypeDef *huart)
Деинициализация тактирования и прерываний UART.
-
void UART_MspInit(UART_HandleTypeDef *huart)
Настройка тактирования и прерываний UART.
-
HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart)
Инициализация UART с помощью структуры UART_SettingsTypeDef.
-
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура настроек UART.
-
uint32_t DMA_CHANNEL_X
Номер канала DMA (0 если не нужен)
-
DMA_Stream_TypeDef * DMAChannel
Канал DMA (NULL если не нужен)
-
uint16_t GPIO_PIN_RX
Пин приема
-
uint16_t GPIO_PIN_TX
Пин передачи
-
UART_HandleTypeDef huart
HAL handle UART.
-
GPIO_TypeDef * GPIOx
Порт для UART.
-
-
-
- - - - diff --git a/Doc/html/globals.html b/Doc/html/globals.html index 46b83ba..1a35914 100644 --- a/Doc/html/globals.html +++ b/Doc/html/globals.html @@ -106,17 +106,6 @@ $(function(){initNavTree('globals.html','',''); });

- b -

@@ -136,54 +125,14 @@ $(function(){initNavTree('globals.html','',''); }); -

- e -

- - -

- f -

- - -

- g -

- - -

- h -

- -

- i -

- l -

@@ -203,28 +152,11 @@ $(function(){initNavTree('globals.html','',''); }); -

- p -

- -

- r -

- - -

- s -

@@ -246,7 +178,6 @@ $(function(){initNavTree('globals.html','',''); });
  • TrackerGet_Ok : trackers.h
  • TrackerGet_User : trackers.h
  • TrackerGet_Warn : trackers.h
  • -
  • TRACKERS_ENABLE : mylibs_config.h
  • TrackerTypeDef : trackers.h
  • TrackerWrite_User : trackers.h
  • diff --git a/Doc/html/globals_b.html b/Doc/html/globals_b.html deleted file mode 100644 index 4ffc1a9..0000000 --- a/Doc/html/globals_b.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MyLibs: File Members - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Here is a list of all documented file members with links to the documentation:
    - -

    - b -

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

    - c -

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

    - d -

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

    - b -

    @@ -127,49 +125,14 @@ $(function(){initNavTree('globals_defs.html','',''); }); -

    - e -

    - - -

    - f -

    - - -

    - g -

    - - -

    - h -

    - -

    - i -

    - l -

    @@ -189,27 +152,6 @@ $(function(){initNavTree('globals_defs.html','',''); }); -

    - p -

    - - -

    - r -

    - - -

    - s -

    - -

    - t -

    diff --git a/Doc/html/globals_dup.js b/Doc/html/globals_dup.js deleted file mode 100644 index 1bb706c..0000000 --- a/Doc/html/globals_dup.js +++ /dev/null @@ -1,20 +0,0 @@ -var globals_dup = -[ - [ "a", "globals.html", null ], - [ "b", "globals_b.html", null ], - [ "c", "globals_c.html", null ], - [ "d", "globals_d.html", null ], - [ "e", "globals_e.html", null ], - [ "f", "globals_f.html", null ], - [ "g", "globals_g.html", null ], - [ "h", "globals_h.html", null ], - [ "i", "globals_i.html", null ], - [ "l", "globals_l.html", null ], - [ "m", "globals_m.html", null ], - [ "n", "globals_n.html", null ], - [ "p", "globals_p.html", null ], - [ "r", "globals_r.html", null ], - [ "s", "globals_s.html", null ], - [ "t", "globals_t.html", null ], - [ "u", "globals_u.html", null ] -]; \ No newline at end of file diff --git a/Doc/html/globals_e.html b/Doc/html/globals_e.html deleted file mode 100644 index 621868b..0000000 --- a/Doc/html/globals_e.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MyLibs: File Members - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Here is a list of all documented file members with links to the documentation:
    - -

    - e -

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

    - f -

    -
    -
    -
    - - - - diff --git a/Doc/html/globals_func.html b/Doc/html/globals_func.html index b04a565..62372b7 100644 --- a/Doc/html/globals_func.html +++ b/Doc/html/globals_func.html @@ -98,19 +98,6 @@ $(function(){initNavTree('globals_func.html','',''); });
    Here is a list of all documented functions with links to the documentation:
      -
    • BenchTime_End() : bench_time.h
    • -
    • BenchTime_GetAverage() : bench_time.h
    • -
    • BenchTime_GetCount() : bench_time.h
    • -
    • BenchTime_GetLast() : bench_time.h
    • -
    • BenchTime_GetMax() : bench_time.h
    • -
    • BenchTime_GetMin() : bench_time.h
    • -
    • BenchTime_Init() : bench_time.h
    • -
    • BenchTime_ResetStats() : bench_time.h
    • -
    • BenchTime_Start() : bench_time.h
    • -
    • GenOptimizer_Init() : gen_optimizer.h
    • -
    • GenOptimizer_Step() : gen_optimizer.h
    • -
    • HF_CheckRecovered() : trace.h
    • -
    • HF_HandleFault() : trace.h
    • RTT_EraseFlash() : trace.h
    • RTT_FlashPrepare() : trace.h
    • RTT_ReadFromFlash() : trace.h
    • diff --git a/Doc/html/globals_g.html b/Doc/html/globals_g.html deleted file mode 100644 index 8af68fc..0000000 --- a/Doc/html/globals_g.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -MyLibs: File Members - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all documented file members with links to the documentation:
      - -

      - g -

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

      - h -

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

      - i -

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

      - l -

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

      - m -

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

      - n -

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

      - p -

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

      - r -

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

      - s -

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

      - t -

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

      - u -

      -
      -
      -
      - - - - diff --git a/Doc/html/globals_vars.html b/Doc/html/globals_vars.html deleted file mode 100644 index 655cfa8..0000000 --- a/Doc/html/globals_vars.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -MyLibs: File Members - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all documented variables with links to the documentation:
      -
      -
      -
      - - - - diff --git a/Doc/html/group___b_e_n_c_h___t_i_m_e.html b/Doc/html/group___b_e_n_c_h___t_i_m_e.html index 8a616a4..3aae274 100644 --- a/Doc/html/group___b_e_n_c_h___t_i_m_e.html +++ b/Doc/html/group___b_e_n_c_h___t_i_m_e.html @@ -114,40 +114,17 @@ $(function(){initNavTree('group___b_e_n_c_h___t_i_m_e.html','',''); });
    - - - - - - - -

    -Classes

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

    -Functions

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

    -Variables

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

    +Macros

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

    Detailed Description

    Библиотека для измерения времени/тиков между событиями

    @@ -165,7 +142,7 @@ Variables
    Пример использования:
    #include "bench_time.h"
    // Инициализация
    - +
    BenchTime_Init();
    // Измерение с SysTick
    BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF);
    @@ -202,324 +179,196 @@ Variables
    uint32_t avg_time = BenchTime_GetAverage(0);
    uint32_t count = BenchTime_GetCount(0);
    Заголовочный файл для измерения времени между событиями
    -
    static void BenchTime_Init(void)
    Инициализация системы измерения времени
    Definition bench_time.h:110
    -

    Function Documentation

    - -

    ◆ BenchTime_Init()

    +

    Macro Definition Documentation

    + +

    ◆ BenchTime_Init

    - - - - - -
    - + - +
    void BenchTime_Init #define BenchTime_Init (void ))
    -
    -inlinestatic
    -

    Инициализация системы измерения времени

    - -

    Definition at line 110 of file bench_time.h.

    +

    Definition at line 241 of file bench_time.h.

    - -

    ◆ BenchTime_Start()

    + +

    ◆ BenchTime_Start

    - - - - - -
    - + - + - + - +
    uint32_t BenchTime_Start #define BenchTime_Start (uint8_t channel, channel,
    uint32_t ticks, ticks,
    uint32_t tick_period ) tick_period )
    -
    -inlinestatic
    - -

    Начало измерения на указанном канале

    -
    Parameters
    - - - - -
    channelНомер канала (0..BENCH_TIME_MAX_CHANNELS-1)
    ticksИсточник тиков (например: HAL_GetTick(), TIM2->CNT, DWT->CYCCNT)
    tick_periodПериод тиков для переполнения
    -
    -
    -
    Returns
    1 - успех, 0 - ошибка
    - -

    Definition at line 130 of file bench_time.h.

    +Value:
    0
    +
    +

    Definition at line 242 of file bench_time.h.

    - -

    ◆ BenchTime_End()

    + +

    ◆ BenchTime_End

    - - - - - -
    - + - + - +
    uint32_t BenchTime_End #define BenchTime_End (uint8_t channel, channel,
    uint32_t ticks ) ticks )
    -
    -inlinestatic
    - -

    Окончание измерения на указанном канале

    -
    Parameters
    - - - -
    channelНомер канала (0..BENCH_TIME_MAX_CHANNELS-1)
    ticksИсточник тиков (должен быть тот же что в Start)
    -
    -
    -
    Returns
    Измеренное время в тиках, 0 - в случае ошибки
    - -

    Definition at line 146 of file bench_time.h.

    +Value:
    0
    +
    +

    Definition at line 243 of file bench_time.h.

    - -

    ◆ BenchTime_GetMin()

    + +

    ◆ BenchTime_GetMin

    - - - - - -
    - + - +
    uint32_t BenchTime_GetMin #define BenchTime_GetMin (uint8_t channel) channel)
    -
    -inlinestatic
    - -

    Получение минимального времени измерения

    - -

    Definition at line 188 of file bench_time.h.

    +Value:
    0
    +
    +

    Definition at line 244 of file bench_time.h.

    - -

    ◆ BenchTime_GetMax()

    + +

    ◆ BenchTime_GetMax

    - - - - - -
    - + - +
    uint32_t BenchTime_GetMax #define BenchTime_GetMax (uint8_t channel) channel)
    -
    -inlinestatic
    - -

    Получение максимального времени измерения

    - -

    Definition at line 196 of file bench_time.h.

    +Value:
    0
    +
    +

    Definition at line 245 of file bench_time.h.

    - -

    ◆ BenchTime_GetAverage()

    + +

    ◆ BenchTime_GetAverage

    - - - - - -
    - + - +
    uint32_t BenchTime_GetAverage #define BenchTime_GetAverage (uint8_t channel) channel)
    -
    -inlinestatic
    - -

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

    - -

    Definition at line 204 of file bench_time.h.

    +Value:
    0
    +
    +

    Definition at line 246 of file bench_time.h.

    - -

    ◆ BenchTime_GetCount()

    + +

    ◆ BenchTime_GetCount

    - - - - - -
    - + - +
    uint32_t BenchTime_GetCount #define BenchTime_GetCount (uint8_t channel) channel)
    -
    -inlinestatic
    - -

    Получение количества измерений

    - -

    Definition at line 214 of file bench_time.h.

    +Value:
    0
    +
    +

    Definition at line 247 of file bench_time.h.

    - -

    ◆ BenchTime_GetLast()

    + +

    ◆ BenchTime_GetLast

    - - - - - -
    - + - +
    uint32_t BenchTime_GetLast #define BenchTime_GetLast (uint8_t channel) channel)
    -
    -inlinestatic
    - -

    Получение последнего измеренного времени

    - -

    Definition at line 222 of file bench_time.h.

    +Value:
    0
    +
    +

    Definition at line 248 of file bench_time.h.

    - -

    ◆ BenchTime_ResetStats()

    + +

    ◆ BenchTime_ResetStats

    - - - - - -
    - + - +
    void BenchTime_ResetStats #define BenchTime_ResetStats (uint8_t channel) channel)
    -
    -inlinestatic
    -

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

    - -

    Definition at line 230 of file bench_time.h.

    - -
    -
    -

    Variable Documentation

    - -

    ◆ hbt

    - -
    -
    - - - - - -
    - - - - -
    BenchTime_t hbt = {0}
    -
    -static
    -
    - -

    Внутренний экземпляр

    - -

    Definition at line 105 of file bench_time.h.

    +

    Definition at line 249 of file bench_time.h.

    diff --git a/Doc/html/group___b_e_n_c_h___t_i_m_e.js b/Doc/html/group___b_e_n_c_h___t_i_m_e.js deleted file mode 100644 index 4887185..0000000 --- a/Doc/html/group___b_e_n_c_h___t_i_m_e.js +++ /dev/null @@ -1,29 +0,0 @@ -var group___b_e_n_c_h___t_i_m_e = -[ - [ "BenchTimeStats_t", "struct_bench_time_stats__t.html", [ - [ "min_ticks", "struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8", null ], - [ "max_ticks", "struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c", null ], - [ "total_ticks", "struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec", null ], - [ "count", "struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71", null ], - [ "last_ticks", "struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0", null ] - ] ], - [ "BenchTimeChannel_t", "struct_bench_time_channel__t.html", [ - [ "start_tick", "struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928", null ], - [ "tick_period", "struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd", null ], - [ "is_running", "struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9", null ], - [ "stats", "struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c", null ] - ] ], - [ "BenchTime_t", "struct_bench_time__t.html", [ - [ "channels", "struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34", null ] - ] ], - [ "BenchTime_Init", "group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054", null ], - [ "BenchTime_Start", "group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349", null ], - [ "BenchTime_End", "group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439", null ], - [ "BenchTime_GetMin", "group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705", null ], - [ "BenchTime_GetMax", "group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e", null ], - [ "BenchTime_GetAverage", "group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8", null ], - [ "BenchTime_GetCount", "group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a", null ], - [ "BenchTime_GetLast", "group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed", null ], - [ "BenchTime_ResetStats", "group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35", null ], - [ "hbt", "group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d", null ] -]; \ No newline at end of file diff --git a/Doc/html/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 49b5d8e..1d1f550 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 @@ -148,7 +148,11 @@ Macros
    -Value:
    osDelay(_ms_)
    +Value:
    do { \
    +
    uint32_t _start_ = local_time(); \
    +
    while (local_time() - _start_ < (_ms_)) {} \
    +
    } while(0)
    +
    #define local_time()
    Локальное время
    Definition trace.h:97

    Блокирующая задержка на указанное количество миллисекунд.

    Parameters
    @@ -157,9 +161,9 @@ Macros
    -
    Note
    Использует задержку через local_time или osDelay в зависимости от FREERTOS_DELAY.
    +
    Note
    Использует задержку через local_time или osDelay в зависимости от FREERTOS_DELAY.
    -

    Definition at line 95 of file mylibs_defs.h.

    +

    Definition at line 97 of file mylibs_defs.h.

    @@ -177,8 +181,7 @@ Macros
    -Value:
    *(_pvar_) = local_time()
    -
    #define local_time()
    Локальное время
    +Value:
    *(_pvar_) = local_time()

    Начать отсчет задержки.

    Parameters
    @@ -187,7 +190,7 @@ Macros
    -

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

    +

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

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

    Definition at line 113 of file mylibs_defs.h.

    @@ -212,7 +215,7 @@ Macros
    -Value:
    (local_time() - *(_pvar_) < _ms_)
    +Value:
    (local_time() - *(_pvar_) < _ms_)

    Проверяет, активна ли задержка.

    Parameters
    @@ -256,7 +259,7 @@ Macros
    -Value:
    (local_time() - *(_pvar_) >= _ms_)
    +Value:
    (local_time() - *(_pvar_) >= _ms_)

    Проверяет, завершилась ли задержка.

    Parameters
    diff --git a/Doc/html/group___g_e_n___c_o_n_f_i_g.html b/Doc/html/group___g_e_n___c_o_n_f_i_g.html index 00ce783..dc6cd4e 100644 --- a/Doc/html/group___g_e_n___c_o_n_f_i_g.html +++ b/Doc/html/group___g_e_n___c_o_n_f_i_g.html @@ -144,7 +144,7 @@ Macros

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

    -

    Definition at line 64 of file mylibs_config.h.

    +

    Definition at line 64 of file __mylibs_config.h.

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

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

    -

    Definition at line 65 of file mylibs_config.h.

    +

    Definition at line 65 of file __mylibs_config.h.

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

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

    -

    Definition at line 66 of file mylibs_config.h.

    +

    Definition at line 66 of file __mylibs_config.h.

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

    Включить бенч времени

    -

    Definition at line 81 of file mylibs_config.h.

    +

    Definition at line 81 of file __mylibs_config.h.

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

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

    -

    Definition at line 82 of file mylibs_config.h.

    +

    Definition at line 82 of file __mylibs_config.h.

    diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html index 950fc52..b4c15d6 100644 --- a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html @@ -117,27 +117,13 @@ $(function(){initNavTree('group___g_e_n___o_p_t_i_m_i_z_e_r.html','',''); });

    Classes

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

    Macros

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

    -Functions

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

    Detailed Description

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

    @@ -151,9 +137,9 @@ Functions
  • GEN_OPTIMIZATION_ENABLE - Включить оптимизацию параметров Если библиотека отключена GEN_OPTIMIZATION_ENABLE, то вставляются заглушки, никак не влияющие на параметры и остальную программу
  • GEN_MAX_PARAMS - Максимальное количество параметров
  • GEN_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
  • -
  • (опционально) GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
  • -
  • (опционально) GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
  • -
  • (опционально) ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений
  • +
  • (опционально) GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
  • +
  • (опционально) GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
  • +
  • (опционально) ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений
  • Пример использования:
    #include "gen_optimizer.h"
    #define N_PARAMS 4
    @@ -168,31 +154,98 @@ Functions
    float param_f = 0.01f;
    uint8_t param_u8 = 40;
    int16_t param_i16 = 1600;
    -
    params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);
    -
    params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);
    -
    params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);
    -
    params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
    +
    params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);
    +
    params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);
    +
    params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);
    +
    params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
    // Инициалиазция
    -
    GenOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
    +
    GenOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
    // Шаг эволюции
    float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)
    -
    GenOptimizer_Step(&optimizer, params, loss);
    +
    GenOptimizer_Step(&optimizer, params, loss);
    // Взятие следующих для эволюции параметров
    -
    param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
    -
    param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);
    -
    param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);
    -
    param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
    +
    param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
    +
    param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);
    +
    param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);
    +
    param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
    Заголовочный файл для адаптивного подбора параметров
    -
    static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
    Инициализация эволюционного оптимизатора.
    -
    #define PARAM_SCALE(x, min_val, max_val)
    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    -
    #define PARAM_UNSCALE(val, min_val, max_val)
    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
    -
    static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    -
    Структура эволюционного оптимизатора
    +

    Macro Definition Documentation

    + +

    ◆ GenOptimizer_Init

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define GenOptimizer_Init( opt,
    n_params,
    n_cand,
    n_best,
    mutation_amp,
    start_params )
    +
    + +

    Definition at line 327 of file gen_optimizer.h.

    + +
    +
    + +

    ◆ GenOptimizer_Step

    + +
    +
    + + + + + + + + + + + + + + + + +
    #define GenOptimizer_Step( opt,
    params,
    LossFunc )
    +
    + +

    Definition at line 328 of file gen_optimizer.h.

    + +
    +

    ◆ PARAM_SCALE

    @@ -216,11 +269,9 @@ Functions
    -Value:
    (((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))
    +Value:
    (x)
    -

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

    - -

    Definition at line 72 of file gen_optimizer.h.

    +

    Definition at line 329 of file gen_optimizer.h.

    @@ -247,180 +298,9 @@ Functions
    -Value:
    (((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
    +Value:
    (val)
    -

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

    - -

    Definition at line 78 of file gen_optimizer.h.

    - -
    -
    - -

    ◆ GEN_MUTATION_MIN_PCT

    - -
    -
    - - - - -
    #define GEN_MUTATION_MIN_PCT   10
    -
    - -

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

    - -

    Definition at line 88 of file gen_optimizer.h.

    - -
    -
    - -

    ◆ GEN_MUTATION_MAX_PCT

    - -
    -
    - - - - -
    #define GEN_MUTATION_MAX_PCT   100
    -
    - -

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

    - -

    Definition at line 91 of file gen_optimizer.h.

    - -
    -
    - -

    ◆ ELOVLE_N_ELITE_CANDIDATE

    - -
    -
    - - - - -
    #define ELOVLE_N_ELITE_CANDIDATE   2
    -
    - -

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

    - -

    Definition at line 94 of file gen_optimizer.h.

    - -
    -
    -

    Function Documentation

    - -

    ◆ GenOptimizer_Init()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int GenOptimizer_Init (GenOptimizer_t * opt,
    uint16_t n_params,
    uint16_t n_cand,
    uint16_t n_best,
    float mutation_amp,
    float * start_params )
    -
    -static
    -
    - -

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

    -
    Parameters
    - - - - - - - -
    optУказатель на структуру оптимизатора
    n_paramsКоличество параметров в одном кандидате
    n_candКоличество кандидатов
    n_bestКоличество лучших, усредняемых
    mutation_ampАмплитуда мутации (в диапазоне 0.0–1.0)
    start_paramsНачальные параметры (в диапазоне 0.0–1.0)
    -
    -
    -
    Returns
    0 — если окей, -1 — если ошибка
    - -

    Definition at line 154 of file gen_optimizer.h.

    - -
    -
    - -

    ◆ GenOptimizer_Step()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - -
    int GenOptimizer_Step (GenOptimizer_t * opt,
    float * params,
    float loss )
    -
    -static
    -
    - -

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

    -
    Parameters
    - - - - -
    optУказатель на структуру оптимизатора
    paramsМассив параметров, которые будут обновлены (на выходе — новые параметры)
    lossLoss текущего кандидата
    -
    -
    -
    Returns
    0 — если окей, -1 — если ошибка
    -

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

    -

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

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

    Definition at line 224 of file gen_optimizer.h.

    +

    Definition at line 330 of file gen_optimizer.h.

    diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js index 42d4587..d0b136f 100644 --- a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js @@ -1,23 +1,4 @@ var group___g_e_n___o_p_t_i_m_i_z_e_r = [ - [ "GenOptimizer_t", "struct_gen_optimizer__t.html", [ - [ "stability", "struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192", null ], - [ "n_params", "struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5", null ], - [ "n_cand", "struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9", null ], - [ "n_best", "struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9", null ], - [ "mutation_amp", "struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c", null ], - [ "cand_index", "struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc", null ], - [ "gen_index", "struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c", null ], - [ "gen_mut", "struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1", null ], - [ "loss", "struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa", null ], - [ "candidates", "struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947", null ], - [ "sorted_idx", "struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320", null ] - ] ], - [ "PARAM_SCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ], - [ "PARAM_UNSCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ], - [ "GEN_MUTATION_MIN_PCT", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068", null ], - [ "GEN_MUTATION_MAX_PCT", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd", null ], - [ "ELOVLE_N_ELITE_CANDIDATE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb", null ], - [ "GenOptimizer_Init", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a", null ], - [ "GenOptimizer_Step", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628", null ] + [ "GenOptimizer_t", "struct_gen_optimizer__t.html", null ] ]; \ No newline at end of file diff --git a/Doc/html/group___g_p_i_o___i_n_i_t.html b/Doc/html/group___g_p_i_o___i_n_i_t.html deleted file mode 100644 index d45aa4c..0000000 --- a/Doc/html/group___g_p_i_o___i_n_i_t.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - -MyLibs: Init defines - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    -
    - -

    Настройка состояний кнопок и количества тиков в периоде ШИМ -More...

    -
    Collaboration diagram for Init defines:
    -
    -
    - - - - - - - - - - - - - - - -

    -Macros

    #define local_time()
     Локальное время
    #define LED_PWM_TICKS   15
     Количество тиков в периоде ШИМ
    #define LED_ON   1
     Состояние пина для включения светодиода
    #define LED_OFF   0
     Состояние пина для выключения светодиода
    #define SW_ON   1
     Состояние пина при нажатой кнопке
    #define SW_OFF   0
     Состояние пина при отжатой кнопке
    -

    Detailed Description

    -

    Настройка состояний кнопок и количества тиков в периоде ШИМ

    -

    Macro Definition Documentation

    - -

    ◆ local_time

    - -
    -
    - - - - - - - -
    #define local_time()
    -
    -Value:
    HAL_GetTick()
    -
    -

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

    - -

    Definition at line 31 of file general_gpio.h.

    - -
    -
    - -

    ◆ LED_PWM_TICKS

    - -
    -
    - - - - -
    #define LED_PWM_TICKS   15
    -
    - -

    Количество тиков в периоде ШИМ

    - -

    Definition at line 35 of file general_gpio.h.

    - -
    -
    - -

    ◆ LED_ON

    - -
    -
    - - - - -
    #define LED_ON   1
    -
    - -

    Состояние пина для включения светодиода

    - -

    Definition at line 39 of file general_gpio.h.

    - -
    -
    - -

    ◆ LED_OFF

    - -
    -
    - - - - -
    #define LED_OFF   0
    -
    - -

    Состояние пина для выключения светодиода

    - -

    Definition at line 42 of file general_gpio.h.

    - -
    -
    - -

    ◆ SW_ON

    - -
    -
    - - - - -
    #define SW_ON   1
    -
    - -

    Состояние пина при нажатой кнопке

    - -

    Definition at line 46 of file general_gpio.h.

    - -
    -
    - -

    ◆ SW_OFF

    - -
    -
    - - - - -
    #define SW_OFF   0
    -
    - -

    Состояние пина при отжатой кнопке

    - -

    Definition at line 49 of file general_gpio.h.

    - -
    -
    -
    -
    - -
    - - - - diff --git a/Doc/html/group___g_p_i_o___i_n_i_t.js b/Doc/html/group___g_p_i_o___i_n_i_t.js deleted file mode 100644 index ca0a456..0000000 --- a/Doc/html/group___g_p_i_o___i_n_i_t.js +++ /dev/null @@ -1,9 +0,0 @@ -var group___g_p_i_o___i_n_i_t = -[ - [ "local_time", "group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653", null ], - [ "LED_PWM_TICKS", "group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023", null ], - [ "LED_ON", "group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25", null ], - [ "LED_OFF", "group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29", null ], - [ "SW_ON", "group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9", null ], - [ "SW_OFF", "group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___g_p_i_o___i_n_i_t.map b/Doc/html/group___g_p_i_o___i_n_i_t.map deleted file mode 100644 index 994ad72..0000000 --- a/Doc/html/group___g_p_i_o___i_n_i_t.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___g_p_i_o___i_n_i_t.md5 b/Doc/html/group___g_p_i_o___i_n_i_t.md5 deleted file mode 100644 index 2df6bcc..0000000 --- a/Doc/html/group___g_p_i_o___i_n_i_t.md5 +++ /dev/null @@ -1 +0,0 @@ -b3e1b6c0e67365a2d690b83a8c502388 \ No newline at end of file diff --git a/Doc/html/group___g_p_i_o___i_n_i_t.png b/Doc/html/group___g_p_i_o___i_n_i_t.png deleted file mode 100644 index 6fb3b6c5ea8028f08224ffbc3338d4e5ffc490e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmV+b1poVqP)rmTVc@Ra}o5nqo@-fviar$6yRuN)4vY=71pvlh>;Z@=X+7Nmr83xkr|N9}rk? z=R6nm_&n0NS0ExHA|fIpA^;}4VPRq63uDYhAHm3|IF27KEiFCw9Y+(rUhj(U7`iA3 zf~_cu9;LS(%N}HmxoC{JKe@1EjH|$(zJq8&*O428!C)EqA-!!Rk%yuvavqSB3&YTN z2nRMhJInO+wC^xFV`F23ot>SL?SY3_M8q;BvPcIgkwrQ{i7e6qN@S4^P$G+TfYn4c z#(cK4%_L%K$>%;zGXMNHFz-2*%IZwF9b{^*Za>50+dLg;Es>2e#Bu!D(vpk1lEV~h zf#bk8z&+pv@CWc6aKdL$uB5-`;3~nwFeHkikA1cIyA_3B2&rS3#96~+&f6!}TmXIr zegUR|wXXyf(7?();t;E!v;gZeE*J_BCZ?M6N13I+v{%{axq0y!AYJm4l5w zn#59K2KXN6ktFgPK9$X#ET7?1d7J%vD2k%o?PYBg?MtsWX}2iOs{0PY$%x$ap;yz3 zJbhl9%lIa-t*xzn3H$?W0>6_aF;q|9$3X03SzlkT{du!&-pZ1I`1#kxVxMymQgvQQ~@Zb~ROIZA8vX z=4=u-Ej8<$mp-=cTz2{&Pg$Q;%$5(z}iv(0000

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

    -

    Definition at line 97 of file mylibs_config.h.

    +

    Definition at line 97 of file __mylibs_config.h.

    @@ -170,7 +170,7 @@ Macros

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

    -

    Definition at line 99 of file mylibs_config.h.

    +

    Definition at line 99 of file __mylibs_config.h.

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

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

    -

    Definition at line 100 of file mylibs_config.h.

    +

    Definition at line 100 of file __mylibs_config.h.

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

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

    -

    Definition at line 101 of file mylibs_config.h.

    +

    Definition at line 101 of file __mylibs_config.h.

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

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

    -

    Definition at line 102 of file mylibs_config.h.

    +

    Definition at line 102 of file __mylibs_config.h.

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

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

    -

    Definition at line 103 of file mylibs_config.h.

    +

    Definition at line 103 of file __mylibs_config.h.

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

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

    -

    Definition at line 104 of file mylibs_config.h.

    +

    Definition at line 104 of file __mylibs_config.h.

    diff --git a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.html b/Doc/html/group___m_y___l_i_b_s___g_p_i_o.html deleted file mode 100644 index b588aa0..0000000 --- a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -MyLibs: GPIO Tools - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    GPIO Tools
    -
    -
    - -

    Функции и макросы для удобной работы с GPIO. -More...

    -
    Collaboration diagram for GPIO Tools:
    -
    -
    - - - - - - - - - -

    -Topics

     General tools
     Общие функции/макросы для работы с GPIO.
     Switch tools
     Функции для работы с GPIO, как с кнопкой
     LED tools
     Функции для работы с GPIO, для управления светодиодом
    -

    Detailed Description

    -

    Функции и макросы для удобной работы с GPIO.

    -

    Модуль предоставляет универсальные инструменты для работы с GPIO):

      -
    • General tools — инициализация и общие функции работы с портами.
    • -
    • Switch tools — работа с GPIO как с кнопкой: чтение состояния, фильтрация дребезга, настройка активного уровня.
    • -
    • LED tools — работа с GPIO как со светодиодом: включение, выключение, моргание и плавное затухание.
    • -
    -
    -
    - -
    - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.js b/Doc/html/group___m_y___l_i_b_s___g_p_i_o.js deleted file mode 100644 index a900e49..0000000 --- a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.js +++ /dev/null @@ -1,6 +0,0 @@ -var group___m_y___l_i_b_s___g_p_i_o = -[ - [ "General tools", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l" ], - [ "Switch tools", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h" ], - [ "LED tools", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s" ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.map b/Doc/html/group___m_y___l_i_b_s___g_p_i_o.map deleted file mode 100644 index 1303f1e..0000000 --- a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.md5 b/Doc/html/group___m_y___l_i_b_s___g_p_i_o.md5 deleted file mode 100644 index 0ef2042..0000000 --- a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.md5 +++ /dev/null @@ -1 +0,0 @@ -90fddc6c59b708a1325af05c5620d4ae \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.png b/Doc/html/group___m_y___l_i_b_s___g_p_i_o.png deleted file mode 100644 index 6b27934745ea8063eea03c6329fbdc5aa6ee35c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3354 zcmZ{ncTf{vw#P$IX(AnjA4MdHs1Q*)0R$8b5s(l-x*c=j})SGrHM2p zgwSEpAFQ;{Bw~OBr7S%v5FvzYe!Kqh-n`klckaD&=FYii&fM>u&v|;?(N0`cNfZD8 zh(oVlh64ZsG5m9e@Dcu6BrPJx-;Vgh>@EX%e~prkN*n-ilnT9Ug@`X$pYh4`UU<;= zeNz!dx-K0mq_r&lxCGSrPQySi{gCLggK##sWHHs%{>^m*|EX$u131A=U3yyI8G_h(#xnxbREi5tq5~EO6BY}& ziDfx)0mB0rT3c7bBBsbh2n5Ccd%{(rYe0}|Ur$dDc_<({Zp~Cy84}OBzV}YdU-o2G zUf$560uI!o9jk&ae5o4@;q0uVkVy4d#r!X$rFJIqteey&B~98%Xx<4MAMBkE*NJ6H zdJ~#ewnt;2Z=`;k^dq6zg1CIc+Y^XM_Btd6DnkH?)VhT*QR8py$qzO7h6%8wSM4Ms z`}1mdPHWj|bk^)Wb6NuOpAgG_bYUMyhwc=(yOrTG8T(@c_1W{sg$d0ow6pr0nN9Zg z`PJ=K25j%j%hwMw;V|E{*0QlOFWrPkp%dM!zTtVCuh|otuJA5-+j>rdIBB+V>-%`0 zEI&N5%ZDHc%*_vy1||Cya8CyN?+ryM%KGC}$$iJRpc@Q+AWv81)|M}+kyZ2t(aVbZ z@0;$L(ucnU&Z0xRuD)r6yd=may`QF{+ZoB@R^THEAu1I`P?csf_axN7|1}Jrb$kVj z&`4_qeR}dz_kWv)U5NVl@^Vdi1qBrGT~(oJ%$v<acEZY z-6`mpq%LqViIePlQ}M>3I>Cx>mlv>Q*Tk7T>AEX`s(;mCmmL)k+mzS6G);V=%xMmhoS5XYBC(ee| zyRSev1D;JM?upbAx`4CSjLYu?-s&VX>|KqrG!`}#9@WT?mc&UUr%Kt-A!)o z#iPf5H~|K}$)8Vm_j_Q_8wSf!-Hl^V(Yl+4X%p4lNf3iEztBB>+DzxYpakUYJ>CH~ zHH`GnZ?T0jS~)T@{kUmSvF%6+#4R1OmFNVv`=x7j$HY6nVGAG$Sa)CToieQJ z#y$7gvZA;q`xj|bemP{H=ph3q$nHFjcPXfCP-@n#tMI4Ys>iHt*%X-n(@@+a0jcqy z1eFbUe%kF8HQl8*9og4mvAe~)iv^1VxGK}R0{PAL9s7v9;$lWV=%dTK)hC)W1NEV= zmz;Nuh;bMXbF!XF2xH?=-Kj=@3n6dYW?=RbrM3hZI8_5+Q^FMl)wGTR!h$Rr%hlEX z{!Mk*wOx<@Up{Vw6;7qH1WL3U&K=1s1R9Y+6Yp+iQ^x2S|;_zI%pLLu5MY<>vu z+31%h@&)pY?Ws#eB{bmzy>O5xc~SDetT?gS$l<-A6lOi%YA#o6zu{ryYji^sA+8Y1 z(1h4E_b$7O2+f9{x|Uo+h}5!?)kFFhc>V}*Qe0bhd`3*(Yz&8kodo={eNrm&g^-{s z+X{<`YKWyPw%>4@U+Ma(|Azx|I$e}P?swi1f7{sjVQdV(b^#F?HxuK&CjI74&45Rk z@U~m^_Qjr0Zu+lwsBf{JwYfa@VbjF@Uv+k>3G*aAmz=#+I(oy$%Zo1hH_XFj*B+tK zR&Mt8xZu9zuiXzBI{z3P90U&+nXhh+#%KSjdkK!A0lU--`pTikUV-epsgf(p^gEp0 z!Uf_vX#WM6aTVRfx_POk!`67H4iqdp1Yl@nPX0_m%lx{9x7UQW%s2|K88p~%Z}&oi zDux0_LKp}6U3?>dxHaI&7Wa`5Km z)Edk*xzcPpwwHN{lceoWj=#JnREZ&%a=@XAaM`GJPI#6F9uy1_VW~4u%njyL zcT--uH9p;qL_%%ye@k__k2X0Of3Umc;p4OLrn)ZO`Aa|qEm=@#V~t%VWCF?x4GYU& zr&IcLQRB_**?aCz#TJDvnS5@&b#G@485?WJ=hof_>=}w-& - - - - - - -MyLibs: SPI Tools - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    SPI Tools
    -
    -
    - -

    Функции и макросы для удобной работы с SPI. -More...

    -
    Collaboration diagram for SPI Tools:
    -
    -
    - - - - - -

    -Topics

     Init defines
     Настройка SPI.
    - - - -

    -Classes

    struct  SPI_SettingsTypeDef
     Структура настроек SPI. More...
    - - - - - - - - - -

    -Functions

    HAL_StatusTypeDef SPI_Base_Init (SPI_SettingsTypeDef *sspi)
     Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
    HAL_StatusTypeDef SPI_Check_Init_Struct (SPI_SettingsTypeDef *sspi)
     Проверка корректности структуры инициализации SPI.
    void SPI_MspInit (SPI_HandleTypeDef *hspi)
     Настройка тактирования и прерываний SPI.
    void SPI_MspDeInit (SPI_HandleTypeDef *hspi)
     Деинициализация тактирования и прерываний SPI.
    -

    Detailed Description

    -

    Функции и макросы для удобной работы с SPI.

    -

    Модуль предоставляет функции для базовой инициализации SPI

    -
    Пример использования:
    // Структура настроек SPI
    -
    SPI_SettingsTypeDef spi1Settings;
    -
    -
    void SPI1_Init(void)
    -
    {
    -
    // Настройка SPI1 как Master, 8 бит, полный дуплекс
    -
    spi1Settings.hspi.Instance = SPI1;
    -
    spi1Settings.hspi.Init.Mode = SPI_MODE_MASTER;
    -
    spi1Settings.hspi.Init.Direction = SPI_DIRECTION_2LINES;
    -
    spi1Settings.hspi.Init.DataSize = SPI_DATASIZE_8BIT;
    -
    spi1Settings.hspi.Init.CLKPolarity = SPI_POLARITY_LOW;
    -
    spi1Settings.hspi.Init.CLKPhase = SPI_PHASE_1EDGE;
    -
    spi1Settings.hspi.Init.NSS = SPI_NSS_SOFT;
    -
    spi1Settings.hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
    -
    spi1Settings.hspi.Init.FirstBit = SPI_FIRSTBIT_MSB;
    -
    spi1Settings.hspi.Init.TIMode = SPI_TIMODE_DISABLE;
    -
    spi1Settings.hspi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
    -
    -
    // Настройка GPIO
    -
    spi1Settings.CLK_GPIOx = GPIOA;
    -
    spi1Settings.CLK_PIN = GPIO_PIN_5;
    -
    spi1Settings.CLK_GPIO_AlternageFunc = GPIO_AF5_SPI1;
    -
    -
    spi1Settings.MISO_GPIOx = GPIOA;
    -
    spi1Settings.MISO_PIN = GPIO_PIN_6;
    -
    spi1Settings.MISO_GPIO_AlternageFunc = GPIO_AF5_SPI1;
    -
    -
    spi1Settings.MOSI_GPIOx = GPIOA;
    -
    spi1Settings.MOSI_PIN = GPIO_PIN_7;
    -
    spi1Settings.MOSI_GPIO_AlternageFunc = GPIO_AF5_SPI1;
    -
    -
    // Инициализация SPI
    -
    if(SPI_Base_Init(&spi1Settings) != HAL_OK)
    -
    {
    -
    // Обработка ошибки
    -
    Error_Handler();
    -
    }
    -
    }
    -
    HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)
    Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
    Definition general_spi.c:28
    -
    Структура настроек SPI.
    -
    GPIO_TypeDef * MOSI_GPIOx
    Порт MOSI.
    -
    GPIO_TypeDef * MISO_GPIOx
    Порт MISO.
    -
    uint32_t MISO_PIN
    Пин MISO.
    -
    uint32_t CLK_PIN
    Пин CLK.
    -
    uint32_t CLK_GPIO_AlternageFunc
    Альтернативная функция для CLK.
    -
    GPIO_TypeDef * CLK_GPIOx
    Порт CLK.
    -
    uint32_t MOSI_PIN
    Пин MOSI.
    -
    SPI_HandleTypeDef hspi
    HAL handle SPI.
    -
    uint32_t MISO_GPIO_AlternageFunc
    Альтернативная функция для MISO.
    -
    uint32_t MOSI_GPIO_AlternageFunc
    Альтернативная функция для MOSI.
    -
    -
    Note
    Требуется подключение модуля SPI в библиотеке HAL
    #define HAL_SPI_MODULE_ENABLED
    -
    -

    Function Documentation

    - -

    ◆ SPI_Base_Init()

    - -
    -
    - - - - - - - -
    HAL_StatusTypeDef SPI_Base_Init (SPI_SettingsTypeDef * sspi)
    -
    - -

    Инициализация SPI с помощью структуры SPI_SettingsTypeDef.

    -
    Parameters
    - - -
    sspiУказатель на структуру с настройками SPI.
    -
    -
    -
    Returns
    HAL status.
    -


    - Инициализирует SPI и его GPIO. Настройка аналогична HAL_SPI_Init

    suart.hspi.Init...
    -

    но дополнительно надо прописать пины CLK/MISO/MOSI SPI_SettingsTypeDef

    - -

    Definition at line 28 of file general_spi.c.

    - -
    -
    - -

    ◆ SPI_Check_Init_Struct()

    - -
    -
    - - - - - - - -
    HAL_StatusTypeDef SPI_Check_Init_Struct (SPI_SettingsTypeDef * sspi)
    -
    - -

    Проверка корректности структуры инициализации SPI.

    -
    Parameters
    - - -
    sspiУказатель на структуру с настройками SPI.
    -
    -
    -
    Returns
    HAL status.
    - -

    Definition at line 246 of file general_spi.c.

    - -
    -
    - -

    ◆ SPI_MspInit()

    - -
    -
    - - - - - - - -
    void SPI_MspInit (SPI_HandleTypeDef * hspi)
    -
    - -

    Настройка тактирования и прерываний SPI.

    -
    Parameters
    - - -
    hspiУказатель на хендл SPI.
    -
    -
    -
    Note
    Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI, дефайнами Init defines в general_spi.h определяются используемые SPI.
    - -

    Definition at line 127 of file general_spi.c.

    - -
    -
    - -

    ◆ SPI_MspDeInit()

    - -
    -
    - - - - - - - -
    void SPI_MspDeInit (SPI_HandleTypeDef * hspi)
    -
    - -

    Деинициализация тактирования и прерываний SPI.

    -
    Parameters
    - - -
    hspiУказатель на хендл SPI.
    -
    -
    -
    Note
    Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI, дефайнами Init defines в general_spi.h определяются используемые SPI.
    - -

    Definition at line 191 of file general_spi.c.

    - -
    -
    -
    -
    - -
    - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___s_p_i.js b/Doc/html/group___m_y___l_i_b_s___s_p_i.js deleted file mode 100644 index 4a4c6ec..0000000 --- a/Doc/html/group___m_y___l_i_b_s___s_p_i.js +++ /dev/null @@ -1,22 +0,0 @@ -var group___m_y___l_i_b_s___s_p_i = -[ - [ "Init defines", "group___s_p_i___i_n_i_t.html", "group___s_p_i___i_n_i_t" ], - [ "SPI_SettingsTypeDef", "struct_s_p_i___settings_type_def.html", [ - [ "hspi", "struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422", null ], - [ "CLK_GPIOx", "struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979", null ], - [ "CLK_PIN", "struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc", null ], - [ "CLK_GPIO_AlternageFunc", "struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1", null ], - [ "MISO_GPIOx", "struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95", null ], - [ "MISO_PIN", "struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a", null ], - [ "MISO_GPIO_AlternageFunc", "struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14", null ], - [ "MOSI_GPIOx", "struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820", null ], - [ "MOSI_PIN", "struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176", null ], - [ "MOSI_GPIO_AlternageFunc", "struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab", null ], - [ "DMAChannel", "struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95", null ], - [ "DMA_CHANNEL_X", "struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474", null ] - ] ], - [ "SPI_Base_Init", "group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba", null ], - [ "SPI_Check_Init_Struct", "group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f", null ], - [ "SPI_MspInit", "group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac", null ], - [ "SPI_MspDeInit", "group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___s_p_i.map b/Doc/html/group___m_y___l_i_b_s___s_p_i.map deleted file mode 100644 index faa73b4..0000000 --- a/Doc/html/group___m_y___l_i_b_s___s_p_i.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___s_p_i.md5 b/Doc/html/group___m_y___l_i_b_s___s_p_i.md5 deleted file mode 100644 index 85e5c62..0000000 --- a/Doc/html/group___m_y___l_i_b_s___s_p_i.md5 +++ /dev/null @@ -1 +0,0 @@ -b9d2d820e20d54c87d46b9628c5b5f42 \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___s_p_i.png b/Doc/html/group___m_y___l_i_b_s___s_p_i.png deleted file mode 100644 index 0f1a90d7745b3993ac1c9298a1adcf80244881a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1432 zcmV;J1!ww+P)ZNTNSITtF+tg*loV!SVTn5G$maT5r>p?MMNA@(iIVL zNJ&>j#33bJ5fO)aP8mzX^G-cu0YInI$y}bzv9|jS!bKgSQQ&#t3h*|t>7vp+#7#Bo zo^sf0DpGWxxM_+>)0hUC*4V2)$L;{0!kqK3fp5wU$4;6yF-ZGKTMw9=QF`IpAEl{cCWYDCyq^G9x^`gI403v0qzOce^**W z1?q0gMJ2;%xmC{}xg}k(<^wapWnd1t8~6{?>yi4pfO%r=O<)4J!O4$owX=le%4yQ= z9)^hf1&sb1-4;DAT5fckZGB1m=I8=&6?g*}$0XY0@4t2l*JY2idk7+0Z_>6b`=xXr zX2@s(bN;&%?YUkD4V$Dk8r{~fw`{j&Rg?saU^akl%V z-FE;FVBW(p2Q+{qP7-V_t}lng>&v@mySlo15%>^zII_vM zNBdi@0j03BvqPiNNOeryO|zsPXWVgBk|nO~?d?%u8F-RgX9d}|vCqTBx#i{M%}bXq z4OB+nZK%6E!+jTnm?^n<#O<2Y$~Zh_psVMpErxlNkkh4KMr+d>St2 zffq67{389&`OlbXW6n)XObo?4l#9q8wpY=44lk7UaD?k#sBIYq^~SFQA7O5+JOQ+T z<97ib6;YwsE9jMmTbSPKL%@T;$G{)qwi`uMc$O61>n-xC+*wa|knVcF*$ac#7cIZQ zFFXK#2$v6lXMkDY1 z*lFk`^%#@dUJ;l3No7`kcp*(9v{@gwpUpa(a%{?SG|~D9_%>Yb#5^4FI`DK+6&5AU z0}e&(lXR@@F^+yDI>1V}yob5zHj5dC7#eBXUD~#k<)*o9{WhO%w+*5e)0S%B5cnco z#(;my4M!ZfiJ9%N47>&0Rc<)qijr>i?3NvXIQMV3$Qe-iw~ST&IcgD+G%BBTMMUaE zNmoR~AthZA5r>p?MMNCxIeVcFk9JBn+uPgh?d|p7Q2;nRJS;nefo*PXs?FzUe}BK{ zwo^&h_x-IP2$t5?)(Q=(&V1kBDm#X(I-Sna!NEb - - - - - - -MyLibs: TIM Tools - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    TIM Tools
    -
    -
    - -

    Функции и макросы для удобной работы с TIM. -More...

    -
    Collaboration diagram for TIM Tools:
    -
    -
    - - - - - - - - - - - -

    -Topics

     General tools
     Функции для базовой инициализации таймеров
     Delay tools
     Функции для формирования задержек с помощью таймеров
     PWM/OC Channels tools
     Функции для инициализации базовых функций каналов таймера
     Encoder tools
     Функции для считывания энкодера
    -

    Detailed Description

    -

    Функции и макросы для удобной работы с TIM.

    -

    Модуль предоставляет универсальные инструменты для работы с TIM:

      -
    • General tools — базовая инициализация таймеров и прерываний.
    • -
    • Delay tools — функции задержки через таймеры (blocking и non-blocking).
    • -
    • PWM/OC Channels tools — настройка каналов Output Compare и PWM.
    • -
    • Encoder tools — работа с энкодерами, чтение положения и кнопки.

      -
      Note
      Требуется подключение модуля TIM в библиотеке HAL и GPIO (GPIO Tools) из MyLibs
      #define HAL_TIM_MODULE_ENABLED
      -
      -
    • -
    -
    -
    - -
    - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___t_i_m.js b/Doc/html/group___m_y___l_i_b_s___t_i_m.js deleted file mode 100644 index 61cd824..0000000 --- a/Doc/html/group___m_y___l_i_b_s___t_i_m.js +++ /dev/null @@ -1,7 +0,0 @@ -var group___m_y___l_i_b_s___t_i_m = -[ - [ "General tools", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l" ], - [ "Delay tools", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y" ], - [ "PWM/OC Channels tools", "group___m_y_l_i_b_s___t_i_m___o_c.html", "group___m_y_l_i_b_s___t_i_m___o_c" ], - [ "Encoder tools", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r" ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___t_i_m.map b/Doc/html/group___m_y___l_i_b_s___t_i_m.map deleted file mode 100644 index 0f14167..0000000 --- a/Doc/html/group___m_y___l_i_b_s___t_i_m.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___t_i_m.md5 b/Doc/html/group___m_y___l_i_b_s___t_i_m.md5 deleted file mode 100644 index ab26041..0000000 --- a/Doc/html/group___m_y___l_i_b_s___t_i_m.md5 +++ /dev/null @@ -1 +0,0 @@ -936137dd7521a28e69e9d997087dab56 \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___t_i_m.png b/Doc/html/group___m_y___l_i_b_s___t_i_m.png deleted file mode 100644 index 8ec2bc6ae2e91137decd53d5f18ce687ef6387cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5788 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 diff --git a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.html b/Doc/html/group___m_y___l_i_b_s___u_a_r_t.html deleted file mode 100644 index 4d3bf39..0000000 --- a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - -MyLibs: UART Tools - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    UART Tools
    -
    -
    - -

    Функции и макросы для удобной работы с UART. -More...

    -
    Collaboration diagram for UART Tools:
    -
    -
    - - - - - -

    -Topics

     Init defines
     Настройка UART.
    - - - -

    -Classes

    struct  UART_SettingsTypeDef
     Структура настроек UART. More...
    - - - - - - - - - -

    -Functions

    HAL_StatusTypeDef UART_Base_Init (UART_SettingsTypeDef *suart)
     Инициализация UART с помощью структуры UART_SettingsTypeDef.
    HAL_StatusTypeDef UART_Check_Init_Struct (UART_SettingsTypeDef *suart)
     Проверка корректности структуры инициализации UART.
    void UART_MspInit (UART_HandleTypeDef *huart)
     Настройка тактирования и прерываний UART.
    void UART_MspDeInit (UART_HandleTypeDef *huart)
     Деинициализация тактирования и прерываний UART.
    -

    Detailed Description

    -

    Функции и макросы для удобной работы с UART.

    -

    Модуль предоставляет функции для базовой инициализации UART

    -
    Пример использования:
    // Структура настроек UART
    -
    UART_SettingsTypeDef uart2Settings;
    -
    -
    void UART2_Init(void)
    -
    {
    -
    // Настройка UART2 с 115200 бод, 8 бит, 1 стоп-бит, без паритета
    -
    uart2Settings.huart.Instance = USART2;
    -
    uart2Settings.huart.Init.BaudRate = 115200;
    -
    uart2Settings.huart.Init.WordLength = UART_WORDLENGTH_8B;
    -
    uart2Settings.huart.Init.StopBits = UART_STOPBITS_1;
    -
    uart2Settings.huart.Init.Parity = UART_PARITY_NONE;
    -
    uart2Settings.huart.Init.Mode = UART_MODE_TX_RX;
    -
    uart2Settings.huart.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    -
    uart2Settings.huart.Init.OverSampling = UART_OVERSAMPLING_16;
    -
    -
    // Настройка GPIO
    -
    uart2Settings.GPIOx = GPIOA;
    -
    uart2Settings.GPIO_PIN_TX = GPIO_PIN_2;
    -
    uart2Settings.GPIO_PIN_RX = GPIO_PIN_3;
    -
    -
    // DMA не используется в этом примере
    -
    uart2Settings.DMAChannel = NULL;
    -
    uart2Settings.DMA_CHANNEL_X = 0;
    -
    -
    // Инициализация UART
    -
    if(UART_Base_Init(&uart2Settings) != HAL_OK)
    -
    {
    -
    // Обработка ошибки
    -
    Error_Handler();
    -
    }
    -
    }
    -
    HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart)
    Инициализация UART с помощью структуры UART_SettingsTypeDef.
    -
    Структура настроек UART.
    -
    uint32_t DMA_CHANNEL_X
    Номер канала DMA (0 если не нужен)
    -
    DMA_Stream_TypeDef * DMAChannel
    Канал DMA (NULL если не нужен)
    -
    uint16_t GPIO_PIN_RX
    Пин приема
    -
    uint16_t GPIO_PIN_TX
    Пин передачи
    -
    UART_HandleTypeDef huart
    HAL handle UART.
    -
    GPIO_TypeDef * GPIOx
    Порт для UART.
    -
    -
    Note
    Требуется подключение модуля UART в библиотеке HAL
    #define HAL_UART_MODULE_ENABLED
    -
    -

    Function Documentation

    - -

    ◆ UART_Base_Init()

    - -
    -
    - - - - - - - -
    HAL_StatusTypeDef UART_Base_Init (UART_SettingsTypeDef * suart)
    -
    - -

    Инициализация UART с помощью структуры UART_SettingsTypeDef.

    -
    Parameters
    - - -
    suartУказатель на структуру с настройками UART.
    -
    -
    -
    Returns
    HAL status.
    -


    - Инициализирует UART и его GPIO и при необходимости DMA. Настройка аналогична HAL_UART_Init

    suart.huart.Init...
    -

    но дополнительно надо прописать пины RX/TX UART_SettingsTypeDef

    suart->GPIOx, suart->GPIO_PIN_RX, suart->GPIO_PIN_TX
    -
    -

    Definition at line 32 of file general_uart.c.

    - -
    -
    - -

    ◆ UART_Check_Init_Struct()

    - -
    -
    - - - - - - - -
    HAL_StatusTypeDef UART_Check_Init_Struct (UART_SettingsTypeDef * suart)
    -
    - -

    Проверка корректности структуры инициализации UART.

    -
    Parameters
    - - -
    suartУказатель на структуру с настройками UART.
    -
    -
    -
    Returns
    HAL status.
    - -

    Definition at line 364 of file general_uart.c.

    - -
    -
    - -

    ◆ UART_MspInit()

    - -
    -
    - - - - - - - -
    void UART_MspInit (UART_HandleTypeDef * huart)
    -
    - -

    Настройка тактирования и прерываний UART.

    -
    Parameters
    - - -
    huartУказатель на хендл UART.
    -
    -
    -
    Note
    Чтобы не генерировать функцию с иницилизацией неиспользуемых UART, дефайнами Init defines в general_uart.h определяются используемые UART.
    - -

    Definition at line 146 of file general_uart.c.

    - -
    -
    - -

    ◆ UART_MspDeInit()

    - -
    -
    - - - - - - - -
    void UART_MspDeInit (UART_HandleTypeDef * huart)
    -
    - -

    Деинициализация тактирования и прерываний UART.

    -
    Parameters
    - - -
    huartУказатель на хендл UART.
    -
    -
    -
    Note
    Чтобы не генерировать функцию с деиницилизацией неиспользуемых UART, дефайнами Init defines в general_uart.h определяются используемые UART.
    - -

    Definition at line 267 of file general_uart.c.

    - -
    -
    -
    -
    - -
    - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.js b/Doc/html/group___m_y___l_i_b_s___u_a_r_t.js deleted file mode 100644 index c634bfd..0000000 --- a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.js +++ /dev/null @@ -1,16 +0,0 @@ -var group___m_y___l_i_b_s___u_a_r_t = -[ - [ "Init defines", "group___u_a_r_t___i_n_i_t.html", "group___u_a_r_t___i_n_i_t" ], - [ "UART_SettingsTypeDef", "struct_u_a_r_t___settings_type_def.html", [ - [ "huart", "struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea", null ], - [ "GPIOx", "struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f", null ], - [ "GPIO_PIN_RX", "struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49", null ], - [ "GPIO_PIN_TX", "struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef", null ], - [ "DMAChannel", "struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613", null ], - [ "DMA_CHANNEL_X", "struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19", null ] - ] ], - [ "UART_Base_Init", "group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154", null ], - [ "UART_Check_Init_Struct", "group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a", null ], - [ "UART_MspInit", "group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb", null ], - [ "UART_MspDeInit", "group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.map b/Doc/html/group___m_y___l_i_b_s___u_a_r_t.map deleted file mode 100644 index 52ecc7e..0000000 --- a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.md5 b/Doc/html/group___m_y___l_i_b_s___u_a_r_t.md5 deleted file mode 100644 index 9c19d2c..0000000 --- a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.md5 +++ /dev/null @@ -1 +0,0 @@ -5475854d3a1c20af70a164c6fe76463e \ No newline at end of file diff --git a/Doc/html/group___m_y___l_i_b_s___u_a_r_t.png b/Doc/html/group___m_y___l_i_b_s___u_a_r_t.png deleted file mode 100644 index e70bae84329c947b8c824044e7f7fccda2b2152b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1477 zcmV;$1v>hPP)YP%o=e4_(kpY5jwH@Zx__5nUBs zU0H1zFCr``cv3<1yf@1f5fMZ!9zCeXVv)8|4+<)!hbkhKnPPF!x|{Kk3?0)<=1nHa zn@oQn2xamn@B7Sj-e=x<^JYLqL_|bHL_|bHM5G*?@Q%5;xf71#oU#$juxPj2UoS2$ z{$e|hH0I~$pRgUnQR2Gp_QJx#itRYksMTt>d!Bc#?Kp-}y;XdYhY@G@DJ^VGLwuW@aef^JTHNwnn{Pk1TTwjzvU7Qc$uM5vc$rYY~wO zP_h;gsQ@Kw5s?Z|vKA4kfSybDl5m_u_tpT=Znsm{XL7FTaf2wLjldZ25bzZ6I`CZ) zjSi|-t3@vJ?6tq&IZ-;t#w`&G*O%njB;uY|!EVEUulx?YV>uQhN&3-gscm$ZoPuATDdT2VGsqX2BxT%n$V+lWwD>JPlh2y}3z&YTaV4o9g zL;GPK*AKyLF1gpBE2_@U<23aq%|X4MQ(BoN>!^#2NrH?!Hf@<{ds&a9H#Rm-0^b0) zhKfuR^lGL7CD3ZMY&8u;Ul^>)d~=#OTdmeH;641g=qrFW5x<7ng9E%AY=v81UjAWr zc6OjTvhI7`qv0&-DnlI|xn5ul%j!imm888aW1F6y{&976^+Ws)cosMb`~!>{R`D9J znOQ&yjE;`x@@s*eBpgo0;n8T7E(~_Q9dtiVYHVz5A9xA)5`SL$UJgdo{g&3YfzN^W z6E~cJsi~YHQkMLK*#Yw}7{UtutSJ4!Dm0PlrVL3Rue` zh@?hFMslk=$#T8U@l{CJ9RtMr7w}QAT?IUhze4CPz{BsSz21~R1D~d8bWjr$6P5Vw z^E~p7>9_qXr$MaU6jSu5*R+nDM*rUfZ{W{i-weD9{1KF0%%j1ggh!WeJ1so)K$Ca!8U{cA%CW*#x+mKq4ddGL`0OVMMNq= z$y!9D0+g&pL@J=?YLGJD;w$;u+1a7lY}yWE=-K|!tSoG8Z7Ek|Xm@wFXW5}-?Yi!^ z=Xp!(>+87&HOySs-L@S=TJ3gwX>V`Ob{I#7>$)qpV@S(&-IYe8L8H;I9g2vEh=_=Y fh=_=Yh!p5Qc23zUG)bq`00000NkvXXu0mjf8x!8F 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 117db7c..c9b9687 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 @@ -118,20 +118,20 @@ $(function(){initNavTree('group___m_y_l_i_b_s___a_l_l.html','',''); }); - - + +

    Topics

     Configs
     Конфигурации для библиотек MyLibs.
     General Tools
     Общие макросы и typedef'ы, используемые по всему проекту
     Configs
     Конфигурации для библиотек MyLibs.
     Debug Tools
     Утилиты для тестирования программы

    Detailed Description

    Все используемые MyLibs библиотеки

    Для подключения библиотеки необходимо:

      -
    • Сконфигурировать mylibs_config.h:
        +
      • Сконфигурировать mylibs_config.h:
        • Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx_hal.h)
        • Подключить другие заголовочные файлы которые общие для всего проекта и должны быть видны
        • -
        • Подключить mylibs_include.h туда, где необходим доступ к библиотекам.
        • +
        • Подключить mylibs_include.h туда, где необходим доступ к библиотекам.
      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 6cfffba..6a9b67d 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 Tools", "group___m_y_l_i_b_s___t_o_o_l_s.html", "group___m_y_l_i_b_s___t_o_o_l_s" ], + [ "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" ], [ "Debug Tools", "group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html", "group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s" ] ]; \ 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 718cd58..cfaf631 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 28b87e4..f897ea2 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 @@ -13c33a8645a936a94af7b6b5cac2a05a \ No newline at end of file +d31053abadc8e893fbaf954352b04bd8 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js index 342b7d8..c6a274e 100644 --- a/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js +++ b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js @@ -1,6 +1,6 @@ var group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s = [ - [ "Time measurement", "group___b_e_n_c_h___t_i_m_e.html", "group___b_e_n_c_h___t_i_m_e" ], + [ "Time measurement", "group___b_e_n_c_h___t_i_m_e.html", null ], [ "Genetic optimizer", "group___g_e_n___o_p_t_i_m_i_z_e_r.html", "group___g_e_n___o_p_t_i_m_i_z_e_r" ], [ "Trace defines", "group___t_r_a_c_e.html", "group___t_r_a_c_e" ], [ "Trackers defines", "group___t_r_a_c_k_e_r_s.html", "group___t_r_a_c_k_e_r_s" ] 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 deleted file mode 100644 index 8a215c8..0000000 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -MyLibs: General Tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      General Tools
      -
      -
      - -

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

      -
      Collaboration diagram for General Tools:
      -
      -
      - - - - - - - - - - - - - - - - - - - -

      -Topics

       Bit access defines
       Макросы и typedef'ы для работы с битами в unsigned типах.
       Time measurement
       Библиотека для измерения времени/тиков между событиями
       Genetic optimizer
       Библиотека для эволюционного подбора параметров
       Error Handler defines
       Дефайны для обработки ошибок
       Delays defines
       Макросы и определения для работы с задержками в миллисекундах.
       Utils defines
       Общие вспомогательные макросы
       Trace defines
       Дефайны для работы с трассировкой
       Trackers defines
       Дефайны для работы с трекерами
      -

      Detailed Description

      -

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

      -
      -
      - -
      - - - - 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 deleted file mode 100644 index 8d8a66d..0000000 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js +++ /dev/null @@ -1,11 +0,0 @@ -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" ], - [ "Time measurement", "group___b_e_n_c_h___t_i_m_e.html", "group___b_e_n_c_h___t_i_m_e" ], - [ "Genetic optimizer", "group___g_e_n___o_p_t_i_m_i_z_e_r.html", "group___g_e_n___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" ], - [ "Trace defines", "group___t_r_a_c_e.html", "group___t_r_a_c_e" ], - [ "Trackers defines", "group___t_r_a_c_k_e_r_s.html", "group___t_r_a_c_k_e_r_s" ] -]; \ 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.map b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map deleted file mode 100644 index 863c315..0000000 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - 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 deleted file mode 100644 index 01910aa..0000000 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 +++ /dev/null @@ -1 +0,0 @@ -264808d6452fadd8a8ce8eeb10b2b251 \ 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 deleted file mode 100644 index 022886b4bacd508cd04b941ac76c33e1c5c34e1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13092 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 a0v0QbSI8-Tg#fO-fXs}nVU?E=5B@(YfQrZf diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html deleted file mode 100644 index c97b5d3..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -MyLibs: General tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      General tools
      -
      -
      - -

      Общие функции/макросы для работы с GPIO. -More...

      -
      Collaboration diagram for General tools:
      -
      -
      - - - - - -

      -Topics

       Init defines
       Настройка состояний кнопок и количества тиков в периоде ШИМ
      - - - -

      -Functions

      HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef *GPIOx)
       Включить тактирование порта GPIO.
      -

      Detailed Description

      -

      Общие функции/макросы для работы с GPIO.

      -
      Пример использования:
      // Включаем тактирование порта GPIOA
      - -
      HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
      Включить тактирование порта GPIO.
      -
      -

      Function Documentation

      - -

      ◆ GPIO_Clock_Enable()

      - -
      -
      - - - - - - - -
      HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef * GPIOx)
      -
      - -

      Включить тактирование порта GPIO.

      - -

      Definition at line 22 of file general_gpio.c.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.js b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.js deleted file mode 100644 index 18fd2e8..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.js +++ /dev/null @@ -1,5 +0,0 @@ -var group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l = -[ - [ "Init defines", "group___g_p_i_o___i_n_i_t.html", "group___g_p_i_o___i_n_i_t" ], - [ "GPIO_Clock_Enable", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.map b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.map deleted file mode 100644 index defb38b..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 deleted file mode 100644 index b9fc244..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 +++ /dev/null @@ -1 +0,0 @@ -080375adc25707f1e96d44efa86c8447 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.png b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.png deleted file mode 100644 index e29ed9829961c5d6bd8d8a26fe20597466db271e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1545 zcmV+k2KM=hP)V;00006VoOIv0RI60 z0RN!9r;`8x1-?l{K~#90?cGm^++-NX@$VaLg|!D=!Gg5vvKPTWhutE!f)`Q5e~8u= zs};1JMnn*#z3a(~m+EOcJt-=6_a+GT(1V~w*`CCMhoR`ID8-#ZWs$9&cu2x_vq>h& zB=aVl-vPfr-vIdi3ZnW6VAq!L*6zdEcEr zefl@saTL+%bPm{#L41zmEO)!z^S0wC!gbxf!{KnZ?KrlgUa$8>bl#288OE4>#+Wmc z38~c%0-HXNCeZOwAH(5r5qQyd97PO=!*`4^`)$XuMU77Op>DTZZ740~x~}aI#x^rE z!}RpD?J!!c-|sUR3~YxnmbtmPEpa~7#nRFey zdl8WqP_h>hX#pjB5s?-sHQ5_uHcX?I$E_E)U6!^-?IUfQtnaM`wgFE9p8(HVjwLtO zbvI0PGl`gL^1cnQ7x)l3VL6t}@|=U?oUeKJ6RuyA9FZt-oPA!#7(CA#IWPJ;X}uzC zN82COZbLZ0!@x_ybW1S*D{B!I;JWUnzukzNS65AnHN}1S$Iz?5u3+8=_QI*oB=SJC z-MZ(RQhN4jiMNa%byaQG+`YiNz%Rfzz!BCHeZ7yWh@?c>?RM+Z)7{E;18)OA06zl9 zSx@w9wt|w$E3Idrq>kTq*MCXGT`?prE3#frcLC1<9sFd!25b+OZBN>$$>MtZam&Il zjBt68?ZWv<>m~`;kA7*TwUc!pd1J|F8h9Fb9e4!z55EKm8;_&6R_fPZ2>2wY?RbJ>y! zK1p0MO?sX5bDr(uUdM@kS(LSpBC({H0-ge110E0NnPA$Mv{BQgoxiYN0mxb=j=P5# zcdi#{H%p!=Ik#+3NwSar!lJ=P)v@=VN0IpZ{r(-mS>RDNmeaC)CI%Me_ad>auC8teJ_Zf|H{tizv(`5q{IbsR+&eD8!otGe^Yim# zwNZBND6>3VMr^h3*{3DmW#NN-wdVQSlfrTPF9oLQ> zJ1T3tjNW^iw7Rh5EDOeE7Z3OuOUKdd>}(^Ri%>-eHLcC6 z$~dKr#!0&LDI?G-+b*i2Q9#SUN#FteA#(2nzXr=1J!&Fp)Xk{mR&_7mcA~Fn{{#H8 z&J)0$_~Yo8f@O_9j_RQ5UVfD$3`^_T$0g;ml5v@Br(Gsxy@aarQY-LNFueyngg-X= z5dO{Ft2FS2TU^4ACi?&^i`beW#phDHoe16r*psX=}S(u-n-*5X0YbyyKUUKTx zsZF_EHT&kchCh1eEbs?O^mOP3f72DZa!wbj*C+aZkY;>C-~ zH6^-y`Eug2P08MIoaNzgxOm~hg-U~JJI8UBZO2fQ=Xr})u3WJlh5(M^oVOiAQI6xB vUs+jUWo5;7C?X;vA|fIpA|fIpA`|mJQChDLmqcwz00000NkvXXu0mjf8<+x_ diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html deleted file mode 100644 index 9577120..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - - -MyLibs: LED tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      LED tools
      -
      -
      - -

      Функции для работы с GPIO, для управления светодиодом -More...

      -
      Collaboration diagram for LED tools:
      -
      -
      - - - - - -

      -Classes

      struct  GPIO_LEDTypeDef
       Структура светодиода More...
      - - - -

      -Enumerations

      enum  GPIO_LEDStateTypeDef { LED_IS_OFF = 0 -, LED_IS_ON = 1 -, LED_IS_BLINKING = 2 -, LED_IS_FADING = 3 - }
       Режимы работы светодиода More...
      - - - - - - - - - - - - - - - -

      -Functions

      HAL_StatusTypeDef GPIO_LED_Init (GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)
       Инициализировать светодиод (структуру светодиода)
      HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led)
       Включить светодиод
      HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led)
       Выключить светодиод
      HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
       Выставить светодиод по переменной
      HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
       Активировать моргание светодиодом
      HAL_StatusTypeDef GPIO_LED_Fading_Start (GPIO_LEDTypeDef *led, uint32_t period)
       Активировать моргание светодиодом
      void GPIO_LED_Dynamic_Handle (GPIO_LEDTypeDef *led)
       Управление динамическими режимами свечения светодиода
      -

      Detailed Description

      -

      Функции для работы с GPIO, для управления светодиодом

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

      Enumeration Type Documentation

      - -

      ◆ GPIO_LEDStateTypeDef

      - -
      -
      - - - - -
      enum GPIO_LEDStateTypeDef
      -
      - -

      Режимы работы светодиода

      - - - - - -
      Enumerator
      LED_IS_OFF 

      Светодиод выключен

      -
      LED_IS_ON 

      Светодиод включен

      -
      LED_IS_BLINKING 

      Моргание светодиодом

      -
      LED_IS_FADING 

      Плавное моргание светодиодом

      -
      - -

      Definition at line 61 of file general_gpio.h.

      - -
      -
      -

      Function Documentation

      - -

      ◆ GPIO_LED_Init()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      HAL_StatusTypeDef GPIO_LED_Init (GPIO_LEDTypeDef * led,
      GPIO_TypeDef * GPIOx,
      uint32_t GPIO_PIN_X,
      uint8_t LED_ActiveLevel )
      -
      - -

      Инициализировать светодиод (структуру светодиода)

      -
      Parameters
      - - - - - -
      ledУказатель на структуру светодиода
      GPIOxУказатель на структуру порта для светодиода
      GPIO_PIN_XПин для светодиода
      LED_ActiveLevelСостояния пина, при котором светодиод будет включен
      -
      -
      - -

      Definition at line 73 of file general_gpio.c.

      - -
      -
      - -

      ◆ GPIO_LED_On()

      - -
      -
      - - - - - - - -
      HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef * led)
      -
      - -

      Включить светодиод

      -
      Parameters
      - - -
      ledУказатель на структуру светодиода
      -
      -
      -
      Returns
      HAL Status
      - -

      Definition at line 91 of file general_gpio.c.

      - -
      -
      - -

      ◆ GPIO_LED_Off()

      - -
      -
      - - - - - - - -
      HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef * led)
      -
      - -

      Выключить светодиод

      -
      Parameters
      - - -
      ledУказатель на структуру светодиода
      -
      -
      -
      Returns
      HAL Status
      - -

      Definition at line 107 of file general_gpio.c.

      - -
      -
      - -

      ◆ GPIO_LED_Set()

      - -
      -
      - - - - - - - - - - - -
      HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef * led,
      uint8_t led_state )
      -
      - -

      Выставить светодиод по переменной

      -
      Parameters
      - - - -
      ledУказатель на структуру светодиода
      led_stateСостояние светодиода
      -
      -
      -
      Returns
      HAL Status
      - -

      Definition at line 125 of file general_gpio.c.

      - -
      -
      - -

      ◆ GPIO_LED_Blink_Start()

      - -
      -
      - - - - - - - - - - - -
      HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef * led,
      uint32_t period )
      -
      - -

      Активировать моргание светодиодом

      -
      Parameters
      - - - -
      ledУказатель на структуру светодиода
      periodПериод плавного моргания светодиода
      -
      -
      -
      Returns
      HAL Status
      -

      Функция ставит режим моргания, который после управляется в GPIO_LED_Dynamic_Handle

      - -

      Definition at line 146 of file general_gpio.c.

      - -
      -
      - -

      ◆ GPIO_LED_Fading_Start()

      - -
      -
      - - - - - - - - - - - -
      HAL_StatusTypeDef GPIO_LED_Fading_Start (GPIO_LEDTypeDef * led,
      uint32_t period )
      -
      - -

      Активировать моргание светодиодом

      -
      Parameters
      - - - -
      ledУказатель на структуру светодиода
      periodПериод плавного моргания светодиода
      -
      -
      -
      Returns
      HAL Status
      -

      Функция ставит режим моргания, который после управляется в GPIO_LED_Dynamic_Handle

      - -

      Definition at line 164 of file general_gpio.c.

      - -
      -
      - -

      ◆ GPIO_LED_Dynamic_Handle()

      - -
      -
      - - - - - - - -
      void GPIO_LED_Dynamic_Handle (GPIO_LEDTypeDef * led)
      -
      - -

      Управление динамическими режимами свечения светодиода

      -
      Parameters
      - - -
      Указательна структуру светодиода
      -
      -
      -

      Функция моргает/плавно моргает светодиодом в неблокирующем режиме Т.е. функцию надо вызывать постоянно, чтобы она мониторила тики и в нужный момент переключала светодиод

      - -

      Definition at line 184 of file general_gpio.c.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.js b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.js deleted file mode 100644 index 0cb5069..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.js +++ /dev/null @@ -1,23 +0,0 @@ -var group___m_y_l_i_b_s___g_p_i_o___l_e_d_s = -[ - [ "GPIO_LEDTypeDef", "struct_g_p_i_o___l_e_d_type_def.html", [ - [ "state", "struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435", null ], - [ "LED_Port", "struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf", null ], - [ "LED_Pin", "struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978", null ], - [ "LED_ActiveLvl", "struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816", null ], - [ "LED_Period", "struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec", null ] - ] ], - [ "GPIO_LEDStateTypeDef", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1", [ - [ "LED_IS_OFF", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae", null ], - [ "LED_IS_ON", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea", null ], - [ "LED_IS_BLINKING", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb", null ], - [ "LED_IS_FADING", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b", null ] - ] ], - [ "GPIO_LED_Init", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084", null ], - [ "GPIO_LED_On", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c", null ], - [ "GPIO_LED_Off", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357", null ], - [ "GPIO_LED_Set", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2", null ], - [ "GPIO_LED_Blink_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9", null ], - [ "GPIO_LED_Fading_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a", null ], - [ "GPIO_LED_Dynamic_Handle", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.map b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.map deleted file mode 100644 index 84e977d..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 deleted file mode 100644 index 665891b..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 +++ /dev/null @@ -1 +0,0 @@ -7da686519bc4fefcd523c1ffaad864d8 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.png b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.png deleted file mode 100644 index ab4e080e98e900dd9e1cd46e33df3e5e2ada7930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 957 zcmV;u148_XP)#&-(plK3jiT`lL?q$- z69g?REW}1E7xE7%0Xr+POwyzZS|}+(Y$QdBKpJ9`HrA|fIpA|fq8a>M-m{K+5)X3HpMoWyawytugdtL!@RSXfw?E4zj&3&U_L zilUY7Z4=3Zf*_a;g5bmG${JhufRAMtk%#)naGK5L5^%SBTTc)>q9`i7pmEh`G|Dbv zX!UxXsi~>5%cz`#|1&qbDmAx{jOm;$3|9NBX$h92|NT|18e1$W2ez*WG;u9mU24hq#ZNL z1GV<{x209&m`x{79%B=ZQ3S{p zCsR{XC`=<%*=>97GVmVw4Sc5cBu>qE#u$mB=)ZU{qQmLbG>wlVQg?t&)8~Gpw9Rn? zx=8EMr>DRv;14j_-gm^+MaDrVq{&gSJG^P5Y}UR!#|@(JAo?ab!gjwm?Xztohtt3< zU>>-{;qXmno%BD+8rg>FS8N#gh{f@P1V;F@5(R5=aZ93`Ws5yu{^{=n5p95Ba zD~VmU;aeW~qK<5CZc?w;owZk$&v9wI9uZB!t9t05_w#9=I83_>V4n=@EAA` z>;p$Fn|KNQ82G{tOixc&@>?S=BtM&a9mH|qXll9%ylKBK0CT_-;0%YSsA;~^8c|2C zRvYhoMnz0bo!m9ex`XLr`Jl+Q^D5|W?RVf6aF*6*#dpAVd*9z8E?8w{Elm`4r`Fks zm=+jUL2=o(XA|6l>MLeJ&ig-Xl6!Cz9DB=PAz_8@9 zy}h0KL%CwMx3`zNy(fra7;ZJ2&84-qO8g2#Wrbn5Rdx+|#c{l}yQ>wHyuvUn - - - - - - -MyLibs: Switch tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Switch tools
      -
      -
      - -

      Функции для работы с GPIO, как с кнопкой -More...

      -
      Collaboration diagram for Switch tools:
      -
      -
      - - - - - -

      -Classes

      struct  GPIO_SwitchTypeDef
       Структура кнопки More...
      - - - - - -

      -Functions

      HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
       Инициализировать кнопку (структуру кнопки)
      int GPIO_Read_Switch (GPIO_SwitchTypeDef *swstart)
       Считать состоянии кнопки
      -

      Detailed Description

      -

      Функции для работы с GPIO, как с кнопкой

      -
      Пример использования:
      MX_GPIO_Init(); // инициализация пина аппаратная
      -
      -
      // Инициализация кнопки на порте GPIOB, пин 0, активный уровень 1
      - -
      GPIO_Switch_Init(&sw1, GPIOB, GPIO_PIN_0, 1); // или дефайн SW_ON/SW_OFF
      -
      -
      // Считываем состояние кнопки
      - -
      {
      -
      // Кнопка нажата
      -
      LED_ON();
      -
      }
      -
      else
      -
      {
      -
      // Кнопка отжата
      - -
      }
      -
      #define LED_OFF
      Состояние пина для выключения светодиода
      -
      #define LED_ON
      Состояние пина для включения светодиода
      -
      int GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart)
      Считать состоянии кнопки
      -
      HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
      Инициализировать кнопку (структуру кнопки)
      -
      Структура кнопки
      -
      -

      Function Documentation

      - -

      ◆ GPIO_Switch_Init()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef * sw,
      GPIO_TypeDef * GPIOx,
      uint32_t GPIO_PIN_X,
      uint8_t SW_ActiveLevel )
      -
      - -

      Инициализировать кнопку (структуру кнопки)

      -
      Parameters
      - - - - - -
      swУказатель на структуру кнопки
      GPIOxУказатель на структуру порта для кнопки
      GPIO_PIN_XПин для кнопки
      SW_ActiveLevelСостояния пина, когда кнопка нажата
      -
      -
      -
      Returns
      HAL Status
      - -

      Definition at line 258 of file general_gpio.c.

      - -
      -
      - -

      ◆ GPIO_Read_Switch()

      - -
      -
      - - - - - - - -
      int GPIO_Read_Switch (GPIO_SwitchTypeDef * sw)
      -
      - -

      Считать состоянии кнопки

      -
      Parameters
      - - -
      swУказатель на структуру кнопки
      -
      -
      -
      Returns
      1 - если кнопка нажата, 0 - если отжата, -1 - если ошибка
      -

      Функция включает в себя неблокирующую проверку на дребезг Т.е. функцию надо вызывать постоянно, чтобы она мониторила состояние кнопки

      - -

      Definition at line 278 of file general_gpio.c.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js deleted file mode 100644 index cc824a0..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js +++ /dev/null @@ -1,12 +0,0 @@ -var group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h = -[ - [ "GPIO_SwitchTypeDef", "struct_g_p_i_o___switch_type_def.html", [ - [ "Sw_Port", "struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a", null ], - [ "Sw_Pin", "struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032", null ], - [ "Sw_ActiveLvl", "struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405", null ], - [ "Sw_PrevState", "struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89", null ], - [ "Sw_FilterDelay", "struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06", null ] - ] ], - [ "GPIO_Switch_Init", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ], - [ "GPIO_Read_Switch", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.map b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.map deleted file mode 100644 index 7f03793..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 deleted file mode 100644 index ca8ef1e..0000000 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 +++ /dev/null @@ -1 +0,0 @@ -02b6c378f59c685817dae556984a4fb3 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.png b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.png deleted file mode 100644 index 6b8513a6cddb391519b4180697bf587e50af342d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcmV;~119{5P)+-4ld@%JNQ6E7inbxP{VLplYzxR6YtQ=o;^q4}}- ztUsZUEmMas%_z=uAmt$4x^?i748>bBc<>OeWbt6I!2ze7GTa@Jbvpfgo|9yKULekT zPWtL=(3j^c-RVF?L_|bHM5G%`d|-Qf`-U-QvyNoCBn-nhySuyp)tyHfyXR3uNIe9XFUY|s5^-=bbi!hG#U+npQ2+k1w0i5f%AmA%J==c zQ>bixeVx_S)w- z7;|CCdOvBqr2X>5&N@cgK6(GQ23Q8}122K^YtE$*-}h&hvT+upP#P1c%8&4D6zRdo4xQgq7l>$yH zrm98cGIqn=V*IU}ZD0-f1T58>ku;9;Yv3jpSl%|jY>W!N27Un!fq#K#jEfg8Vew99 zxp=FYwm$tk{u+Hhtwqmj-^;|!ds$HR@*#<}7P>9svvzbn?Y+D)N>~FPFm92*1%t`|+8_unoU}ID(`n4KmO5>HUYlGrZq~MWb1Tb90mo;h_{kpE#96wCGWj1I9DD`* z4cz5oC$yZr$Bfs74{FKD$w}dT;wNu(ELt@4UdxE@*QD!OTe&zX;Ix8md$Gco>+k4# zQ5zc@!@a$|CyZ}QJq2!4>^k>1;Ge<=wqRvtrP2+wtXc3fa?yoA2U}=cEVa-dfZr#} zP2dNh$M^IQ#S4ryNq3yqtArj122GY zCd;qDaPr={ivu=Eyj`x^K0~t}+jNzSwHY|6&}h=_=YTuz?>oQ$zjfmFPy00000NkvXX Hu0mjfX6)t` diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html deleted file mode 100644 index 17cc146..0000000 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MyLibs: Peripheral - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Peripheral
      -
      -
      - -

      Модули для управления периферией -

      -
      Collaboration diagram for Peripheral:
      -
      -
      - -

      Модули для управления периферией

      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.js b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.js deleted file mode 100644 index d54fe32..0000000 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.js +++ /dev/null @@ -1,7 +0,0 @@ -var group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l = -[ - [ "GPIO Tools", "group___m_y___l_i_b_s___g_p_i_o.html", "group___m_y___l_i_b_s___g_p_i_o" ], - [ "SPI Tools", "group___m_y___l_i_b_s___s_p_i.html", "group___m_y___l_i_b_s___s_p_i" ], - [ "TIM Tools", "group___m_y___l_i_b_s___t_i_m.html", "group___m_y___l_i_b_s___t_i_m" ], - [ "UART Tools", "group___m_y___l_i_b_s___u_a_r_t.html", "group___m_y___l_i_b_s___u_a_r_t" ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map deleted file mode 100644 index 8380677..0000000 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 deleted file mode 100644 index a0f8bc3..0000000 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 +++ /dev/null @@ -1 +0,0 @@ -01d6066aba098d16d320b5b455fdca4f \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png deleted file mode 100644 index 07b5886b4eef601bc5cf142233a8dbee0b654117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 957 zcmV;u148_XP)1E)^|UU0uDRl$tLim~mx{`O<2&zLy~#$p3OQK@hZo#on^Mr0Mc~KlgyD!1KJaLl{}TUT1D@ zuIw->XLom(!^6YAa$Q0!LR6Y0jS!Y3X@syONh5?MNg5$6Nzw>mDRIl$hEfV+Oy=WR z+VvjGdj6bU2c81gfR`o5l3LOhd)8YJp68`%o3`F4T=n53X(0K+RjThx2TqJ(k^o!= zmVg()%}&`)dEsOecVT6{;3n~YpR=TyVi$migrmwmzyLF)MkI3OY)xZ~=^ItzMxVGk zS;VzdN)0S`IO?4P9suuvpTJwfgqb1yAj)TW9V4FS{eMNv z8EKN%IMKu%Vf`}$+yz#E=fHU&Uz zjkZanwPs;q;luj+dJA|4JO*ZgKfu`(r}zrIvg*{KTCHaN?d-I>T}86#FYnkUK52lF zr)OI00Ql5-tpWFeC%_|45+`ZYIRrNCB6eqXb~cyu7QHK$w!gUPnQP8(Zl;-bxt^L0 zlEaqwZ{Q>0y5=I`uGwecZ|4=b?r_`{Jqn~f$JA~F#9j2m?g#ZAA9Z>*#4+J0vI$(` zO6$jZZ?~zp4^o0p5@~k@EW*5xb6`X zr10rkcdAr{QO1!UWd|VKDm-bXC|N{Am8NEc$n;DIOOiA~Sdyd>!jdG75SHY}0;j;i z!9nbg-ig7EkB?)^`;ta$y&nWYduOL|4; - - - - - - -MyLibs: Delay tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Delay tools
      -
      -
      - -

      Функции для формирования задержек с помощью таймеров -More...

      -
      Collaboration diagram for Delay tools:
      -
      -
      - - - - - - - - - -

      -Functions

      HAL_StatusTypeDef TIM_Delay_Start (TIM_HandleTypeDef *htim)
       Начать отсчет неблокирующей задержки.
      HAL_StatusTypeDef TIM_Delay (TIM_HandleTypeDef *htim, uint16_t delay)
       Задержка в тиках таймера (блокирующая).
      HAL_StatusTypeDef TIM_Delay_NonBlocking (TIM_HandleTypeDef *htim, uint16_t delay)
       Задержка в тиках таймера (неблокирующая).
      -

      Detailed Description

      -

      Функции для формирования задержек с помощью таймеров

      -
      Пример использования:
      TIM_HandleTypeDef htim2;
      -
      -
      // блокирующая задержка 500 тиков таймера
      - -
      TIM_Delay(&htim2, 500);
      - -
      -
      -
      while(1)
      -
      {
      -
      // не блокирующая задержка 200 тиков таймера
      -
      if(TIM_Delay_NonBlocking(&htim2, 200) == HAL_OK)
      -
      {
      -
      TIM_Delay_Start(&htim2);
      -
      LED_TOOGLE();
      -
      }
      -
      }
      -
      #define LED_OFF
      Состояние пина для выключения светодиода
      -
      #define LED_ON
      Состояние пина для включения светодиода
      -
      HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)
      Задержка в тиках таймера (неблокирующая).
      -
      HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim)
      Начать отсчет неблокирующей задержки.
      -
      HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)
      Задержка в тиках таймера (блокирующая).
      -
      -

      Function Documentation

      - -

      ◆ TIM_Delay_Start()

      - -
      -
      - - - - - - - -
      HAL_StatusTypeDef TIM_Delay_Start (TIM_HandleTypeDef * htim)
      -
      - -

      Начать отсчет неблокирующей задержки.

      -
      Parameters
      - - -
      htimУказатель на хендл таймера.
      -
      -
      -
      Returns
      HAL status.
      -

      Сбрасывает счетчик для начала отсчета неблокирующей задержки. TIM_Delay_NonBlocking для проверки статуса задержки

      - -

      Definition at line 363 of file general_tim.c.

      - -
      -
      - -

      ◆ TIM_Delay()

      - -
      -
      - - - - - - - - - - - -
      HAL_StatusTypeDef TIM_Delay (TIM_HandleTypeDef * htim,
      uint16_t delay )
      -
      - -

      Задержка в тиках таймера (блокирующая).

      -
      Parameters
      - - - -
      htimУказатель на хендл таймера.
      delayЗадержка в тиках таймера.
      -
      -
      -
      Returns
      HAL status.
      -

      Формирует задержку с блокировкой программы.

      - -

      Definition at line 337 of file general_tim.c.

      - -
      -
      - -

      ◆ TIM_Delay_NonBlocking()

      - -
      -
      - - - - - - - - - - - -
      HAL_StatusTypeDef TIM_Delay_NonBlocking (TIM_HandleTypeDef * htim,
      uint16_t delay )
      -
      - -

      Задержка в тиках таймера (неблокирующая).

      -
      Parameters
      - - - -
      htimУказатель на хендл таймера.
      delayЗадержка в тиках таймера.
      -
      -
      -
      Returns
      HAL status.
      -

      Формирует задержку с блокировкой программы. Перед ожиданием задержки надо запутстить таймер TIM_Delay_Start

      Note
      Таймер не должен использоваться на время этой задержки
      - -

      Definition at line 382 of file general_tim.c.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.js b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.js deleted file mode 100644 index 595faab..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.js +++ /dev/null @@ -1,6 +0,0 @@ -var group___m_y_l_i_b_s___t_i_m___d_e_l_a_y = -[ - [ "TIM_Delay_Start", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834", null ], - [ "TIM_Delay", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e", null ], - [ "TIM_Delay_NonBlocking", "group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.map b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.map deleted file mode 100644 index 59dd659..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 deleted file mode 100644 index fd82335..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 +++ /dev/null @@ -1 +0,0 @@ -4ec3b63ebc8456123bf82cd78dcc4875 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.png b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.png deleted file mode 100644 index d86dd9851a30c115944513eda12f8f0453503e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmV;j15NyiP)sh60h@b z(8|IlmJ0z}l@wYD78VgrAt^0Vq%bEoDN+P-5arfl_ma(K-(PO_Hop%nVTDi3&(EK;ENjL@Fm2$v?)RmorQfFGC}Lq@Vb*jEZD!kc*KwTH z;JFjwMwVsGSeEr}cwx29ec-+6Ad1l6yNKQ+uKLZ+XiA05uXxJ#2_W0h(Ss~5rdR~A_ge|MGT7FhRDjYj_l>{ zb6t18&EV&#$5F2tem+Y-MWn?tBon|bU=DZ#d^Q_SHc{IydAF}Rolax7yoM25=>*J^ zSV3`Z;}WfCKMiIBH-HDgEO6RC|JGPU1%wA^6B4QkF=V9@boed<&w)+g3-E-4p!|01y^wacs01WX#(WgZvpr;6BW z;sRg&;~8)hZ$tjhFgmYFo`zrVb;wpM#kZDiYaH@#Iexvsmsv$JD5jMlPkdo{h4h=_=Yh={b+f977n U - - - - - - -MyLibs: Encoder tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Encoder tools
      -
      -
      - -

      Функции для считывания энкодера -More...

      -
      Collaboration diagram for Encoder tools:
      -
      -
      - - - - - -

      -Classes

      struct  TIM_EncoderTypeDef
       Структура инициализации енкодера More...
      - - - - - - - -

      -Functions

      HAL_StatusTypeDef TIM_Encoder_Init (TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim)
       Инициализация режима энкодер у таймера.
      HAL_StatusTypeDef TIM_Encoder_Read (TIM_EncoderTypeDef *henc)
       Считать энкодер.
      int TIM_Encoder_ReadSwitch (TIM_EncoderTypeDef *henc)
       Считать кнопку энкодера.
      -

      Detailed Description

      -

      Функции для считывания энкодера

      -
      Пример использования:
      -
      TIM_HandleTypeDef htim4;
      -
      -
      // инициализация
      -
      henc1.htim = &htim4;
      -
      henc1.GPIOx = GPIOA;
      -
      henc1.GPIO_PIN_TI1 = GPIO_PIN_0;
      -
      henc1.GPIO_PIN_TI2 = GPIO_PIN_1;
      -
      TIM_Encoder_Init(&henc1, &htim4);
      -
      -
      // считывание энкодера и кнопки
      -
      int16_t delta = TIM_Encoder_Read(&henc1);
      -
      setpoint_tmp += delta;
      - -
      {
      -
      setpoint = setpoint_tmp; // подтвердить новое значение
      -
      }
      -
      int TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc)
      Считать кнопку энкодера.
      -
      HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim)
      Инициализация режима энкодер у таймера.
      -
      HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc)
      Считать энкодер.
      -
      Структура инициализации енкодера
      -
      uint32_t GPIO_PIN_TI1
      Пин, куда подключается канал TI1.
      -
      uint32_t GPIO_PIN_TI2
      Пин, куда подключается канал TI2.
      -
      GPIO_TypeDef * GPIOx
      Порт, куда подключается энкодер
      -
      TIM_HandleTypeDef * htim
      Указатель на HAL handle таймера
      -
      -

      Function Documentation

      - -

      ◆ TIM_Encoder_Init()

      - -
      -
      - - - - - - - - - - - -
      HAL_StatusTypeDef TIM_Encoder_Init (TIM_EncoderTypeDef * henc,
      TIM_HandleTypeDef * htim )
      -
      - -

      Инициализация режима энкодер у таймера.

      -
      Parameters
      - - - -
      hencУказатель на хендл энкодера.
      htimУказатель на хендл таймера.
      -
      -
      -
      Returns
      HAL status.
      -
      Note
      Предварительно надо инициализировать таймер TIM_Base_Init.
      - -

      Definition at line 168 of file general_tim.c.

      - -
      -
      - -

      ◆ TIM_Encoder_Read()

      - -
      -
      - - - - - - - -
      HAL_StatusTypeDef TIM_Encoder_Read (TIM_EncoderTypeDef * henc)
      -
      - -

      Считать энкодер.

      -
      Parameters
      - - -
      hencУказатель на хендл энкодера.
      -
      -
      -
      Returns
      HAL status.
      -

      Читает разницу энкодера, которую он накопил после предыдущего вызова этой функции.

      - -

      Definition at line 303 of file general_tim.c.

      - -
      -
      - -

      ◆ TIM_Encoder_ReadSwitch()

      - -
      -
      - - - - - - - -
      int TIM_Encoder_ReadSwitch (TIM_EncoderTypeDef * henc)
      -
      - -

      Считать кнопку энкодера.

      -
      Parameters
      - - -
      hencУказатель на хендл энкодера.
      -
      -
      -
      Returns
      1 - если кнопка нажата, 0 - если отжата, -1 - если ошибка
      - -

      Definition at line 322 of file general_tim.c.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.js b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.js deleted file mode 100644 index ebbdb4b..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.js +++ /dev/null @@ -1,17 +0,0 @@ -var group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r = -[ - [ "TIM_EncoderTypeDef", "struct_t_i_m___encoder_type_def.html", [ - [ "Encoder_Diff", "struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3", null ], - [ "Encoder_Shdw", "struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2", null ], - [ "htim", "struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c", null ], - [ "sConfig", "struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5", null ], - [ "GPIOx", "struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9", null ], - [ "GPIO_PIN_TI1", "struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e", null ], - [ "GPIO_PIN_TI2", "struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5", null ], - [ "GPIO_PIN_SW", "struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80", null ], - [ "Sw", "struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45", null ] - ] ], - [ "TIM_Encoder_Init", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc", null ], - [ "TIM_Encoder_Read", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501", null ], - [ "TIM_Encoder_ReadSwitch", "group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.map b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.map deleted file mode 100644 index 112fd24..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 deleted file mode 100644 index e0a4275..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 +++ /dev/null @@ -1 +0,0 @@ -513791dca5b54d0597647f3ade574062 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.png b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.png deleted file mode 100644 index 26fe6d6a78ffaf0154e2688ef03fb9f579fba601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmV;q14jIbP)kL%Oot&I+uPgh?(X(1cMZfMA_G$5idaaAD`Fufu84({xFQx(;)+-(_Hb>h$F};u$z` zvm|6t+`4fInzx?=X@$Idzz@8cYB52yfFIhw4~aU0ntZk`*J zFiG$8wuSpo+AivIFy1WNrrmGa^|CUWxWQ4ki1XGw@oa8xUIf;F>!GH!$-0`k(;?Z~ z+M--8XWAysk1*{IHO~(^IGT^Dk73e?I|AV{Jx}7!&CUH-UtfO&Jf=ODy#yQp$5Za& z4e&j4$3rkXJ8R`#O<_g4*(3bNqQo7MA(hHMf%l!)Wnck#0i5S($sFYi?GbzIW@ctg zbUSpWN7b-Vl*-00z$j9gocEwuAK!qtzy;cK-H$-C)An~19olLXBc${St(k%VFS - - - - - - -MyLibs: General tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      General tools
      -
      -
      - -

      Функции для базовой инициализации таймеров -More...

      -
      Collaboration diagram for General tools:
      -
      -
      - - - - - -

      -Topics

       Init defines
       Настройка таймеров
      - - - -

      -Classes

      struct  TIM_SettingsTypeDef
       Структура инициализации таймера More...
      - - - - - -

      -Enumerations

      enum  TIM_ITModeTypeDef { TIM_DEFAULT = 0 -, TIM_IT_MODE = (1<<( 0 )) - }
       Режим прерываний таймера More...
      enum  TIM_MHzTickBaseTypeDef {
      -  TIM_Base_Disable = 0 -, TIM_TickBase_1US = 1 -, TIM_TickBase_10US = 10 -, TIM_TickBase_100US = 100 -,
      -  TIM_TickBase_1MS = 1000 -, TIM_TickBase_10MS = 10000 -, TIM_TickBase_100MS = 100000 -
      - }
       Длительность тика таймера (частота тактирования таймера) More...
      - - - - - - - -

      -Functions

      HAL_StatusTypeDef TIM_Base_Init (TIM_SettingsTypeDef *stim)
       Инициализация таймера.
      void TIM_Base_MspInit (TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
       Инициализация CLK и NVIC таймеров.
      void TIM_Base_MspDeInit (TIM_HandleTypeDef *htim)
       Деинициализация CLK и NVIC таймеров.
      -

      Detailed Description

      -

      Функции для базовой инициализации таймеров

      -
      Пример использования:
      TIM_SettingsTypeDef tim2Settings;
      -
      -
      void TIM2_Init(void)
      -
      {
      -
      // Настройка таймера TIM2 на 1 кГц с прерываниями с шагом таймера 10 мкс
      -
      tim2Settings.htim.Instance = TIM2;
      -
      tim2Settings.sTimMode = TIM_IT_MODE;
      - -
      tim2Settings.sTickBasePrescaler = 1;
      -
      tim2Settings.sTimFreqHz = 1000; // 1 кГц
      -
      tim2Settings.sTimAHBFreqMHz = 72000000; // Hz
      -
      -
      if(TIM_Base_Init(&tim2Settings) != HAL_OK)
      -
      {
      -
      Error_Handler();
      -
      }
      -
      }
      -
      HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
      Инициализация таймера.
      Definition general_tim.c:34
      -
      @ TIM_TickBase_10US
      Таймер тактируется с частотой 100 кГц
      Definition general_tim.h:95
      -
      @ TIM_IT_MODE
      Прерываний включены
      Definition general_tim.h:80
      -
      Структура инициализации таймера
      -
      uint8_t sTickBasePrescaler
      Дополнительный делитель, для удобного деления sTickBaseUS.
      -
      TIM_MHzTickBaseTypeDef sTickBaseUS
      Длительность одного тика
      -
      float sTimAHBFreqMHz
      Частота шины тактирования таймера
      -
      TIM_ITModeTypeDef sTimMode
      Настройки прерывания таймера
      -
      TIM_HandleTypeDef htim
      HAL handle таймера
      -
      float sTimFreqHz
      Желаемая частота таймера
      -
      -

      Enumeration Type Documentation

      - -

      ◆ TIM_ITModeTypeDef

      - -
      -
      - - - - -
      enum TIM_ITModeTypeDef
      -
      - -

      Режим прерываний таймера

      - - - -
      Enumerator
      TIM_DEFAULT 

      Прерываний отключены

      -
      TIM_IT_MODE 

      Прерываний включены

      -
      - -

      Definition at line 77 of file general_tim.h.

      - -
      -
      - -

      ◆ TIM_MHzTickBaseTypeDef

      - -
      -
      - - - - -
      enum TIM_MHzTickBaseTypeDef
      -
      - -

      Длительность тика таймера (частота тактирования таймера)

      -

      enum дает базовые длительности, но можно выставить другие (напр 500 - 0.5 мс)

      - - - - - - - - -
      Enumerator
      TIM_Base_Disable 

      Таймер отключен

      -
      TIM_TickBase_1US 

      Таймер тактируется с частотой 1 МГц

      -
      TIM_TickBase_10US 

      Таймер тактируется с частотой 100 кГц

      -
      TIM_TickBase_100US 

      Таймер тактируется с частотой 10 кГц

      -
      TIM_TickBase_1MS 

      Таймер тактируется с частотой 1 кГц

      -
      TIM_TickBase_10MS 

      Таймер тактируется с частотой 100 Гц

      -
      TIM_TickBase_100MS 

      Таймер тактируется с частотой 10 Гц

      -
      - -

      Definition at line 91 of file general_tim.h.

      - -
      -
      -

      Function Documentation

      - -

      ◆ TIM_Base_Init()

      - -
      -
      - - - - - - - -
      HAL_StatusTypeDef TIM_Base_Init (TIM_SettingsTypeDef * stim)
      -
      - -

      Инициализация таймера.

      -
      Parameters
      - - -
      stimУказатель на структуру с настройками таймера.
      -
      -
      -
      Returns
      HAL status.
      -


      - Инициализирует таймер исходя из настроек верхнего уровня:

        -
      • Длительность одного тика TIM_MHzTickBaseTypeDef
      • -
      • Частота таймера (в Гц, float)
      • -
      • Частота тактирования таймера от шины (в Гц, float)
      • -
      -

      При невозможности выставления частоты при заданой длительности тика длительность тика увеличивается до тех пор, пока частота не будет достигнута.

      -

      При выставлении дефайна UPDATE_TIM_PARAMS_AFTER_INITIALIZATION новая длительность тика записывается в структуру.

      -

      Также остается возможность низкоуровневой настройки по структурам TIM_SettingsTypeDef. Для этого надо высокоуровневые настройки приравнять к нулю

      - -

      Definition at line 34 of file general_tim.c.

      - -
      -
      - -

      ◆ TIM_Base_MspInit()

      - -
      -
      - - - - - - - - - - - -
      void TIM_Base_MspInit (TIM_HandleTypeDef * htim,
      TIM_ITModeTypeDef it_mode )
      -
      - -

      Инициализация CLK и NVIC таймеров.

      -
      Parameters
      - - -
      htimУказатель на хендл таймера.
      -
      -
      -
      Note
      Чтобы не генерировать функцию с иницилизацией неиспользуемых таймеров, дефайнами Init defines в general_tim.h определяются используемые таймеры.
      - -

      Definition at line 408 of file general_tim.c.

      - -
      -
      - -

      ◆ TIM_Base_MspDeInit()

      - -
      -
      - - - - - - - -
      void TIM_Base_MspDeInit (TIM_HandleTypeDef * htim)
      -
      - -

      Деинициализация CLK и NVIC таймеров.

      -
      Parameters
      - - -
      htimУказатель на хендл таймера.
      -
      -
      -
      Note
      Чтобы не генерировать функцию с деиницилизацией неиспользуемых таймеров, дефайнами Init defines в general_tim.h определяются используемые таймеры.
      - -

      Definition at line 617 of file general_tim.c.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.js b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.js deleted file mode 100644 index 80fa05c..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.js +++ /dev/null @@ -1,32 +0,0 @@ -var group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l = -[ - [ "Init defines", "group___t_i_m___i_n_i_t.html", "group___t_i_m___i_n_i_t" ], - [ "TIM_SettingsTypeDef", "struct_t_i_m___settings_type_def.html", [ - [ "htim", "struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c", null ], - [ "sClockSourceConfig", "struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0", null ], - [ "sSlaveConfig", "struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969", null ], - [ "sMasterConfig", "struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21", null ], - [ "sBreakDeadTimeConfig", "struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7", null ], - [ "sTimMode", "struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0", null ], - [ "sTickBaseUS", "struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e", null ], - [ "sTickBasePrescaler", "struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718", null ], - [ "sTimAHBFreqMHz", "struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014", null ], - [ "sTimFreqHz", "struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4", null ] - ] ], - [ "TIM_ITModeTypeDef", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787", [ - [ "TIM_DEFAULT", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8", null ], - [ "TIM_IT_MODE", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c", null ] - ] ], - [ "TIM_MHzTickBaseTypeDef", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800", [ - [ "TIM_Base_Disable", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5", null ], - [ "TIM_TickBase_1US", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2", null ], - [ "TIM_TickBase_10US", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f", null ], - [ "TIM_TickBase_100US", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30", null ], - [ "TIM_TickBase_1MS", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25", null ], - [ "TIM_TickBase_10MS", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa", null ], - [ "TIM_TickBase_100MS", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da", null ] - ] ], - [ "TIM_Base_Init", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec", null ], - [ "TIM_Base_MspInit", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931", null ], - [ "TIM_Base_MspDeInit", "group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.map b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.map deleted file mode 100644 index f14a09f..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 deleted file mode 100644 index 5d080b1..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 +++ /dev/null @@ -1 +0,0 @@ -37d8e41e702ba4c638358b9e0ee2014c \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.png b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.png deleted file mode 100644 index 6294f412d40c46cbbb89d457a45e31ec1cde0b73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 zcmV;^1uXiBP)2wmy+$qN*A|eG+5*HDvF(q*kks4DH z7ZIs3C2leptJsmt&_@nc5SY0{2q{1q?*Txn&!xNqqPPtKvAfNj%+d z_aN{C@II8b*XyycuwZxI^6f~Uj7w}oM>;;}DoXvCu_?PhfP0AVp@C&eR z(&(fX7Z+>sx%6e+`DfKx)^LjT*(p^TN-1eR=oR2y;342C;3J?HmEA3)!D&gGg)%B> zmE9}1oxn?Kf0J-{$u}M7pnZAsH!~ABM5>MNnfFqVV3YV`846| zgU7KnoU*pI7U)YM?2En>Vx!aP^- z=g#fO*^TLm*H|C85G{KNAA*XQ=tj#~;C{=o$do9FS4+LWlS`_?2Y$C5giMF^2b&@y zVoph1M5M-)#6?7EOi5fsq{fuQMMP>Wb#{v8iSJG~Z{B2cQi7G$LzvjLYuA)R z3Uuq%t<%Q-AT)K3r)S#Nmb=~W>V=xs2!N%>|w{3?Zfa|&!ZO35Bb=`}- tUXNa{H+p9g5fKp)5fKp)5fPCw{RbEch~g|(rV9W7002ovPDHLkV1iNi+BE - - - - - - -MyLibs: PWM/OC Channels tools - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      PWM/OC Channels tools
      -
      -
      - -

      Функции для инициализации базовых функций каналов таймера -More...

      -
      Collaboration diagram for PWM/OC Channels tools:
      -
      -
      - - - - - - - -

      -Functions

      HAL_StatusTypeDef TIM_Output_PWM_Init (TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN)
       Инициализация выхода ШИМ таймера.
      HAL_StatusTypeDef TIM_OC_Comparator_Init (TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
       Инициализация OC компаратора таймера.
      -

      Detailed Description

      -

      Функции для инициализации базовых функций каналов таймера

      -
      Пример использования:
      void PWM_Channel_Init_Example(void)
      -
      {
      -
      TIM_HandleTypeDef htim3;
      -
      TIM_OC_InitTypeDef sConfigOC;
      -
      GPIO_TypeDef *GPIOx = GPIOB;
      -
      uint32_t PWM_PIN = GPIO_PIN_0;
      -
      -
      // Настройка таймера и канала PWM
      -
      TIM_Output_PWM_Init(&htim3, &sConfigOC, TIM_CHANNEL_1, GPIOx, PWM_PIN);
      -
      -
      // Настройка компаратора OC
      -
      TIM_OC_Comparator_Init(&htim3, TIM_CHANNEL_1);
      -
      }
      -
      HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN)
      Инициализация выхода ШИМ таймера.
      -
      HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
      Инициализация OC компаратора таймера.
      -
      -

      Function Documentation

      - -

      ◆ TIM_Output_PWM_Init()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      HAL_StatusTypeDef TIM_Output_PWM_Init (TIM_HandleTypeDef * htim,
      TIM_OC_InitTypeDef * sConfigOC,
      uint32_t TIM_CHANNEL,
      GPIO_TypeDef * GPIOx,
      uint32_t GPIO_PIN )
      -
      - -

      Инициализация выхода ШИМ таймера.

      -
      Parameters
      - - - - - - -
      htimУказатель на хендл таймера.
      sConfigOCУказатель на настрйоки канала таймера.
      TIM_CHANNELКанал таймера для настройки.
      GPIOxПорт для вывода ШИМ.
      GPIO_PINПин для вывода ШИМ.
      -
      -
      -
      Returns
      HAL status.
      -
      Note
      Предварительно надо инициализировать таймер TIM_Base_Init.
      - -

      Definition at line 226 of file general_tim.c.

      - -
      -
      - -

      ◆ TIM_OC_Comparator_Init()

      - -
      -
      - - - - - - - - - - - -
      HAL_StatusTypeDef TIM_OC_Comparator_Init (TIM_HandleTypeDef * htim,
      uint32_t TIM_CHANNEL )
      -
      - -

      Инициализация OC компаратора таймера.

      -
      Parameters
      - - - -
      htimУказатель на хендл таймера.
      TIM_CHANNELКанал таймера для настройки.
      -
      -
      -
      Returns
      HAL status.
      -
      Note
      Предварительно надо инициализировать таймер TIM_Base_Init.
      - -

      Definition at line 272 of file general_tim.c.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.js b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.js deleted file mode 100644 index b3b5b18..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.js +++ /dev/null @@ -1,5 +0,0 @@ -var group___m_y_l_i_b_s___t_i_m___o_c = -[ - [ "TIM_Output_PWM_Init", "group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6", null ], - [ "TIM_OC_Comparator_Init", "group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.map b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.map deleted file mode 100644 index 5a90a60..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.md5 b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.md5 deleted file mode 100644 index 7283b9f..0000000 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.md5 +++ /dev/null @@ -1 +0,0 @@ -7f9a6251bcbe3f9c7a8b50c58d1b52f5 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.png b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.png deleted file mode 100644 index 2b2d68bc3bccf467f62459e173af1f2594de77cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmV-o1fBbdP)4dc$FZCjfJQ=e-ww1 z&HM|3h1M3L<+Aw)PGVtaCn$PpQU$rjG)AyUAVnZ>9`0D|u1sd1XXcq_cJ`TBKQCCg zJU{07?rr9q=b3pj0TB@q5fKp)5t08lQ!Loq+k4g+b2mmX>mbXrUk?rr{)`<*h~aR! z8#@M(DoK)@jYgw~`LbKZM#h-C#+V1I3v2D%1HO$NLAY z>jABsG)-fN(AZ!wV0(Kzb{Ha7r>Cb}US2MgClO*15m_oFG7;%LB{C7|JtZ;`={+Sf z5$Qc8G7;&$#)-@r<9y}Y6#G;iGi035_&eZf;630w;MK^ncuUjN`pVb4`jwSeZDX<3 z7t35RmA!{Ls`_C^kt(sK1)0loqL0)Akc$ZnVR z=&5{iI!uXJnzWEL)ga&A$#^?&bRxXKZD4A?<2d91eCpsjE5J^I#_9n%$)Pu#Z8z}0t|R9|9i$_kkC=xs~qZG(tOpQUt8lVkrgayY5526vkjx}veI=kpxD;d&gY~G?dQ_gjf<}CZ))Y1&z80n+ z!{Kn(81q2aKI%);lq}2cjmP6U*P1qgw}6j1K-bH&tUoCA|mCK$hze!b^s!M6#Zhqh)7dPWFpdgN@OC^drD*?(tAo|BGP;M z1HE#?`T4o^51@*4!S(gEwR|CwB}sBNnM@9kkB?gqY8@p>auz#=P+688UR`Mih;&<$ oBoAZ9AR;0nA|fIpBGNVg0teqnWsx;`jQ{`u07*qoM6N<$f|=bc9smFU diff --git a/Doc/html/group___s_p_i___i_n_i_t.html b/Doc/html/group___s_p_i___i_n_i_t.html deleted file mode 100644 index c62b59e..0000000 --- a/Doc/html/group___s_p_i___i_n_i_t.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - -MyLibs: Init defines - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Init defines
      -
      -
      - -

      Настройка SPI. -More...

      -
      Collaboration diagram for Init defines:
      -
      -
      - - - - - - - - - - - -

      -Macros

      #define HAL_SPI_MODULE_ENABLED
       Включение HAL SPI.
      #define USE_SPI1
       Включить SPI1 в SPI_MspInit.
      #define USE_SPI2
       Включить SPI2 в SPI_MspInit.
      #define USE_SPI3
       Включить SPI3 в SPI_MspInit.
      -

      Detailed Description

      -

      Настройка SPI.

      -

      Macro Definition Documentation

      - -

      ◆ HAL_SPI_MODULE_ENABLED

      - -
      -
      - - - - -
      #define HAL_SPI_MODULE_ENABLED
      -
      - -

      Включение HAL SPI.

      - -

      Definition at line 75 of file general_spi.h.

      - -
      -
      - -

      ◆ USE_SPI1

      - -
      -
      - - - - -
      #define USE_SPI1
      -
      - -

      Включить SPI1 в SPI_MspInit.

      - -

      Definition at line 77 of file general_spi.h.

      - -
      -
      - -

      ◆ USE_SPI2

      - -
      -
      - - - - -
      #define USE_SPI2
      -
      - -

      Включить SPI2 в SPI_MspInit.

      - -

      Definition at line 78 of file general_spi.h.

      - -
      -
      - -

      ◆ USE_SPI3

      - -
      -
      - - - - -
      #define USE_SPI3
      -
      - -

      Включить SPI3 в SPI_MspInit.

      - -

      Definition at line 79 of file general_spi.h.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___s_p_i___i_n_i_t.js b/Doc/html/group___s_p_i___i_n_i_t.js deleted file mode 100644 index 84da224..0000000 --- a/Doc/html/group___s_p_i___i_n_i_t.js +++ /dev/null @@ -1,7 +0,0 @@ -var group___s_p_i___i_n_i_t = -[ - [ "HAL_SPI_MODULE_ENABLED", "group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c", null ], - [ "USE_SPI1", "group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf", null ], - [ "USE_SPI2", "group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b", null ], - [ "USE_SPI3", "group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___s_p_i___i_n_i_t.map b/Doc/html/group___s_p_i___i_n_i_t.map deleted file mode 100644 index 8b71b63..0000000 --- a/Doc/html/group___s_p_i___i_n_i_t.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___s_p_i___i_n_i_t.md5 b/Doc/html/group___s_p_i___i_n_i_t.md5 deleted file mode 100644 index fe2e1ed..0000000 --- a/Doc/html/group___s_p_i___i_n_i_t.md5 +++ /dev/null @@ -1 +0,0 @@ -a5fee9e01f339403bf93347eac092de0 \ No newline at end of file diff --git a/Doc/html/group___s_p_i___i_n_i_t.png b/Doc/html/group___s_p_i___i_n_i_t.png deleted file mode 100644 index ff54ab3bae363d647c0778ac956f79517f6bb996..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 zcmV;p14sOcP))LcSf(-XO>60&9zj?mN zlN^YMh=_=YNL86|!`j-~9b?Qw5y4cQwf6hQ#>QdMaU{`bG?t5wp^hBKIq*DhC)jo+ zypu6z!5FidUs$!W0(>bth$Qr#XQSKgwt(lsw!Wl0<9S}@0o94?xDBSvqUn}^JIorR?OE{@~$;KG0wIkc(>=Px}A7}pxxDGr4 zR)L4WRI%Y?E4b$Cx^5uF0lwltDmH`v+-q$TE?CxuOS^E%H>&iD8YA2n?2j6EP=D08QDesG zODdI_&RTonA2sjtFI;j4KM(7RJ4OQc@SnF^18xH+z;v%~de9$LU9iN9DkDA58(Ch4 z#~9QX{G4RmL2<_In?!0eowfFSi!y5LhD`5XR!vIf<&WO>9$3IHGgpCGE|!^5TEM>~2c6W+ z%uEr79a|Q6C5Me!>hiMcGFY?g0^7hl;3odkz$VbaFX;-I(ds1YSud-#zD#bU1l#j4 ztTc>UHfDS?=oI+Y+g#u=@CtZ@f8sM-q7&e-86#ZM4eLwmI&ILHS(TT4nbK%9mW?r+ zWnNq?BiD7Y)~+<0&2g@cZU9e#*T8-JwYx&f%k}kjtCv{Q)q9Dx)oeB|yg7bp&aNfZ z20j5xz+F^wUJ805r96HY9f0IRGo47zlyo9FQ__j#Oi3q_GbNo!&h%rma_;EpDDuZq zC7DjA6WQLEbdKX3bi3Ww?(S~pLDh}pI0r??kd(Eyb$onWbQrbcIL^-Ky+lMrL_|cS aD*gkSgN=0;o|9?-0000 - - - - - - -MyLibs: Init defines - - - - - - - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MyLibs 1.0 -
      -
      Расширенные библиотеки для STM32
      -
      -
      - - - - - - - - -
      -
      - -
      -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -

      Настройка таймеров -More...

      -
      Collaboration diagram for Init defines:
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Macros

      #define HAL_TIM_MODULE_ENABLED
      #define USE_TIM1
       Включить TIM1 в TIM_Base_MspInit.
      #define USE_TIM2
       Включить TIM2 в TIM_Base_MspInit.
      #define USE_TIM3
       Включить TIM3 в TIM_Base_MspInit.
      #define USE_TIM4
       Включить TIM4 в TIM_Base_MspInit.
      #define USE_TIM5
       Включить TIM5 в TIM_Base_MspInit.
      #define USE_TIM6
       Включить TIM6 в TIM_Base_MspInit.
      #define USE_TIM7
       Включить TIM7 в TIM_Base_MspInit.
      #define USE_TIM8
       Включить TIM8 в TIM_Base_MspInit.
      #define USE_TIM9
       Включить TIM9 в TIM_Base_MspInit.
      #define USE_TIM10
       Включить TIM10 в TIM_Base_MspInit.
      #define USE_TIM11
       Включить TIM11 в TIM_Base_MspInit.
      #define USE_TIM12
       Включить TIM12 в TIM_Base_MspInit.
      #define USE_TIM13
       Включить TIM13 в TIM_Base_MspInit.
      #define USE_TIM14
       Включить TIM14 в TIM_Base_MspInit.
      -

      Detailed Description

      -

      Настройка таймеров

      -

      Macro Definition Documentation

      - -

      ◆ HAL_TIM_MODULE_ENABLED

      - -
      -
      - - - - -
      #define HAL_TIM_MODULE_ENABLED
      -
      - -

      Definition at line 32 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM1

      - -
      -
      - - - - -
      #define USE_TIM1
      -
      - -

      Включить TIM1 в TIM_Base_MspInit.

      - -

      Definition at line 34 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM2

      - -
      -
      - - - - -
      #define USE_TIM2
      -
      - -

      Включить TIM2 в TIM_Base_MspInit.

      - -

      Definition at line 35 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM3

      - -
      -
      - - - - -
      #define USE_TIM3
      -
      - -

      Включить TIM3 в TIM_Base_MspInit.

      - -

      Definition at line 36 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM4

      - -
      -
      - - - - -
      #define USE_TIM4
      -
      - -

      Включить TIM4 в TIM_Base_MspInit.

      - -

      Definition at line 37 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM5

      - -
      -
      - - - - -
      #define USE_TIM5
      -
      - -

      Включить TIM5 в TIM_Base_MspInit.

      - -

      Definition at line 38 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM6

      - -
      -
      - - - - -
      #define USE_TIM6
      -
      - -

      Включить TIM6 в TIM_Base_MspInit.

      - -

      Definition at line 39 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM7

      - -
      -
      - - - - -
      #define USE_TIM7
      -
      - -

      Включить TIM7 в TIM_Base_MspInit.

      - -

      Definition at line 40 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM8

      - -
      -
      - - - - -
      #define USE_TIM8
      -
      - -

      Включить TIM8 в TIM_Base_MspInit.

      - -

      Definition at line 41 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM9

      - -
      -
      - - - - -
      #define USE_TIM9
      -
      - -

      Включить TIM9 в TIM_Base_MspInit.

      - -

      Definition at line 42 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM10

      - -
      -
      - - - - -
      #define USE_TIM10
      -
      - -

      Включить TIM10 в TIM_Base_MspInit.

      - -

      Definition at line 43 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM11

      - -
      -
      - - - - -
      #define USE_TIM11
      -
      - -

      Включить TIM11 в TIM_Base_MspInit.

      - -

      Definition at line 44 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM12

      - -
      -
      - - - - -
      #define USE_TIM12
      -
      - -

      Включить TIM12 в TIM_Base_MspInit.

      - -

      Definition at line 45 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM13

      - -
      -
      - - - - -
      #define USE_TIM13
      -
      - -

      Включить TIM13 в TIM_Base_MspInit.

      - -

      Definition at line 46 of file general_tim.h.

      - -
      -
      - -

      ◆ USE_TIM14

      - -
      -
      - - - - -
      #define USE_TIM14
      -
      - -

      Включить TIM14 в TIM_Base_MspInit.

      - -

      Definition at line 47 of file general_tim.h.

      - -
      -
      -
      -
      - -
      - - - - diff --git a/Doc/html/group___t_i_m___i_n_i_t.js b/Doc/html/group___t_i_m___i_n_i_t.js deleted file mode 100644 index 9a8158f..0000000 --- a/Doc/html/group___t_i_m___i_n_i_t.js +++ /dev/null @@ -1,17 +0,0 @@ -var group___t_i_m___i_n_i_t = -[ - [ "USE_TIM1", "group___t_i_m___i_n_i_t.html#ga54a98c21365e0bc45b81555d2b101f2b", null ], - [ "USE_TIM2", "group___t_i_m___i_n_i_t.html#ga72535a44955b43cbcd56e25039ab32eb", null ], - [ "USE_TIM3", "group___t_i_m___i_n_i_t.html#ga5b5685a43273b6e37242a4aba3ee0617", null ], - [ "USE_TIM4", "group___t_i_m___i_n_i_t.html#ga1493b39c9214501180b81b4c892f9be0", null ], - [ "USE_TIM5", "group___t_i_m___i_n_i_t.html#ga252f4fba93fc265110e83760e0590af3", null ], - [ "USE_TIM6", "group___t_i_m___i_n_i_t.html#ga8fe31b98160627d19038222910be3f46", null ], - [ "USE_TIM7", "group___t_i_m___i_n_i_t.html#ga7cdc54cc8cbbb6e9f60001f1e3e6ec67", null ], - [ "USE_TIM8", "group___t_i_m___i_n_i_t.html#ga28ba33d7c6bf22821dafa5bcee4854be", null ], - [ "USE_TIM9", "group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a", null ], - [ "USE_TIM10", "group___t_i_m___i_n_i_t.html#ga98c0691052d1da2c4053dd3586ff7ce9", null ], - [ "USE_TIM11", "group___t_i_m___i_n_i_t.html#ga176c97f06ebcf14e06e5c5bdbfac44c2", null ], - [ "USE_TIM12", "group___t_i_m___i_n_i_t.html#ga4e2b0e6cdf9eed74581b575c3fd9516b", null ], - [ "USE_TIM13", "group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac", null ], - [ "USE_TIM14", "group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___t_i_m___i_n_i_t.map b/Doc/html/group___t_i_m___i_n_i_t.map deleted file mode 100644 index fa3e7f2..0000000 --- a/Doc/html/group___t_i_m___i_n_i_t.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___t_i_m___i_n_i_t.md5 b/Doc/html/group___t_i_m___i_n_i_t.md5 deleted file mode 100644 index 2f19743..0000000 --- a/Doc/html/group___t_i_m___i_n_i_t.md5 +++ /dev/null @@ -1 +0,0 @@ -e286c56f2c0f0433bd87311b1d2712be \ No newline at end of file diff --git a/Doc/html/group___t_i_m___i_n_i_t.png b/Doc/html/group___t_i_m___i_n_i_t.png deleted file mode 100644 index 6fb3b6c5ea8028f08224ffbc3338d4e5ffc490e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmV+b1poVqP)rmTVc@Ra}o5nqo@-fviar$6yRuN)4vY=71pvlh>;Z@=X+7Nmr83xkr|N9}rk? z=R6nm_&n0NS0ExHA|fIpA^;}4VPRq63uDYhAHm3|IF27KEiFCw9Y+(rUhj(U7`iA3 zf~_cu9;LS(%N}HmxoC{JKe@1EjH|$(zJq8&*O428!C)EqA-!!Rk%yuvavqSB3&YTN z2nRMhJInO+wC^xFV`F23ot>SL?SY3_M8q;BvPcIgkwrQ{i7e6qN@S4^P$G+TfYn4c z#(cK4%_L%K$>%;zGXMNHFz-2*%IZwF9b{^*Za>50+dLg;Es>2e#Bu!D(vpk1lEV~h zf#bk8z&+pv@CWc6aKdL$uB5-`;3~nwFeHkikA1cIyA_3B2&rS3#96~+&f6!}TmXIr zegUR|wXXyf(7?();t;E!v;gZeE*J_BCZ?M6N13I+v{%{axq0y!AYJm4l5w zn#59K2KXN6ktFgPK9$X#ET7?1d7J%vD2k%o?PYBg?MtsWX}2iOs{0PY$%x$ap;yz3 zJbhl9%lIa-t*xzn3H$?W0>6_aF;q|9$3X03SzlkT{du!&-pZ1I`1#kxVxMymQgvQQ~@Zb~ROIZA8vX z=4=u-Ej8<$mp-=cTz2{&Pg$Q;%$5(z}iv(0000

      Включить трекеры

      -

      Definition at line 25 of file mylibs_config.h.

      +

      Definition at line 25 of file __mylibs_config.h.

      @@ -184,7 +184,7 @@ Macros

      Включить serial трассировку

      -

      Definition at line 26 of file mylibs_config.h.

      +

      Definition at line 26 of file __mylibs_config.h.

      @@ -202,7 +202,7 @@ Macros

      Включить serial трассировку через RTT.

      -

      Definition at line 27 of file mylibs_config.h.

      +

      Definition at line 27 of file __mylibs_config.h.

      @@ -220,7 +220,7 @@ Macros

      Включить serial трассировку через SWO.

      -

      Definition at line 28 of file mylibs_config.h.

      +

      Definition at line 28 of file __mylibs_config.h.

      @@ -243,7 +243,7 @@ Macros
    • LOG_LEVEL >= 2 - выводится время, TAG, имя файла и номер строки
    -

    Definition at line 35 of file mylibs_config.h.

    +

    Definition at line 35 of file __mylibs_config.h.

    @@ -261,7 +261,7 @@ Macros

    Размер буфера RTT в Flash.

    -

    Definition at line 37 of file mylibs_config.h.

    +

    Definition at line 37 of file __mylibs_config.h.

    @@ -279,7 +279,7 @@ Macros

    Сектор FLASH куда положится RTT буфер

    -

    Definition at line 38 of file mylibs_config.h.

    +

    Definition at line 38 of file __mylibs_config.h.

    @@ -297,7 +297,7 @@ Macros

    Начало сектора RTT_FLASH_SECTOR.

    -

    Definition at line 39 of file mylibs_config.h.

    +

    Definition at line 39 of file __mylibs_config.h.

    @@ -315,7 +315,7 @@ Macros

    Конец сектора RTT_FLASH_SECTOR.

    -

    Definition at line 40 of file mylibs_config.h.

    +

    Definition at line 40 of file __mylibs_config.h.

    @@ -333,7 +333,7 @@ Macros

    Включить обработку и serial трассировку Hardfault.

    -

    Definition at line 43 of file mylibs_config.h.

    +

    Definition at line 43 of file __mylibs_config.h.

    @@ -351,7 +351,7 @@ Macros

    базовый тег для HardFault

    -

    Definition at line 44 of file mylibs_config.h.

    +

    Definition at line 44 of file __mylibs_config.h.

    @@ -369,7 +369,7 @@ Macros

    Размер буфера RTT, который сохранится при Hardfault.

    -

    Definition at line 45 of file mylibs_config.h.

    +

    Definition at line 45 of file __mylibs_config.h.

    @@ -387,7 +387,7 @@ Macros

    Сколько слов стека будет проанализировано во время Hardfault.

    -

    Definition at line 46 of file mylibs_config.h.

    +

    Definition at line 46 of file __mylibs_config.h.

    @@ -405,7 +405,7 @@ Macros

    Адрес FLASH куда положится RTT буфер

    -

    Definition at line 47 of file mylibs_config.h.

    +

    Definition at line 47 of file __mylibs_config.h.

    @@ -423,7 +423,7 @@ Macros

    Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)

    -

    Definition at line 48 of file mylibs_config.h.

    +

    Definition at line 48 of file __mylibs_config.h.

    @@ -441,7 +441,7 @@ Macros

    Включить GPIO трассировку

    -

    Definition at line 50 of file mylibs_config.h.

    +

    Definition at line 50 of file __mylibs_config.h.

    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 c047f19..61b88fc 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 @@ -114,36 +114,23 @@ $(function(){initNavTree('group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html','',''); }) - - - -

    -Classes

    struct  HF_StackFrame_t
     Контекст стек-фрейма процессора при HardFault. More...
    - - - - - -

    -Functions

    __STATIC_FORCEINLINE int HF_CheckRecovered (int erase)
     Проверка и вывод последнего HardFault-трейса из Flash.
    __STATIC_FORCEINLINE void HF_HandleFault (void)
     Обработчик HardFault.
    - - - - + + +

    -Variables

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

    +Macros

    #define HF_CheckRecovered(...)
    #define HF_HandleFault(...)

    Detailed Description

    Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash.

    Этот модуль позволяет сохранять контекст процессора и последние символы RTT буфера при возникновении HardFault.

    Механизм работы:

      -
    • При срабатывании HardFault вызывается HF_HandleFault(), который:
        +
      1. При срабатывании HardFault вызывается HF_HandleFault(), который:
        1. Получает указатель на стек, где произошёл HardFault (MSP или PSP).
        2. Выводит значения регистров R0-R3, R12, LR, PC, PSR и системных регистров SCB.
        3. Формирует строку с регистрами и копирует последние символы RTT буфера.
        4. Сохраняет данные во Flash с базовым тегом HF_RTT_TAG_BASE.
      2. -
      3. Для восстановления последнего HardFault используется HF_CheckRecovered(), который:
          +
        1. Для восстановления последнего HardFault используется HF_CheckRecovered(), который:
          1. Читает запись во Flash по базовому тегу.
          2. Выводит сохранённый RTT буфер и контекст регистров.
          3. Опционально стирает Flash после восстановления.
          4. @@ -160,150 +147,56 @@ Variables
    void Hardfault()
    {
    - +
    HF_HandleFault();
    NVIC_SystemReset();
    }
    int main()
    {
    - +
    if(HF_CheckRecovered(0))
    {
    //set hardfault error
    RTT_EraseFlash(); // erase rtt flash after message readed
    }
    }
    -
    __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    Проверка и вывод последнего HardFault-трейса из Flash.
    Definition trace.h:498
    -
    __STATIC_FORCEINLINE void HF_HandleFault(void)
    Обработчик HardFault.
    Definition trace.h:539
    __STATIC_FORCEINLINE int RTT_EraseFlash(void)
    Стирание сектора Flash с RTT-буфером
    Definition trace.h:387
    -

    Function Documentation

    - -

    ◆ HF_CheckRecovered()

    +

    Macro Definition Documentation

    + +

    ◆ HF_CheckRecovered

    - + - + + + +
    __STATIC_FORCEINLINE int HF_CheckRecovered #define HF_CheckRecovered (int erase) ...)
    +
    +Value:
    0
    +
    +

    Definition at line 581 of file trace.h.

    + +
    +
    + +

    ◆ HF_HandleFault

    + +
    +
    + + + + +
    #define HF_HandleFault( ...)
    -

    Проверка и вывод последнего HardFault-трейса из Flash.

    -

    Функция ищет последнюю запись HardFault по базовому тегу HF_RTT_TAG_BASE и выводит её содержимое в консоль. После успешного вывода Flash можно опционально очистить.

    -
    Returns
    int
      -
    • 1 — данные HardFault найдены и выведены
    • -
    • 0 — данные отсутствуют или тег не найден
    • -
    -
    -
    Note
    Вызов рекомендуется при инициализации приложения для анализа предыдущего сбоя.
    - -

    Definition at line 498 of file trace.h.

    - -
    -
    - -

    ◆ HF_HandleFault()

    - -
    -
    - - - - - - - -
    __STATIC_FORCEINLINE void HF_HandleFault (void )
    -
    - -

    Обработчик HardFault.

    -

    Вызывается из прерывания HardFault или в любом месте где понятно что ошибка критическая. Последовательно выполняет:

      -
    1. Определяет активный стек (MSP или PSP) на момент сбоя.
    2. -
    3. Сохраняет значения регистров R0-R3, R12, LR, PC, PSR.
    4. -
    5. Выводит системные регистры CFSR, HFSR, DFSR, AFSR, MMFAR, BFAR.
    6. -
    7. Формирует stack trace с 3 уровнями возврата.
    8. -
    9. Копирует последние символы RTT буфера.
    10. -
    11. Сохраняет все данные во Flash через RTT_SaveToFlash с базовым тегом HF_RTT_TAG_BASE.
    12. -
    -
    Note
    Функция защищена, так как вызывается в контексте сбоя — минимизирует использование вызовов HAL.
    - -

    Definition at line 539 of file trace.h.

    - -
    -
    -

    Variable Documentation

    - -

    ◆ stack_frame

    - -
    -
    - - - - - -
    - - - - -
    HF_StackFrame_t* stack_frame
    -
    -static
    -
    - -

    Definition at line 522 of file trace.h.

    - -
    -
    - -

    ◆ stack_dump

    - -
    -
    - - - - - -
    - - - - -
    uint32_t stack_dump[HF_STACK_DUMP_WORDS]
    -
    -static
    -
    - -

    Definition at line 523 of file trace.h.

    - -
    -
    - -

    ◆ ret_adr

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

    Definition at line 524 of file trace.h.

    +

    Definition at line 582 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.js b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.js deleted file mode 100644 index f49d7a3..0000000 --- a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.js +++ /dev/null @@ -1,15 +0,0 @@ -var group___t_r_a_c_e___h_a_r_d_f_a_u_l_t = -[ - [ "HF_StackFrame_t", "struct_h_f___stack_frame__t.html", [ - [ "r0", "struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413", null ], - [ "r1", "struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea", null ], - [ "r2", "struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b", null ], - [ "r3", "struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3", null ], - [ "r12", "struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b", null ], - [ "lr", "struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577", null ], - [ "pc", "struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732", null ], - [ "psr", "struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9", null ] - ] ], - [ "HF_CheckRecovered", "group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f", null ], - [ "HF_HandleFault", "group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7", null ] -]; \ No newline at end of file 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 07d20f0..6998d7a 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 @@ -119,7 +119,11 @@ Macros #define my_printf(...)  Универсальный макрос для вывода трассировки
    #define log_printf(TAG, fmt, ...) - Макрос логирования с поддержкой уровней LOG_LEVEL.
    + Макрос логирования с поддержкой уровней LOG_LEVEL.
    +#define local_time() + Локальное время
    +#define LOG_LEVEL   1 + Уровень логирования (по умолчанию == 1)

    Detailed Description

    Дефайны для работы с serial трассировкой (SWO, RTT)

    @@ -194,7 +198,7 @@ Macros
    -

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

    +

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

    Parameters
    @@ -203,17 +207,57 @@ Macros

    Варианты реализации:

      -
    • LOG_LEVEL == 0 - логирование отключено (макрос пустой)
    • -
    • LOG_LEVEL == 1 - выводится время local_time и TAG
      [123] [ADC] Measure Done
      +
    • LOG_LEVEL == 0 - логирование отключено (макрос пустой)
    • +
    • LOG_LEVEL == 1 - выводится время local_time и TAG
      [123] [ADC] Measure Done
      [456] [ADC] Measure Err
    • -
    • LOG_LEVEL >= 2 - выводится время, TAG, имя файла и номер строки
      [123] [ADC] (../Core/Src/adc.c:75) Measure Done
      +
    • LOG_LEVEL >= 2 - выводится время, TAG, имя файла и номер строки
      [123] [ADC] (../Core/Src/adc.c:75) Measure Done
      [456] [ADC] (../Core/Src/adc.c:80) Measure Err

    Definition at line 106 of file trace.h.

    + + + +

    ◆ local_time

    + +
    +
    +
    TAGТэг лога
    + + + + + + +
    #define local_time()
    +
    +Value:
    HAL_GetTick()
    +
    +

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

    + +

    Definition at line 97 of file trace.h.

    + +
    + + +

    ◆ LOG_LEVEL

    + +
    +
    + + + + +
    #define LOG_LEVEL   1
    +
    + +

    Уровень логирования (по умолчанию == 1)

    + +

    Definition at line 100 of file trace.h.

    +
    diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.js b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.js index 963bbcd..ca7e0a3 100644 --- a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.js +++ b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.js @@ -1,5 +1,7 @@ var group___t_r_a_c_e___s_e_r_i_a_l = [ [ "my_printf", "group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa", null ], - [ "log_printf", "group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26", null ] + [ "log_printf", "group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26", null ], + [ "local_time", "group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653", null ], + [ "LOG_LEVEL", "group___t_r_a_c_e___s_e_r_i_a_l.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05", null ] ]; \ No newline at end of file diff --git a/Doc/html/group___u_a_r_t___i_n_i_t.html b/Doc/html/group___u_a_r_t___i_n_i_t.html deleted file mode 100644 index d8e1f06..0000000 --- a/Doc/html/group___u_a_r_t___i_n_i_t.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - -MyLibs: Init defines - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Init defines
    -
    -
    - -

    Настройка UART. -More...

    -
    Collaboration diagram for Init defines:
    -
    -
    - - - - - - - - - - - - - - - - - -

    -Macros

    #define HAL_UART_MODULE_ENABLED
     Включение HAL UART.
    #define USE_USART1
     Включить USART1 в UART_MspInit.
    #define USE_USART2
     Включить USART2 в UART_MspInit.
    #define USE_USART3
     Включить USART3 в UART_MspInit.
    #define USE_UART4
     Включить UART4 в UART_MspInit.
    #define USE_UART5
     Включить UART5 в UART_MspInit.
    #define USE_USART6
     Включить USART6 в UART_MspInit.
    -

    Detailed Description

    -

    Настройка UART.

    -

    Macro Definition Documentation

    - -

    ◆ HAL_UART_MODULE_ENABLED

    - -
    -
    - - - - -
    #define HAL_UART_MODULE_ENABLED
    -
    - -

    Включение HAL UART.

    - -

    Definition at line 65 of file general_uart.h.

    - -
    -
    - -

    ◆ USE_USART1

    - -
    -
    - - - - -
    #define USE_USART1
    -
    - -

    Включить USART1 в UART_MspInit.

    - -

    Definition at line 67 of file general_uart.h.

    - -
    -
    - -

    ◆ USE_USART2

    - -
    -
    - - - - -
    #define USE_USART2
    -
    - -

    Включить USART2 в UART_MspInit.

    - -

    Definition at line 68 of file general_uart.h.

    - -
    -
    - -

    ◆ USE_USART3

    - -
    -
    - - - - -
    #define USE_USART3
    -
    - -

    Включить USART3 в UART_MspInit.

    - -

    Definition at line 69 of file general_uart.h.

    - -
    -
    - -

    ◆ USE_UART4

    - -
    -
    - - - - -
    #define USE_UART4
    -
    - -

    Включить UART4 в UART_MspInit.

    - -

    Definition at line 70 of file general_uart.h.

    - -
    -
    - -

    ◆ USE_UART5

    - -
    -
    - - - - -
    #define USE_UART5
    -
    - -

    Включить UART5 в UART_MspInit.

    - -

    Definition at line 71 of file general_uart.h.

    - -
    -
    - -

    ◆ USE_USART6

    - -
    -
    - - - - -
    #define USE_USART6
    -
    - -

    Включить USART6 в UART_MspInit.

    - -

    Definition at line 72 of file general_uart.h.

    - -
    -
    -
    -
    - -
    - - - - diff --git a/Doc/html/group___u_a_r_t___i_n_i_t.js b/Doc/html/group___u_a_r_t___i_n_i_t.js deleted file mode 100644 index 2aa885c..0000000 --- a/Doc/html/group___u_a_r_t___i_n_i_t.js +++ /dev/null @@ -1,10 +0,0 @@ -var group___u_a_r_t___i_n_i_t = -[ - [ "HAL_UART_MODULE_ENABLED", "group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89", null ], - [ "USE_USART1", "group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b", null ], - [ "USE_USART2", "group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d", null ], - [ "USE_USART3", "group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976", null ], - [ "USE_UART4", "group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7", null ], - [ "USE_UART5", "group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340", null ], - [ "USE_USART6", "group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868", null ] -]; \ No newline at end of file diff --git a/Doc/html/group___u_a_r_t___i_n_i_t.map b/Doc/html/group___u_a_r_t___i_n_i_t.map deleted file mode 100644 index 5159791..0000000 --- a/Doc/html/group___u_a_r_t___i_n_i_t.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doc/html/group___u_a_r_t___i_n_i_t.md5 b/Doc/html/group___u_a_r_t___i_n_i_t.md5 deleted file mode 100644 index 51b7988..0000000 --- a/Doc/html/group___u_a_r_t___i_n_i_t.md5 +++ /dev/null @@ -1 +0,0 @@ -a6be7d8c2d212183934faf5551879d8d \ No newline at end of file diff --git a/Doc/html/group___u_a_r_t___i_n_i_t.png b/Doc/html/group___u_a_r_t___i_n_i_t.png deleted file mode 100644 index f44155167cb3ebfaa91bf96d35cf0859e7ea9e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980 zcmV;_11tQAP))LDCORw=y z5Cm~`5!Z122b3cI2M$Wx!A?bSutTX^p&beZwO$-@Cn1;Ql3a4hbN#&FD9Mw2?|Zc0 zKHucII}i~O5fKp)X(kihv9Pdk))+HaM>0p1@B1rDOG`iN&ZCG{t2JMD4&%sioNdqZ zR>S*_MGrE@%o$_ejxH?$?g8)WPNE3?tyH7a=_~_x!~6P*wa4?k$`cZBUAOKOhBiGt z&D7LX-D!-C&CN~r_V)VrJ2m7YA_b^eMJ%CW6|sbhRm2i1RuN06SVb&RO0gQ#_uh)s z{e#Yldkh+niuP&OKFMgtW`3`;QRjn zpHXr9ddG&xlFpBdGw4`L90RTa4}sgjsqX&QwPjSH@LIp?x|OW`N8>j6{ROoYtK@bW zcnmxO&H#t#cX#9*`D@m!ZFJEXL%0aM1h#-Lz*B-kg)u7BaQhi;L8GndpcXYQMszGZ z9v3%hJT7ir%q(L?jr^A$Zb#Ev;Zf%j-A)_J8l!-7z%5__xCHzLCc0x2NhjGZ+=|Av zyPoF_Y=fgQlE%W@MdBvqnRRR!jhtEIZV1_Oy;&sBjg5^9zzV@E`i7uTA$x&-0{l82 zySux&UvE^|*NJ7uD+9>4CnW*L zaklHup(x+?m-qLzdQ>*YaaIQ(B_bjsA|fKv4F3SpzMs74-I>V%0000
  • Подключайте библиотеки в вашем коде через главный include файл:
  • -
    #include "mylibs_include.h"
    -
    Заголочный файл для всех библиотек
    +
    #include "mylibs_include.h"
    1. Обновление библиотеки:
    diff --git a/Doc/html/mainpage_8h_source.html b/Doc/html/mainpage_8h_source.html deleted file mode 100644 index 5ef7a1a..0000000 --- a/Doc/html/mainpage_8h_source.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/mainpage.h Source File - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/mainpage.h
    -
    -
    -
    1/*
    -
    2@mainpage
    -
    3
    -
    4
    -
    5@section overview Обзор
    -
    6MyLibs - это набор библиотек для удобной работы с STM32.
    -
    7
    -
    8\htmlonly
    -
    9<a href="https://git.arktika.cyou/Razvalyaev/STM32_ExtendedLibs/src/branch/release">Актуальная версия</a>
    -
    10\endhtmlonly
    -
    11
    -
    12@subsection features Основные возможности
    -
    13
    -
    14@subsubsection utils_module Общие утилиты (@ref MYLIBS_TOOLS)
    -
    15- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES)
    -
    16- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE)
    -
    17- Эволюционный алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER)
    -
    18- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES)
    -
    19
    -
    20@subsubsection trace_module Трассировка @ref TRACE
    -
    21- Serial трассировка через SWO и RTT (@ref TRACE_SERIAL)
    -
    22- GPIO трассировка для отладки (@ref TRACE_GPIO)
    -
    23- Сохранение логов в Flash память (@ref TRACE_RTT_FLASH)
    -
    24- Обработка HardFault с сохранением контекста (@ref TRACE_HARDFAULT)
    -
    25
    -
    26@subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO
    -
    27- Инициализация портов и тактирования (@ref MYLIBS_GPIO_GENERAL)
    -
    28- Управление светодиодами (включение/выключение, моргание, плавное затухание) (@ref MYLIBS_GPIO_LEDS)
    -
    29- Работа с кнопками (чтение состояния, фильтрация дребезга) (@ref MYLIBS_GPIO_SWITCH)
    -
    30
    -
    31@subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM
    -
    32- Базовая инициализация таймеров (@ref MYLIBS_TIM_GENERAL)
    -
    33- Формирование задержек (блокирующие и неблокирующие) (@ref MYLIBS_TIM_DELAY)
    -
    34- Работа с энкодерами (чтение положения, обработка кнопок) (@ref MYLIBS_TIM_ENCODER)
    -
    35- Настройка ШИМ и Output Compare (@ref MYLIBS_TIM_OC)
    -
    36
    -
    37@subsubsection uart_module Модуль UART @ref MY_LIBS_UART
    -
    38- Базовая инициализация UART и его пинов одной функцией (@ref UART_Base_Init)
    -
    39
    -
    40@subsubsection spi_module Модуль SPI @ref MY_LIBS_SPI
    -
    41- Базовая инициализация SPI и пинов одной функцией (@ref SPI_Base_Init)
    -
    42
    -
    43@subsection structure Структура проекта
    -
    44
    -
    45@code
    -
    46ProjectRoot/
    -
    47├── MyLibs/ # Общие библиотеки, независимые от платформы (или почти)
    -
    48│ ├── inc/
    -
    49│ │ ├── __mylibs_include.h # Главный include файл
    -
    50│ │ ├── __mylibs_config.h # Конфигурация библиотек
    -
    51│ │ ├── mylibs_defs.h # Общие определения и макросы
    -
    52│ │ ├── bit_access.h # Битовый доступ к регистрам
    -
    53│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
    -
    54│ │ ├── trackers.h # Трекеры для отладки
    -
    55│ │ └── trace.h # Трассировка и логирование
    -
    56│ └── src/
    -
    57
    -
    58└──RTT # Библиотека RTT
    -
    59 ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT
    -
    60 ├── SEGGER_RTT.c # Основной модуль RTT
    -
    61 ├── SEGGER_RTT.h # Основной заголовок RTT
    -
    62 ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M
    -
    63 └── SEGGER_RTT_printf.c # Реализация printf() через RTT
    -
    64@endcode
    -
    65
    -
    66#### Модуль GPIO @ref MY_LIBS_GPIO
    -
    67- Инициализация портов и тактирования (@ref MYLIBS_GPIO_GENERAL)
    -
    68- Управление светодиодами (включение/выключение, моргание, плавное затухание) (@ref MYLIBS_GPIO_LEDS)
    -
    69- Работа с кнопками (чтение состояния, фильтрация дребезга) (@ref MYLIBS_GPIO_SWITCH)
    -
    70
    -
    71#### Модуль таймеров @ref MY_LIBS_TIM
    -
    72- Базовая инициализация таймеров (@ref MYLIBS_TIM_GENERAL)
    -
    73- Формирование задержек (блокирующие и неблокирующие) (@ref MYLIBS_TIM_DELAY)
    -
    74- Работа с энкодерами (чтение положения, обработка кнопок) (@ref MYLIBS_TIM_ENCODER)
    -
    75- Настройка ШИМ и Output Compare (@ref MYLIBS_TIM_OC)
    -
    76
    -
    77#### Модуль UART @ref MY_LIBS_UART
    -
    78- Базовая инициализация UART и его пинов одной функцией (@ref UART_Base_Init)
    -
    79
    -
    80@subsubsection spi_module Модуль SPI @ref MY_LIBS_SPI
    -
    81- Базовая инициализация SPI и пинов одной функцией (@ref SPI_Base_Init)
    -
    82
    -
    83
    -
    84
    -
    85
    -
    86
    -
    87@subsection usage_basic Использование
    -
    88
    -
    89Инструкция по подключению:
    -
    90
    -
    911. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h
    -
    92
    -
    932. Подключите главный заголовочный файл:
    -
    94@code
    -
    95#include "mylibs_include.h"
    -
    96@endcode
    -
    97
    -
    983. Используйте нужные модули в своем коде. Примеры использования приведены в соответствующей теме
    -
    99
    -
    100*/
    -
    -
    -
    - - - - diff --git a/Doc/html/menudata.js b/Doc/html/menudata.js index cc6c5bc..4ae1614 100644 --- a/Doc/html/menudata.js +++ b/Doc/html/menudata.js @@ -29,30 +29,8 @@ var menudata={children:[ {text:"Class List",url:"annotated.html"}, {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:"g",url:"functions.html#index_g"}, -{text:"i",url:"functions.html#index_i"}, -{text:"l",url:"functions.html#index_l"}, -{text:"m",url:"functions.html#index_m"}, -{text:"n",url:"functions.html#index_n"}, -{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:"g",url:"functions_vars.html#index_g"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"l",url:"functions_vars.html#index_l"}, -{text:"m",url:"functions_vars.html#index_m"}, -{text:"n",url:"functions_vars.html#index_n"}, -{text:"p",url:"functions_vars.html#index_p"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}]}]}]}, +{text:"All",url:"functions.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}, {text:"Files",url:"files.html",children:[ {text:"File List",url:"files.html"}, {text:"File Members",url:"globals.html",children:[ @@ -61,36 +39,22 @@ 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:"f",url:"globals.html#index_f"}, -{text:"g",url:"globals.html#index_g"}, -{text:"h",url:"globals.html#index_h"}, {text:"i",url:"globals.html#index_i"}, {text:"l",url:"globals.html#index_l"}, {text:"m",url:"globals.html#index_m"}, {text:"n",url:"globals.html#index_n"}, -{text:"p",url:"globals.html#index_p"}, {text:"r",url:"globals.html#index_r"}, -{text:"s",url:"globals.html#index_s"}, {text:"t",url:"globals.html#index_t"}, {text:"u",url:"globals.html#index_u"}]}, {text:"Functions",url:"globals_func.html"}, -{text:"Variables",url:"globals_vars.html"}, {text:"Macros",url:"globals_defs.html",children:[ {text:"a",url:"globals_defs.html#index_a"}, {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:"f",url:"globals_defs.html#index_f"}, -{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"}, {text:"u",url:"globals_defs.html#index_u"}]}]}]}]} diff --git a/Doc/html/mylibs__config_8h.html b/Doc/html/mylibs__config_8h.html deleted file mode 100644 index a6c4675..0000000 --- a/Doc/html/mylibs__config_8h.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_config.h File Reference - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    mylibs_config.h File Reference
    -
    -
    - -

    Конфигурации для библиотек MyLibs. -More...

    -
    #include "stm32f4xx_hal.h"
    -
    Include dependency graph for mylibs_config.h:
    -
    -
    - -
    This graph shows which files directly or indirectly include this file:
    -
    -
    - -
    -

    Go to the source code of this file.

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

    -Macros

    #define TRACKERS_ENABLE
     Включить трекеры
    #define SERIAL_TRACE_ENABLE
     Включить serial трассировку
    #define RTT_TRACE_ENABLE
     Включить serial трассировку через RTT.
    #define SWO_TRACE_ENABLE
     Включить serial трассировку через SWO.
    #define LOG_LEVEL   1
     Уровень log serial трассировки log_printf.
    #define RTT_FLASH_BUFFER_SIZE   1024
     Размер буфера RTT в Flash.
    #define RTT_FLASH_SECTOR   FLASH_SECTOR_11
     Сектор FLASH куда положится RTT буфер
    #define RTT_FLASH_SECTOR_START   0x080E0000
     Начало сектора RTT_FLASH_SECTOR.
    #define RTT_FLASH_SECTOR_END   0x080FFFFF
     Конец сектора RTT_FLASH_SECTOR.
    #define HARDFAULT_SERIAL_TRACE
     Включить обработку и serial трассировку Hardfault.
    #define HF_RTT_TAG_BASE   0xDEAD0000
     базовый тег для HardFault
    #define HF_RTT_TAIL_SIZE   RTT_FLASH_BUFFER_SIZE
     Размер буфера RTT, который сохранится при Hardfault.
    #define HF_STACK_DUMP_WORDS   32
     Сколько слов стека будет проанализировано во время Hardfault.
    #define HF_FLASH_ADDR   ((uint32_t)0x080FF000)
     Адрес FLASH куда положится RTT буфер
    #define HF_RAM_END   0x20030000
     Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
    #define GPIO_TRACE_ENABLE
     Включить GPIO трассировку
    #define GEN_OPTIMIZATION_ENABLE
     Включить оптимизацию параметров
    #define GEN_MAX_PARAMS   20
     Максимальное количество параметров
    #define GEN_MAX_CANDIDATES   100
     Максимальное количество кандидатов для обучения
    #define BENCH_TIME_ENABLE
     Включить бенч времени
    #define BENCH_TIME_MAX_CHANNELS   16
     Максимальное количество каналов измерения
    #define local_time()
     Локальное время
    #define INCLUDE_GEN_OPTIMIZER
     Подключить библиотеку для оптимизации параметров
    #define INCLUDE_BIT_ACCESS_LIB
     Подключить библиотеку с typedef с битовыми полями
    #define INCLUDE_TRACKERS_LIB
     Подключить библиотеку с трекерами
    #define INCLUDE_TRACE_LIB
     Подключить библиотеку с трейсами
    #define INCLUDE_GENERAL_PERIPH_LIBS
     Подключить библиотеку с периферией
    #define FREERTOS_DELAY
     Использовать FreeRTOS задержку, вместо HAL.
    -

    Detailed Description

    -

    Конфигурации для библиотек MyLibs.

    - -

    Definition in file mylibs_config.h.

    -
    -
    - -
    - - - - diff --git a/Doc/html/mylibs__config_8h.js b/Doc/html/mylibs__config_8h.js deleted file mode 100644 index 9065b7a..0000000 --- a/Doc/html/mylibs__config_8h.js +++ /dev/null @@ -1,31 +0,0 @@ -var mylibs__config_8h = -[ - [ "TRACKERS_ENABLE", "group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496", null ], - [ "SERIAL_TRACE_ENABLE", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6", null ], - [ "RTT_TRACE_ENABLE", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8", null ], - [ "SWO_TRACE_ENABLE", "group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336", null ], - [ "LOG_LEVEL", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05", null ], - [ "RTT_FLASH_BUFFER_SIZE", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga501312b24e322de4dd6755ad442f0ba3", null ], - [ "RTT_FLASH_SECTOR", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga3bc1b76864e1d32cbdd174d4caae7724", null ], - [ "RTT_FLASH_SECTOR_START", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga8e56f75d3ab8a89ddde1404ae23c3297", null ], - [ "RTT_FLASH_SECTOR_END", "group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d", null ], - [ "HARDFAULT_SERIAL_TRACE", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6", null ], - [ "HF_RTT_TAG_BASE", "group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313", null ], - [ "HF_RTT_TAIL_SIZE", "group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca", null ], - [ "HF_STACK_DUMP_WORDS", "group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b", null ], - [ "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 ], - [ "GEN_OPTIMIZATION_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c", null ], - [ "GEN_MAX_PARAMS", "group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab", null ], - [ "GEN_MAX_CANDIDATES", "group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869", null ], - [ "BENCH_TIME_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9", null ], - [ "BENCH_TIME_MAX_CHANNELS", "group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52", null ], - [ "local_time", "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653", null ], - [ "INCLUDE_GEN_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692", null ], - [ "INCLUDE_BIT_ACCESS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be", null ], - [ "INCLUDE_TRACKERS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32", null ], - [ "INCLUDE_TRACE_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7", null ], - [ "INCLUDE_GENERAL_PERIPH_LIBS", "group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281", null ], - [ "FREERTOS_DELAY", "group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151", null ] -]; \ No newline at end of file diff --git a/Doc/html/mylibs__config_8h__dep__incl.map b/Doc/html/mylibs__config_8h__dep__incl.map deleted file mode 100644 index 1542c18..0000000 --- a/Doc/html/mylibs__config_8h__dep__incl.map +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/Doc/html/mylibs__config_8h__dep__incl.md5 b/Doc/html/mylibs__config_8h__dep__incl.md5 deleted file mode 100644 index 6c166ca..0000000 --- a/Doc/html/mylibs__config_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9f6a6341f51dca56a013198eaece7a80 \ 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 deleted file mode 100644 index cda23b3114161e1c65ec2fe22e0ca7ddf8ed0597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23867 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 G#Qy?MCJx^K diff --git a/Doc/html/mylibs__config_8h__incl.map b/Doc/html/mylibs__config_8h__incl.map deleted file mode 100644 index 6ec7c40..0000000 --- a/Doc/html/mylibs__config_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/mylibs__config_8h__incl.md5 b/Doc/html/mylibs__config_8h__incl.md5 deleted file mode 100644 index 1f4d753..0000000 --- a/Doc/html/mylibs__config_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -182ed3e6f3a3467bc43cf6c0e3bd6349 \ No newline at end of file diff --git a/Doc/html/mylibs__config_8h__incl.png b/Doc/html/mylibs__config_8h__incl.png deleted file mode 100644 index ab0065007d370102dfd3ac359bb06022fb55d041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2284 zcmb_eXHXN^8VyB=7z7n0h`_Q^L;qF(jJN3v$2E%cK;lCuZvRw0ARiq^wQ0ctl7~{KSlU) z@$d7r(8&B#4@r@5^M;$ww-BSUhm;i%R0TxJ^EBYjzMXv!JN4l4MP;>GnEs;+l=~je z#JQ9kMB)KTt=8khZc}Z%dbaJitn-ljNXXLmMM`i^^Y6wSW3M?=rZDs`;0w;Vy1Gu3 zNOPeH_lV|C?RKy$GoLRkveZcj_N!b2s%XcYCY_9D0h-#cpOcC0THrBXBP?Xv*zDWW z%fF5r5mOjC(wZQVr>*}bc7=oB*6rILdz_HSa_72w+s`#dEYgo>XikyC=ni(X3z?4Q z=vAQPS)q_wa!)AHF*rUeTBxLHYWV#%_tYaugR*Nw{4)sITP~4&6tgB_+T;(r;L-wv zRIG+}7({?+W32FJdiAtKS!Tnrc;dsD`~$flINR9-H+cF$Kmw_bj5C~g_500%gY&H& zI+O<%BsmKrFNo3%#uclxAr=FSH2>9a=>xEe&gDw)YE*d6bf~IRomDoK>C4J7H2uyj zHP-KG?bC-T0W%vZ=ufym$hf$79QnK9Ej@RD22$LYrV0b=v8btn=zPp3eI^K#F@}vW zSlk3Iy!7$)9TKhXMzo``WsgNg36TeXJhFBCi7nb2qzqpoILj2db&G#0N=n8R^ZP1$ z84QNKInn0$h{c0iDpgGL>vURLn#hUKwXTbWIv}V-+kYrzcOQGQf?kA{UFWBBf=r?? zn{fSieaog*4{}|QQZVRj(gg1=-6$uoeL&nI{cSl-uDh^2Nh7ZYsyt$E(5?5{M>(VE zN9S2`*-Z2Ly2s?%WOq;0*qF##J_q91Y@%_mplD+b6Pw(`8BgozPi0exukc(txkcA&}OstQ|a@59GsEd z##DhKdAP2E9-+|+&{IfA70&%JG*YYE)Cwj&@wC%ug6W#J;C?f?gmP)NSz{xTjUS;e zgpQU~^q?tZ-v0Pfr96R&o*~+yU%t*2-yFYpM_ho3h~z;gL>lfrYHMAq40|8a^ReFu zL|EeU&f6TxwEFA4&PhI+6F^4;sl()q!Idzt;f74iAali8DdOsS4-O_+!8MM}fr^yh zJA?6bI*FOPz4CN-`-ECgYcjv03{Dsr9a#FseQyhuCxqP=kfWzIF~fr#s^cwZD#~Se z=@5TSfMH=@F&a8Qm9e6I18vo_r%MnF1Sc3VtW|!Xe)dW-GL?qAn&A^b8% zlF7*a(AFY-T!v353>kA9eCv7mA75I0DlsuJ87F-?_$27X2X8+Ur8~6HCC>!Bn5CJK z@guo0yi)V4ol|pLwTkqdd~o6wCx%a4cvMm4(TYwlW{dxcaatOJF;5Z5>zYCS*D(HR zAOD|ft2sb?xu-YKcix|%s-|A$BOD?u>~GGk5?$F<1gKORE~t(fFBR0w6|*N?!NOsi z8CytTmW=S~s)jWX*uI^9IMt5JypB9__OfPR-jJ;XO0`mAzouHz$}S*veGu>tU`BEg z^yz@2W)pssU8kGV7QU!9f$XGb-N3@eyAAb{PB?BO+a?@OYQu0-yL)k3alxq04N?X;orpUpyLW8ISNnTX zE&Hy{2uF$r#k}=W&XR%Op{HnoETAW%NYc;607AA;qDU0KW4b|1qLnq}yB4+Ztvz68 zYfbiejC56?>EgrS*yqv7hu35Pq5(;lh$L5{ZNkENz(uaz7ds-?sa{(?T2ytjtFp0i zD_@#BJ%o#{G{(E*@r~6A^d#xRXHGUYHuKE#7hUc%!q_V>J}5vSkR{8cW2noAjOYb9R+oT5xhUa5kT zk*PkLKH1IRtG?RPfT3|A-a6fd>fH%d*LhrvI!w6YIy)ZrGpn&^k?GOETb>o7Sy#20 zAsieGzD-U}p06*y&_ABjy_YGfoc=MrR3e)XgZOycqPJD_(a!h4M)7iuVJP)Oe+%rC z8IhW2f&LF3C<+7uij7KKv~(E7ug}T=1Q?SwH&LPk1Cw@}^bh?B+{azxPbMjVRkF}t Q`vS1Kd<|M|e)r+O09!U^cmMzZ diff --git a/Doc/html/mylibs__defs_8h.html b/Doc/html/mylibs__defs_8h.html index 702dd58..71f068d 100644 --- a/Doc/html/mylibs__defs_8h.html +++ b/Doc/html/mylibs__defs_8h.html @@ -103,7 +103,7 @@ $(function(){initNavTree('mylibs__defs_8h.html','',''); });

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

    -
    #include "mylibs_config.h"
    +
    #include "mylibs_config.h"
    Include dependency graph for mylibs_defs.h:
    @@ -111,10 +111,8 @@ $(function(){initNavTree('mylibs__defs_8h.html','',''); });
    - + - -
    This graph shows which files directly or indirectly include this file:
    @@ -123,23 +121,19 @@ $(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 bad0bfc..205fae8 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.map +++ b/Doc/html/mylibs__defs_8h__dep__incl.map @@ -1,19 +1,15 @@ - + - + - - - - - - - - - - - - - + + + + + + + + + diff --git a/Doc/html/mylibs__defs_8h__dep__incl.md5 b/Doc/html/mylibs__defs_8h__dep__incl.md5 index 153e76d..d790f22 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/html/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -92e1c89b3dbabc5f5dcd703628a3cd09 \ No newline at end of file +b2335ad2a0c40004f8b75d940bffafeb \ 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 1998e01e5e7feeda9ac910dbdce449060b34b17c..4a2989edd524a6b2c0708d16b211369789bf4b34 100644 GIT binary patch literal 13784 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�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 diff --git a/Doc/html/mylibs__defs_8h__incl.map b/Doc/html/mylibs__defs_8h__incl.map index b054d95..b0e9d3f 100644 --- a/Doc/html/mylibs__defs_8h__incl.map +++ b/Doc/html/mylibs__defs_8h__incl.map @@ -1,7 +1,5 @@ - + - - diff --git a/Doc/html/mylibs__defs_8h__incl.md5 b/Doc/html/mylibs__defs_8h__incl.md5 index 35c2a13..54d8055 100644 --- a/Doc/html/mylibs__defs_8h__incl.md5 +++ b/Doc/html/mylibs__defs_8h__incl.md5 @@ -1 +1 @@ -22a4095654c32e9721a5fd17008a93fa \ No newline at end of file +9a0af7616ee9336a5ad02c588fb07b03 \ No newline at end of file diff --git a/Doc/html/mylibs__defs_8h__incl.png b/Doc/html/mylibs__defs_8h__incl.png index a691649295d0eb5bda54ef089652bf7ebdd2465f..b9f3ea9b0fa9dd2388eacc27af7d791291dae1ae 100644 GIT binary patch literal 2216 zcmb`Ic~lZ=8pi3=sHv%$9VNFc(!8bRS}vEmp$Qe*NNKsGhFdBsDVhaWO%t`;a2IzQ z%>})tqPRfUOfnbD1xzH$Qry55P27ggotZQ9|D5-H@B2OfeCIju`JL}cxM^#1NcxyG z001}ygId{(=Ueefm68zmCNJ))cu3s8Zes=5`&q>u73lzglq<~Yw_A_$`J9ewbvlr~ z%&n=_2c<@7J$n;&5qIT)Lte{~?lCkU3a<)2S}F7W+>)Dnu+H6U=gHfp@3oVTIBT6N z82(-^1=DRQRtWSs%YJ(LJu_FSFr;I=EvTVw^|cR8Q-S%Z;T&T?5aR6}-c1m@02Jp| z>W{J6PdZgrLlfPj?$k7Cy0(S!xl>*iqnR%Z>{O9~T{1Gz$@Z7r3}v8#6){Y z(v$d}JeVtg$xP`gk*eJI*r@B`qHc2b3Bd$t-YAsgG8GmS!6~1jj+;NnG4&!@OwCUL z7N7wtZ@l7HF7vD1(eOa+>v0s|ke1p*4|;$_CZ$_lbrCr7`A>bW6wZ8-B22;-rs}y8 zJeN?BtlKW7cSEuYay}~kcxGS2CY;XG@`M< z-^^pH>#&i)MV+`F@wM|=NOz9v4Z)w}aV|HzX?=UN+EFui_G;0-V5r0!Eg%5z2~Z>K z3w}zAmfH+#M!DTC>7Gg{up4aLt5rd$JWdkb0?}N9+8i`6W}E8M^vSJzS+u${v=tGURfZ~ZWt${KTpH=|8}UOB>lsVm zk|+Z@zHFbntefkt+Ib8fndbOyzAdGsyhRi1nJEhyA2xf@t7%wN%&12KEi}$_g%ME| zE_K%(dImlF>Tq)3Rv_wZpJ0!8t?|k@9KLGDCrx(fkDiNWQb4;RC;yYT49gWubB&)@ zz)rPaC4FA9YR-KsE#AqfvBQ$sImDi%6z)wI*wikg4#4AFxNpJ^9^G*1Me3F^WpO+y z<0Q(WBGMAeUEaeHpN(SX$$V#x`T-jM2Zo1GCN3`HO&hR%-o>94O1j_LHE~sFz=~8OAg7LMOJMdE?H*_DeYKjL~OqN`Kd#>_q$L9 zq*`EJ?6DaW<&ptfkdZcP#m&e2m{0gGSNG*3U5y&^w!W6qocK4OpcMjuM3d$5^7 zCze(=8+b*${9W?!DknPSE>o70jAxKUMWSu|K+w|N3toC@LTsE%6~pDG#;`kh|DaZ{ zx4kfTYv|oCDP;1tVy$&n&mXZ*Hx5@@X5AC~wZWgTiOGAgaG6WRS$L~men=;joKCcu z7m7G-;fv+*KInyJTO7h}XH8PHC5+5@g5QIyGwhYD(G{%=W2(Mgn6Hqnj;1xn718b} zub*a5Z}43E56Axl_5Vxk$%I>7+9UqDxrFSvPqGcj0?rx$cdQ&PkV4lM0V-v99cr0d zy9lyso#&g4_l#fg(Hy%3ENkeV=`DNaaP{i?Oxb91lc={YGN2Hq`2EVq8;LdNTlLTQ zlWaA1(!xFzog$s;NHb^tLkoDKjmCWP3rkwaw6GANGNOWG#n1IC_wfke)VU*_*rx69 zINozuyaliC;UF+@1Vna_W6d=&}5oy0`{?8WX4+0 zNtq<@jsUh}2Dds6RHQ@Xg_fxt&a%gM_l@PjhyzW?>v{hJHl zdMA?kUSZp)A4X|$u!R>&MfOeq3h|Sal&pj-k)22y2~U!F3P()#e+lq1%pm@4bQ<3D zVNo_@APC{%yy zH8YB7k%2r20)XVfph5mb7`Szu1uma+?_PKn7*a7NY4Y|m99~k=|B}qVV%+gzt40u6 z+4RXl8{)`|fbv+psoU|kA?*E8i+ZHI%8ZCw9 zfy+G#^V;v1y?YJHGkmr8{VQ1#xkTO&C)+vB73vT=qgNH8H3j8RjeyW0E=`5e;T X{wc?GHS}up(oYSuwzaCg;{NoX1s`Hh literal 3155 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 BC9ePg diff --git a/Doc/html/mylibs__defs_8h_source.html b/Doc/html/mylibs__defs_8h_source.html index d99efaa..9047c27 100644 --- a/Doc/html/mylibs__defs_8h_source.html +++ b/Doc/html/mylibs__defs_8h_source.html @@ -128,7 +128,7 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
    26#ifndef __MYLIBS_TOOLS_H_
    27#define __MYLIBS_TOOLS_H_
    28
    -
    29#include "mylibs_config.h"
    +
    29#include "mylibs_config.h"
    30
    31/***************************************************************************
    32******************************ERROR_HANDLER********************************/
    @@ -194,13 +194,15 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
    92 * @note Использует задержку через @ref local_time или osDelay в зависимости от @ref FREERTOS_DELAY.
    93 */
    94#ifdef FREERTOS_DELAY
    -
    95 #define msDelay(_ms_) osDelay(_ms_)
    +
    95 #define msDelay(_ms_) osDelay(_ms_)
    96#else
    -
    97 #define msDelay(_ms_) \
    +
    +
    97 #define msDelay(_ms_) \
    98 do { \
    99 uint32_t _start_ = local_time(); \
    100 while (local_time() - _start_ < (_ms_)) {} \
    101 } while(0)
    +
    102#endif
    103
    104
    @@ -321,7 +323,6 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
    219
    220/** @endcond */
    221#endif //__MYLIBS_TOOLS_H_
    -
    Конфигурации для библиотек MyLibs.
    diff --git a/Doc/html/mylibs__include_8h.html b/Doc/html/mylibs__include_8h.html deleted file mode 100644 index 9142d71..0000000 --- a/Doc/html/mylibs__include_8h.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_include.h File Reference - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    mylibs_include.h File Reference
    -
    -
    - -

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

    -
    #include "mylibs_defs.h"
    -#include "math.h"
    -#include "bit_access.h"
    -#include "trackers.h"
    -#include "trace.h"
    -#include "gen_optimizer.h"
    -#include "__general_flash.h"
    -#include "general_gpio.h"
    -
    Include dependency graph for mylibs_include.h:
    -
    -
    - -
    -

    Go to the source code of this file.

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

    -Macros

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

    Detailed Description

    -

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

    -

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

    - -

    Definition in file mylibs_include.h.

    -

    Macro Definition Documentation

    - -

    ◆ BenchTime_Init

    - -
    -
    - - - - - - - -
    #define BenchTime_Init( void)
    -
    - -

    Definition at line 99 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_Start

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

    Definition at line 100 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_End

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

    Definition at line 101 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_GetMin

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

    Definition at line 102 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_GetMax

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

    Definition at line 103 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_GetAverage

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

    Definition at line 104 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_GetCount

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

    Definition at line 105 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_GetLast

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

    Definition at line 106 of file mylibs_include.h.

    - -
    -
    - -

    ◆ BenchTime_ResetStats

    - -
    -
    - - - - - - - -
    #define BenchTime_ResetStats( channel)
    -
    - -

    Definition at line 107 of file mylibs_include.h.

    - -
    -
    -
    -
    - -
    - - - - diff --git a/Doc/html/mylibs__include_8h__incl.map b/Doc/html/mylibs__include_8h__incl.map deleted file mode 100644 index dbb1c14..0000000 --- a/Doc/html/mylibs__include_8h__incl.map +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Doc/html/mylibs__include_8h__incl.md5 b/Doc/html/mylibs__include_8h__incl.md5 deleted file mode 100644 index 332c87b..0000000 --- a/Doc/html/mylibs__include_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ff959ac540a497b795d9fc794e4a70fa \ No newline at end of file diff --git a/Doc/html/mylibs__include_8h__incl.png b/Doc/html/mylibs__include_8h__incl.png deleted file mode 100644 index cc4941821629a98644319bf661d24e9f904a122b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33678 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%0DMxq>sFs?$g1=;UmByg&~ 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 - - - - - - -MyLibs: Member List - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BenchTime_t Member List
    -
    -
    - -

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

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

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

    - -

    #include <bench_time.h>

    -
    Collaboration diagram for BenchTime_t:
    -
    -
    - - - - - -

    -Public Attributes

    BenchTimeChannel_t channels [BENCH_TIME_MAX_CHANNELS]
     Каналы измерения
    -

    Detailed Description

    -

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

    - -

    Definition at line 101 of file bench_time.h.

    -

    Member Data Documentation

    - -

    ◆ channels

    - -
    -
    - - - - -
    BenchTimeChannel_t BenchTime_t::channels[BENCH_TIME_MAX_CHANNELS]
    -
    - -

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

    - -

    Definition at line 102 of file bench_time.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • -
    -
    -
    - -
    - - - - diff --git a/Doc/html/struct_bench_time__t.js b/Doc/html/struct_bench_time__t.js deleted file mode 100644 index 4b8eff3..0000000 --- a/Doc/html/struct_bench_time__t.js +++ /dev/null @@ -1,4 +0,0 @@ -var struct_bench_time__t = -[ - [ "channels", "struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34", null ] -]; \ No newline at end of file diff --git a/Doc/html/struct_bench_time__t__coll__graph.map b/Doc/html/struct_bench_time__t__coll__graph.map deleted file mode 100644 index 5b2f5df..0000000 --- a/Doc/html/struct_bench_time__t__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Doc/html/struct_bench_time__t__coll__graph.md5 b/Doc/html/struct_bench_time__t__coll__graph.md5 deleted file mode 100644 index cb61ea0..0000000 --- a/Doc/html/struct_bench_time__t__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -38d4100ea738d751cba8e97cbba534f5 \ No newline at end of file diff --git a/Doc/html/struct_bench_time__t__coll__graph.png b/Doc/html/struct_bench_time__t__coll__graph.png deleted file mode 100644 index 3d24b09fa705ee1a9d7dcdc05d6c02b702597aa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2906 zcmZ`*2{aU1A6Ho>vbTzqWXc*-FGjX$Y%$0l#*&bc5ym9TcxA?tEmVXdjb}?k*)rBl z8s69$%S^VCZ5q6+J!X94d#`hP=Y8M3=iYnHz4v#|fBoHmyp@Hqu%MJ64-b#9sR`7Y zyW+Wn3E=0>!SKhs2mCk8jG;U`yZw1%Q92Kgkf5M%=Bt9o4^vBh{3Zb9xxXzWp|pquakNZRLS{g$RVcTMaO1UJs-D zEGl>QqKK@nxpA_zy06IT$&YoxD9-lx7*pr+uQzyN4CeG@AOZ_wV5`{P`(Uid;4!#H zM}ihdsw&QQJitZPbWKdB^jwMmv5RNc>gIl%T$*^qLHxu?wb*k~I1%_^YD=_OzRC2>wTzd>#?3GvKy{E(J+>3#Xk}MDfRmgl&4WiPK7Y>qZ>tO zRiUm^O;;5L5Kj8vZmaprze;ez5sBL8$_s`)G?Ln2&#rIPgoLhFJ^hqDGgE*|-^cXQ{@U1WNUs-pX ze(&y>;eiET@-t7y{rTok2PATgP)x zFNQ-Y{JY$m$7viE6WAf>-D}B7~huStYEGyls8E1u*-A>ZMFqRjb3a5qoXrFSlcsG_{Jsm zT)?4bug)8L6j0qGLKxRRtwy#%$6JJ&2zKdIF_Lno#iK{Y=8-oRgs8tdZVT)Xb%4|R zJsx)L9bk&#N88lZmN6$Pu(~oa8|OPVu$#)M5fz*=;8y|H<SO`eJNKra(+~)h8ZYa=|MnvQzo$n?SN??_ku9{FbGyyz;G%~5@`w9o+742j zmCu;ZttHd}*-;|p;#d>X_>-diE1a6Zji9I z%!(df*r`50LAl(=F8 zvIl5}b!;b}B4o&qqs#0~|SzmT3$)l$RT;0GZ+||IGbvp7A`9ADF8#Tk{7d zF{B%J0!MfjizF&{KQq(c&iO4Obbs)6<8wJ0rdJ3=Sx>bU?IUER(VyBmR5j0iE8T$E|AIKj zk_=v`3MNM?(5$>B->fcWX}Ae+t=h(RhsuXck3F=#Lg^H3e$f+~;p2Y;%XgTx!VHR#?2CF;aW>Vw`r z;`1kzJj3{Ya`$rHD}%AZ-uU*s_&G13YRxYl8@Z!9c|Z;)nFU@zs#qQ$WQsmZp6gUi ze!Z-BqFzroN)rK~WQXixAyX{nbq9eSVO{e{ z`!dkPL}BEkUQP8^i5uB@Ek35xTxKW=_hbhI>oelxOhOs#m>m`B87+Z)YCO(T&}Mlu zH7*p@k2G9-x0*#R&#h}HQXh&+x#WV7h^n5CS}=}^T#O8VQpa~1E|T<`qn^xpq0zT) zuu}i@YLEmZV_)UA{)>D`Z*g6(68T*r<~rXcNb2_0zn9oZP`rE#;**&quwLgl;iDINg$IZvUk8y5_unz~bj};Cdz~~GxWW^eFZa2mpiI}3b zsj+Pc3K?8d(vPzMbes%1b65}1u%z^4`T|xpT7Q#QvSxVi?9rzJAVW^K&C7r2SFxYiakPbvYMWG(;J>2>SN}Ir?f$p?%N*1Xh?NHSF`kWq zL(yE_{~x5pttdM?Tl+(2Gi|ZfJn0>pzV*&$ekM06b)q4lJ_iDw{({5dCVba@SupVp z7Q^QyGp($ba;p_Bj&o@Yqg`ztg4Et!a&?B2rJVE0>i?ookwGnS61pDG{9d|6D?9a) zG?@lvtHDo2p&wA?V_W%3aW-fQ2Wd7nsYmvxtrq_+lS%1 O8>WU9P$I - - - - - - -MyLibs: Member List - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BenchTimeChannel_t Member List
    -
    -
    - -

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

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

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

    - -

    #include <bench_time.h>

    -
    Collaboration diagram for BenchTimeChannel_t:
    -
    -
    - - - - - - - - - - - -

    -Public Attributes

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

    Detailed Description

    -

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

    - -

    Definition at line 91 of file bench_time.h.

    -

    Member Data Documentation

    - -

    ◆ start_tick

    - -
    -
    - - - - -
    uint32_t BenchTimeChannel_t::start_tick
    -
    - -

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

    - -

    Definition at line 92 of file bench_time.h.

    - -
    -
    - -

    ◆ tick_period

    - -
    -
    - - - - -
    uint32_t BenchTimeChannel_t::tick_period
    -
    - -

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

    - -

    Definition at line 93 of file bench_time.h.

    - -
    -
    - -

    ◆ is_running

    - -
    -
    - - - - -
    uint32_t BenchTimeChannel_t::is_running
    -
    - -

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

    - -

    Definition at line 94 of file bench_time.h.

    - -
    -
    - -

    ◆ stats

    - -
    -
    - - - - -
    BenchTimeStats_t BenchTimeChannel_t::stats
    -
    - -

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

    - -

    Definition at line 95 of file bench_time.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • -
    -
    -
    - -
    - - - - diff --git a/Doc/html/struct_bench_time_channel__t.js b/Doc/html/struct_bench_time_channel__t.js deleted file mode 100644 index ec6b79e..0000000 --- a/Doc/html/struct_bench_time_channel__t.js +++ /dev/null @@ -1,7 +0,0 @@ -var struct_bench_time_channel__t = -[ - [ "start_tick", "struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928", null ], - [ "tick_period", "struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd", null ], - [ "is_running", "struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9", null ], - [ "stats", "struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c", null ] -]; \ No newline at end of file diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.map b/Doc/html/struct_bench_time_channel__t__coll__graph.map deleted file mode 100644 index 64ddd1a..0000000 --- a/Doc/html/struct_bench_time_channel__t__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.md5 b/Doc/html/struct_bench_time_channel__t__coll__graph.md5 deleted file mode 100644 index abd7684..0000000 --- a/Doc/html/struct_bench_time_channel__t__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5f298be6c8f367b71f1703e38d9f38a3 \ No newline at end of file diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.png b/Doc/html/struct_bench_time_channel__t__coll__graph.png deleted file mode 100644 index ae2c4a600b05a7edcd159b9048222879feaba999..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1827 zcmZ9M2{aq%7RPl^o~>2V#S+BUmYLEjt)*HL#FDhA*h0rz6h$o6swp}er0ug)(X@iG zFHJ46wFtFOWTFNMVo4)SQ6aU2Vb08)H}Ct-cYo*JbM86!-tYV``Z~-~QcO-vKtMne zY6Z66CwBim5k0(b`6jI0eH`|(u>=e39b8;nX~uqF916bX7*oKZjRYz9o)lSO=Gl!t z_sVybbvx~t;&B$Ee<+}>5@$tHND8dWPDn;QGuunp6;6nq&<4d&3h<@4aTAv#r>r1w zplp()8HuoAIq1h+{}qpgEq>e{HX0dh+2&uhit?lL;x=fS%iF^~^)^ELl?YUOXPBj? zriMzB4-M4)bU!585DTE0d24)+!C>O9oRsj;IV0XxM83Ua0Y0~seZksrWKGV0q_Ft$ zW8n;jj!-qS#X?IS$_Qj3zA1&;S!Oy&{ z&jzWM;PovZTa8MSqVKqztAuGobu+W>y6|xn&4w-bR^&Ub7$YzXHMsLhi)hkn8ruBn zA)s2`h&)$MvA=nb142L#_khuZK}G*cyz8j8wL%f~j@dTDB1}+4^&ROm8eHwcbg4&;|ApgsKWuFg!(58+Y~J?tMr>PA zQ2|P3(m}?}o7Y(Ww8(mJ$DgX3mRa0PT`2dy3m8KkHZ0xAz<+aRX2#bqIlCv}FW{V! ztmh;>Xw_*1+O=AIFH&C`;b`bOpkl zp||fzA)CV%uL0_s533?!ZhKeW;$-0@&YG;LTEk0shG`}AbIVIi-7j$|BPo7P*T{3~R z+TwSAr!AcU3VE!A4ZK|Lr3xQWVM%BYRbz2IGbiNqJctk07CbAS_Fl~Oxb|-WD5MYn z#1xK3f7-?_AL#AR1DX9nM$i-6+8qBz_mauw+fz;4wa;zkb77J{NXd`;M5Z~%HTEqz z)6dgF40vt@Yy~!`wYbA~HYq^=g#vwy6Gi=^FW=iK>XMH%szdc7Y~BQEc1{+lI(`eA zXb1HYMJYk(Q42h%D2uJCSb|8+AJSmkCf>8urp2#q3PwfS?A@I#Ga90VxTp zstm8LnSHG@dTOP0Cgf;@DRNBjB=A*duf;&IqCDc<--TZ~^6|dJ%tNBr%8CC7YVauU zy{!z7CgTOe{vU!d@rHjV)k^Rvr{3{Vq!~u-p(!{*;$Iu$uW?NkvQbq|Y}8R9M7d}W zz~M!5$x}YPU~g{o%M!n@V;P|c$KEUCL0f3;()0$Vophq|rT#&tpP%16C<1nsog9yg z1BWgbCEgTqaFdspmlb+{Ubzp_WjbGhmL6De8~9;o==<1!F{I_K@~0>j9VrXl>ve%mHvPD{_?+BV8Z-J)F!Z*7>{*m4iEuioSA-cQplYy7Xp=!L|BrJ;Is# zLwFO|mP=^?bZ0iUbCuogJyD2Z2D$oY)5sHJT-O&Dv8=EL!`GFuYYjP#Gy=c6QW0Vr z8{s^r?`!(({8Ej>bgBkcs{`$VdYL@@M9Ba!alN#?=JRJN;R2g0Z$seayH9=B@xkzo z#7*9-aWt4KOm^wY%ha-QGKS1a<}^k&lbn<$4D-e#TDBMr#`fUO`qY&BZ2ymh&33qT z*%}tce6bScu5dW)wdS$wp7(Y=g2mINo>)ayrLh42v)|nrXz-|M|97%)HCdVVrpL&e jVqT9_2pRB$&)4zU6|t)wO7qkF3OMkg5E!`H>{h}bITeX> diff --git a/Doc/html/struct_bench_time_stats__t-members.html b/Doc/html/struct_bench_time_stats__t-members.html deleted file mode 100644 index 2b179d6..0000000 --- a/Doc/html/struct_bench_time_stats__t-members.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -MyLibs: Member List - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BenchTimeStats_t Member List
    -
    - -
    -
    - - - - diff --git a/Doc/html/struct_bench_time_stats__t.html b/Doc/html/struct_bench_time_stats__t.html deleted file mode 100644 index a8e288b..0000000 --- a/Doc/html/struct_bench_time_stats__t.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - -MyLibs: BenchTimeStats_t Struct Reference - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BenchTimeStats_t Struct Reference
    -
    -
    - -

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

    - -

    #include <bench_time.h>

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

    -Public Attributes

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

    Detailed Description

    -

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

    - -

    Definition at line 80 of file bench_time.h.

    -

    Member Data Documentation

    - -

    ◆ min_ticks

    - -
    -
    - - - - -
    uint32_t BenchTimeStats_t::min_ticks
    -
    - -

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

    - -

    Definition at line 81 of file bench_time.h.

    - -
    -
    - -

    ◆ max_ticks

    - -
    -
    - - - - -
    uint32_t BenchTimeStats_t::max_ticks
    -
    - -

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

    - -

    Definition at line 82 of file bench_time.h.

    - -
    -
    - -

    ◆ total_ticks

    - -
    -
    - - - - -
    uint32_t BenchTimeStats_t::total_ticks
    -
    - -

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

    - -

    Definition at line 83 of file bench_time.h.

    - -
    -
    - -

    ◆ count

    - -
    -
    - - - - -
    uint32_t BenchTimeStats_t::count
    -
    - -

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

    - -

    Definition at line 84 of file bench_time.h.

    - -
    -
    - -

    ◆ last_ticks

    - -
    -
    - - - - -
    uint32_t BenchTimeStats_t::last_ticks
    -
    - -

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

    - -

    Definition at line 85 of file bench_time.h.

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

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

    - - - - - - - -
    LED_ActiveLvlGPIO_LEDTypeDef
    LED_PeriodGPIO_LEDTypeDef
    LED_PinGPIO_LEDTypeDef
    LED_PortGPIO_LEDTypeDef
    stateGPIO_LEDTypeDef
    tickprev (defined in GPIO_LEDTypeDef)GPIO_LEDTypeDef
    -
    -
    - - - - diff --git a/Doc/html/struct_g_p_i_o___l_e_d_type_def.html b/Doc/html/struct_g_p_i_o___l_e_d_type_def.html deleted file mode 100644 index 6ae8d50..0000000 --- a/Doc/html/struct_g_p_i_o___l_e_d_type_def.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - -MyLibs: GPIO_LEDTypeDef Struct Reference - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    GPIO_LEDTypeDef Struct Reference
    -
    -
    - -

    Структура светодиода - More...

    - -

    #include <general_gpio.h>

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

    -Public Attributes

    GPIO_LEDStateTypeDef state
     Текущий режим работы светодиода
    GPIO_TypeDef * LED_Port
     GPIO порт ножки светодиода
    uint32_t LED_Pin
     GPIO пин ножки светодиода
    uint8_t LED_ActiveLvl
     Активный уровень ножки (при котором светодиод горит)
    uint32_t LED_Period
     Период моргания светодиода
    uint32_t tickprev
    -

    Detailed Description

    -

    Структура светодиода

    - -

    Definition at line 73 of file general_gpio.h.

    -

    Member Data Documentation

    - -

    ◆ state

    - -
    -
    - - - - -
    GPIO_LEDStateTypeDef GPIO_LEDTypeDef::state
    -
    - -

    Текущий режим работы светодиода

    - -

    Definition at line 75 of file general_gpio.h.

    - -
    -
    - -

    ◆ LED_Port

    - -
    -
    - - - - -
    GPIO_TypeDef* GPIO_LEDTypeDef::LED_Port
    -
    - -

    GPIO порт ножки светодиода

    - -

    Definition at line 77 of file general_gpio.h.

    - -
    -
    - -

    ◆ LED_Pin

    - -
    -
    - - - - -
    uint32_t GPIO_LEDTypeDef::LED_Pin
    -
    - -

    GPIO пин ножки светодиода

    - -

    Definition at line 78 of file general_gpio.h.

    - -
    -
    - -

    ◆ LED_ActiveLvl

    - -
    -
    - - - - -
    uint8_t GPIO_LEDTypeDef::LED_ActiveLvl
    -
    - -

    Активный уровень ножки (при котором светодиод горит)

    - -

    Definition at line 80 of file general_gpio.h.

    - -
    -
    - -

    ◆ LED_Period

    - -
    -
    - - - - -
    uint32_t GPIO_LEDTypeDef::LED_Period
    -
    - -

    Период моргания светодиода

    - -

    Definition at line 81 of file general_gpio.h.

    - -
    -
    - -

    ◆ tickprev

    - -
    -
    - - - - -
    uint32_t GPIO_LEDTypeDef::tickprev
    -
    - -

    Definition at line 83 of file general_gpio.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_gpio.h
    • -
    -
    -
    - -
    - - - - diff --git a/Doc/html/struct_g_p_i_o___l_e_d_type_def.js b/Doc/html/struct_g_p_i_o___l_e_d_type_def.js deleted file mode 100644 index 2770be0..0000000 --- a/Doc/html/struct_g_p_i_o___l_e_d_type_def.js +++ /dev/null @@ -1,8 +0,0 @@ -var struct_g_p_i_o___l_e_d_type_def = -[ - [ "state", "struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435", null ], - [ "LED_Port", "struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf", null ], - [ "LED_Pin", "struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978", null ], - [ "LED_ActiveLvl", "struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816", null ], - [ "LED_Period", "struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec", null ] -]; \ No newline at end of file diff --git a/Doc/html/struct_g_p_i_o___switch_type_def-members.html b/Doc/html/struct_g_p_i_o___switch_type_def-members.html deleted file mode 100644 index 4957c60..0000000 --- a/Doc/html/struct_g_p_i_o___switch_type_def-members.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -MyLibs: Member List - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    GPIO_SwitchTypeDef Member List
    -
    - -
    -
    - - - - diff --git a/Doc/html/struct_g_p_i_o___switch_type_def.html b/Doc/html/struct_g_p_i_o___switch_type_def.html deleted file mode 100644 index 6f13770..0000000 --- a/Doc/html/struct_g_p_i_o___switch_type_def.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - -MyLibs: GPIO_SwitchTypeDef Struct Reference - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MyLibs 1.0 -
    -
    Расширенные библиотеки для STM32
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    GPIO_SwitchTypeDef Struct Reference
    -
    -
    - -

    Структура кнопки - More...

    - -

    #include <general_gpio.h>

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

    -Public Attributes

    GPIO_TypeDef * Sw_Port
     GPIO порт ножки кнопки
    uint32_t Sw_Pin
     GPIO пин ножки кнопки
    uint8_t Sw_ActiveLvl
     Активный уровень ножки (при котором кнопка нажата)
    uint32_t Sw_PrevState
     Предыдущее состояние кнопки
    uint32_t Sw_FilterDelay
     Фильтр от дребезга (в мс)
    uint32_t tickprev
    -

    Detailed Description

    -

    Структура кнопки

    - -

    Definition at line 90 of file general_gpio.h.

    -

    Member Data Documentation

    - -

    ◆ Sw_Port

    - -
    -
    - - - - -
    GPIO_TypeDef* GPIO_SwitchTypeDef::Sw_Port
    -
    - -

    GPIO порт ножки кнопки

    - -

    Definition at line 92 of file general_gpio.h.

    - -
    -
    - -

    ◆ Sw_Pin

    - -
    -
    - - - - -
    uint32_t GPIO_SwitchTypeDef::Sw_Pin
    -
    - -

    GPIO пин ножки кнопки

    - -

    Definition at line 93 of file general_gpio.h.

    - -
    -
    - -

    ◆ Sw_ActiveLvl

    - -
    -
    - - - - -
    uint8_t GPIO_SwitchTypeDef::Sw_ActiveLvl
    -
    - -

    Активный уровень ножки (при котором кнопка нажата)

    - -

    Definition at line 95 of file general_gpio.h.

    - -
    -
    - -

    ◆ Sw_PrevState

    - -
    -
    - - - - -
    uint32_t GPIO_SwitchTypeDef::Sw_PrevState
    -
    - -

    Предыдущее состояние кнопки

    - -

    Definition at line 96 of file general_gpio.h.

    - -
    -
    - -

    ◆ Sw_FilterDelay

    - -
    -
    - - - - -
    uint32_t GPIO_SwitchTypeDef::Sw_FilterDelay
    -
    - -

    Фильтр от дребезга (в мс)

    - -

    Definition at line 97 of file general_gpio.h.

    - -
    -
    - -

    ◆ tickprev

    - -
    -
    - - - - -
    uint32_t GPIO_SwitchTypeDef::tickprev
    -
    - -

    Definition at line 99 of file general_gpio.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/STM32_General/Inc/general_gpio.h
    • -
    -
    -
    - -
    - - - - diff --git a/Doc/html/struct_g_p_i_o___switch_type_def.js b/Doc/html/struct_g_p_i_o___switch_type_def.js deleted file mode 100644 index c854048..0000000 --- a/Doc/html/struct_g_p_i_o___switch_type_def.js +++ /dev/null @@ -1,8 +0,0 @@ -var struct_g_p_i_o___switch_type_def = -[ - [ "Sw_Port", "struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a", null ], - [ "Sw_Pin", "struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032", null ], - [ "Sw_ActiveLvl", "struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405", null ], - [ "Sw_PrevState", "struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89", null ], - [ "Sw_FilterDelay", "struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06", null ] -]; \ No newline at end of file diff --git a/Doc/html/struct_gen_optimizer__t-members.html b/Doc/html/struct_gen_optimizer__t-members.html index c935cda..27aeeb3 100644 --- a/Doc/html/struct_gen_optimizer__t-members.html +++ b/Doc/html/struct_gen_optimizer__t-members.html @@ -103,17 +103,15 @@ $(function(){initNavTree('struct_gen_optimizer__t.html','',''); });

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

    - - - - - - - - - - - + + + + + + + + +
    cand_indexGenOptimizer_t
    candidatesGenOptimizer_t
    gen_indexGenOptimizer_t
    gen_mutGenOptimizer_t
    lossGenOptimizer_t
    mutation_ampGenOptimizer_t
    n_bestGenOptimizer_t
    n_candGenOptimizer_t
    n_paramsGenOptimizer_t
    sorted_idxGenOptimizer_t
    stabilityGenOptimizer_t
    candidates (defined in GenOptimizer_t)GenOptimizer_t
    candidates (defined in GenOptimizer_t)GenOptimizer_t
    iq_mutation (defined in GenOptimizer_t)GenOptimizer_t
    loss (defined in GenOptimizer_t)GenOptimizer_t
    loss (defined in GenOptimizer_t)GenOptimizer_t
    mutation_amp (defined in GenOptimizer_t)GenOptimizer_t
    n_best (defined in GenOptimizer_t)GenOptimizer_t
    n_cand (defined in GenOptimizer_t)GenOptimizer_t
    n_params (defined in GenOptimizer_t)GenOptimizer_t
    diff --git a/Doc/html/struct_gen_optimizer__t.html b/Doc/html/struct_gen_optimizer__t.html index 0d472e2..80bce18 100644 --- a/Doc/html/struct_gen_optimizer__t.html +++ b/Doc/html/struct_gen_optimizer__t.html @@ -100,60 +100,23 @@ $(function(){initNavTree('struct_gen_optimizer__t.html','','struct_gen_optimizer
    GenOptimizer_t Struct Reference
    - -

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

    - -

    #include <gen_optimizer.h>

    - - - - - - - - - - - - - - - - - - + + + + +

    Public Attributes

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

    Detailed Description

    -

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

    - -

    Definition at line 101 of file gen_optimizer.h.

    +
    +

    Definition at line 319 of file gen_optimizer.h.

    Member Data Documentation

    - -

    ◆ stability

    - -
    -
    - - - - -
    float GenOptimizer_t::stability
    -
    - -

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

    - -

    Definition at line 102 of file gen_optimizer.h.

    - -
    -

    ◆ n_params

    @@ -166,9 +129,7 @@ Public Attributes
    -

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

    - -

    Definition at line 104 of file gen_optimizer.h.

    +

    Definition at line 320 of file gen_optimizer.h.

    @@ -184,9 +145,7 @@ Public Attributes
    -

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

    - -

    Definition at line 105 of file gen_optimizer.h.

    +

    Definition at line 321 of file gen_optimizer.h.

    @@ -202,9 +161,7 @@ Public Attributes
    -

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

    - -

    Definition at line 106 of file gen_optimizer.h.

    +

    Definition at line 322 of file gen_optimizer.h.

    @@ -220,122 +177,93 @@ Public Attributes
    -

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

    - -

    Definition at line 107 of file gen_optimizer.h.

    +

    Definition at line 323 of file gen_optimizer.h.

    - -

    ◆ cand_index

    + +

    ◆ loss [1/2]

    - +
    uint16_t GenOptimizer_t::cand_indexfloat GenOptimizer_t::loss[0]
    -

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

    - -

    Definition at line 109 of file gen_optimizer.h.

    +

    Definition at line 324 of file gen_optimizer.h.

    - -

    ◆ gen_index

    + +

    ◆ candidates [1/2]

    - +
    uint16_t GenOptimizer_t::gen_indexfloat GenOptimizer_t::candidates[0][0]
    -

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

    - -

    Definition at line 110 of file gen_optimizer.h.

    +

    Definition at line 325 of file gen_optimizer.h.

    - -

    ◆ gen_mut

    + +

    ◆ iq_mutation

    - +
    float GenOptimizer_t::gen_mutuint16_t GenOptimizer_t::iq_mutation
    -

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

    - -

    Definition at line 113 of file gen_optimizer.h.

    +

    Definition at line 84 of file __mylibs_include.h.

    - -

    ◆ loss

    + +

    ◆ loss [2/2]

    - +
    float GenOptimizer_t::loss[GEN_MAX_CANDIDATES]int32_t GenOptimizer_t::loss[0]
    -

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

    - -

    Definition at line 115 of file gen_optimizer.h.

    +

    Definition at line 85 of file __mylibs_include.h.

    - -

    ◆ candidates

    + +

    ◆ candidates [2/2]

    - +
    float GenOptimizer_t::candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]int32_t GenOptimizer_t::candidates[0][0]
    -

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

    - -

    Definition at line 116 of file gen_optimizer.h.

    +

    Definition at line 86 of file __mylibs_include.h.

    - -

    ◆ sorted_idx

    - -
    -
    - - - - -
    uint16_t GenOptimizer_t::sorted_idx[GEN_MAX_CANDIDATES]
    -
    - -

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

    - -

    Definition at line 117 of file gen_optimizer.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: