From 9d720767b054ea72e170e96052bd67c2da21f9dd Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Sun, 19 Oct 2025 11:55:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20TIM=20(?= =?UTF-8?q?=D1=81=20=D1=82=D0=BE=D1=87=D0=BA=D0=B8=20=D0=B7=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D1=86=D0=B8=D0=B8.=20=D0=9A=D0=BE=D0=B4=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B5=D0=BD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Доработна документация в целом - добавелн main page - исправлены ошибки в шапках и коментах - добавлен граф инклюдов --- Doc/Documentation.lnk | Bin 0 -> 1513 bytes Doc/Doxyfile | 2 +- Doc/html/____general__flash_8h_source.html | 28 +- Doc/html/____general__spi_8c_source.html | 42 +- Doc/html/____general__spi_8h_source.html | 8 +- Doc/html/____general__tim_8c_source.html | 777 ------------ Doc/html/____general__tim_8h_source.html | 251 ---- Doc/html/____general__uart_8c_source.html | 6 +- Doc/html/____general__uart_8h_source.html | 8 +- Doc/html/annotated.html | 31 +- Doc/html/annotated_dup.js | 11 +- Doc/html/bit__access_8h.html | 176 +++ Doc/html/bit__access_8h.js | 7 + 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 0 -> 2910 bytes Doc/html/bit__access_8h__incl.map | 9 + Doc/html/bit__access_8h__incl.md5 | 1 + Doc/html/bit__access_8h__incl.png | Bin 0 -> 4026 bytes Doc/html/bit__access_8h_source.html | 52 +- Doc/html/classes.html | 12 +- ...ef-members.html => dir_000002_000000.html} | 24 +- .../dir_9c80311a018e1f8cfb6659b73d634be4.html | 18 +- .../dir_9c80311a018e1f8cfb6659b73d634be4.js | 4 +- ...r_9c80311a018e1f8cfb6659b73d634be4_dep.map | 7 + ...r_9c80311a018e1f8cfb6659b73d634be4_dep.md5 | 1 + ...r_9c80311a018e1f8cfb6659b73d634be4_dep.png | Bin 0 -> 1992 bytes .../dir_9e11e9a41112194af3eee6cc728f9515.html | 13 + ...r_9e11e9a41112194af3eee6cc728f9515_dep.map | 7 + ...r_9e11e9a41112194af3eee6cc728f9515_dep.md5 | 1 + ...r_9e11e9a41112194af3eee6cc728f9515_dep.png | Bin 0 -> 1613 bytes .../dir_eb423fea8a9c4b9b32b922020ec391e1.html | 18 +- .../dir_eb423fea8a9c4b9b32b922020ec391e1.js | 6 +- ...r_eb423fea8a9c4b9b32b922020ec391e1_dep.map | 4 + ...r_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 | 1 + ...r_eb423fea8a9c4b9b32b922020ec391e1_dep.png | Bin 0 -> 1046 bytes Doc/html/doxygen_crawl.html | 145 ++- Doc/html/files.html | 14 +- Doc/html/functions.html | 55 +- Doc/html/functions_vars.html | 55 +- Doc/html/general__gpio_8c.html | 43 +- Doc/html/general__gpio_8c.js | 20 +- Doc/html/general__gpio_8c__incl.map | 11 + Doc/html/general__gpio_8c__incl.md5 | 1 + Doc/html/general__gpio_8c__incl.png | Bin 0 -> 5053 bytes Doc/html/general__gpio_8c_source.html | 435 +++---- Doc/html/general__gpio_8h.html | 77 +- Doc/html/general__gpio_8h.js | 32 +- Doc/html/general__gpio_8h__dep__incl.map | 16 + Doc/html/general__gpio_8h__dep__incl.md5 | 1 + Doc/html/general__gpio_8h__dep__incl.png | Bin 0 -> 17021 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 0 -> 4033 bytes Doc/html/general__gpio_8h_source.html | 404 +++--- 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 0 -> 8453 bytes Doc/html/general__tim_8c_source.html | 900 ++++++++++++++ Doc/html/general__tim_8h.html | 282 +++++ Doc/html/general__tim_8h.js | 41 + Doc/html/general__tim_8h__dep__incl.map | 7 + Doc/html/general__tim_8h__dep__incl.md5 | 1 + Doc/html/general__tim_8h__dep__incl.png | Bin 0 -> 5296 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 0 -> 7341 bytes Doc/html/general__tim_8h_source.html | 392 ++++++ Doc/html/globals.html | 86 +- Doc/html/globals_defs.html | 34 +- Doc/html/globals_enum.html | 4 +- Doc/html/globals_eval.html | 17 +- Doc/html/globals_func.html | 47 +- Doc/html/graph_legend.html | 173 +++ Doc/html/graph_legend.md5 | 1 + Doc/html/graph_legend.png | Bin 0 -> 12453 bytes ...__b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html | 10 + ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map | 4 + ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 | 1 + ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png | Bin 0 -> 1167 bytes .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html | 22 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.map | 4 + .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 | 1 + .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.png | Bin 0 -> 1155 bytes ...r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html | 100 +- ...r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.js | 10 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map | 4 + ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 | 1 + ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png | Bin 0 -> 1156 bytes Doc/html/group___g_p_i_o___g_e_n_e_r_a_l.js | 6 - Doc/html/group___g_p_i_o___i_n_i_t.html | 22 +- 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 0 -> 1024 bytes Doc/html/group___g_p_i_o___l_e_d_s.js | 24 - Doc/html/group___l_i_b_s___c_o_n_f_i_g.html | 22 +- Doc/html/group___l_i_b_s___c_o_n_f_i_g.map | 4 + Doc/html/group___l_i_b_s___c_o_n_f_i_g.md5 | 1 + Doc/html/group___l_i_b_s___c_o_n_f_i_g.png | Bin 0 -> 1060 bytes Doc/html/group___m_y___l_i_b_s___g_p_i_o.html | 30 +- 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 0 -> 3354 bytes Doc/html/group___m_y___l_i_b_s___t_i_m.html | 159 +++ 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 0 -> 5788 bytes Doc/html/group___m_y_l_i_b_s___a_l_l.html | 21 + Doc/html/group___m_y_l_i_b_s___a_l_l.map | 6 + Doc/html/group___m_y_l_i_b_s___a_l_l.md5 | 1 + Doc/html/group___m_y_l_i_b_s___a_l_l.png | Bin 0 -> 2804 bytes .../group___m_y_l_i_b_s___c_o_n_f_i_g.html | 14 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.map | 6 + .../group___m_y_l_i_b_s___c_o_n_f_i_g.md5 | 1 + .../group___m_y_l_i_b_s___c_o_n_f_i_g.png | Bin 0 -> 2610 bytes .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html | 16 + .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.map | 10 + .../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 0 -> 9417 bytes ..._y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html} | 27 +- ...__m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.js | 6 + ..._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 0 -> 1545 bytes ...up___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html} | 20 +- ...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 0 -> 957 bytes ..._m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html} | 26 +- ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js} | 9 +- ...___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 0 -> 985 bytes ...p___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html | 14 + ...oup___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.js | 3 +- ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map | 6 + ...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 0 -> 2455 bytes ...oup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html | 243 ++++ ...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 0 -> 946 bytes ...__m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html | 242 ++++ ...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 0 -> 953 bytes ...__m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html | 333 +++++ ...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 0 -> 1491 bytes .../group___m_y_l_i_b_s___t_i_m___o_c.html | 230 ++++ 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 0 -> 1122 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 0 -> 1024 bytes Doc/html/group___t_r_a_c_e.html | 14 + Doc/html/group___t_r_a_c_e.map | 8 + Doc/html/group___t_r_a_c_e.md5 | 1 + Doc/html/group___t_r_a_c_e.png | Bin 0 -> 6036 bytes Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html | 42 +- Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.map | 4 + Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.md5 | 1 + Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.png | Bin 0 -> 1009 bytes Doc/html/group___t_r_a_c_e___g_p_i_o.html | 14 +- Doc/html/group___t_r_a_c_e___g_p_i_o.map | 4 + Doc/html/group___t_r_a_c_e___g_p_i_o.md5 | 1 + Doc/html/group___t_r_a_c_e___g_p_i_o.png | Bin 0 -> 1129 bytes ...group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html | 20 +- .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.map | 4 + .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.md5 | 1 + .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.png | Bin 0 -> 1124 bytes ...group___t_r_a_c_e___r_t_t___f_l_a_s_h.html | 18 +- .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.map | 4 + .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.md5 | 1 + .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.png | Bin 0 -> 1102 bytes Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html | 19 +- Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.map | 4 + Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.md5 | 1 + Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.png | Bin 0 -> 1114 bytes Doc/html/group___t_r_a_c_k_e_r_s.html | 65 +- Doc/html/group___t_r_a_c_k_e_r_s.map | 4 + Doc/html/group___t_r_a_c_k_e_r_s.md5 | 1 + Doc/html/group___t_r_a_c_k_e_r_s.png | Bin 0 -> 1162 bytes .../group___u_t_i_l_s___d_e_f_i_n_e_s.html | 18 +- .../group___u_t_i_l_s___d_e_f_i_n_e_s.map | 4 + .../group___u_t_i_l_s___d_e_f_i_n_e_s.md5 | 1 + .../group___u_t_i_l_s___d_e_f_i_n_e_s.png | Bin 0 -> 1097 bytes Doc/html/index.html | 118 +- Doc/html/menudata.js | 34 +- Doc/html/mylibs__config_8h.html | 57 +- Doc/html/mylibs__config_8h__dep__incl.map | 37 + Doc/html/mylibs__config_8h__dep__incl.md5 | 1 + Doc/html/mylibs__config_8h__dep__incl.png | Bin 0 -> 63407 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 0 -> 2312 bytes Doc/html/mylibs__config_8h_source.html | 124 +- Doc/html/mylibs__defs_8h.html | 74 +- Doc/html/mylibs__defs_8h.js | 10 +- Doc/html/mylibs__defs_8h__dep__incl.map | 35 + Doc/html/mylibs__defs_8h__dep__incl.md5 | 1 + Doc/html/mylibs__defs_8h__dep__incl.png | Bin 0 -> 59930 bytes Doc/html/mylibs__defs_8h__incl.map | 7 + Doc/html/mylibs__defs_8h__incl.md5 | 1 + Doc/html/mylibs__defs_8h__incl.png | Bin 0 -> 3194 bytes Doc/html/mylibs__defs_8h_source.html | 294 ++--- Doc/html/mylibs__include_8h.html | 69 +- Doc/html/mylibs__include_8h.js | 10 - Doc/html/mylibs__include_8h__incl.map | 31 + Doc/html/mylibs__include_8h__incl.md5 | 1 + Doc/html/mylibs__include_8h__incl.png | Bin 0 -> 29292 bytes Doc/html/mylibs__include_8h_source.html | 293 +++-- Doc/html/navtreedata.js | 17 +- Doc/html/navtreeindex0.js | 437 ++++--- Doc/html/navtreeindex1.js | 10 + Doc/html/search/all_0.js | 4 +- Doc/html/search/all_1.js | 5 +- Doc/html/search/all_10.js | 65 +- Doc/html/search/all_11.js | 27 + Doc/html/search/all_12.js | 4 + Doc/html/search/all_13.js | 4 + Doc/html/search/all_14.js | 4 + Doc/html/search/all_15.js | 5 + Doc/html/search/all_16.js | 6 + Doc/html/search/all_17.js | 6 + Doc/html/search/all_18.js | 5 + Doc/html/search/all_19.js | 6 + Doc/html/search/all_1a.js | 6 + Doc/html/search/all_1b.js | 4 + Doc/html/search/all_2.js | 17 +- Doc/html/search/all_3.js | 7 +- Doc/html/search/all_4.js | 5 +- Doc/html/search/all_6.js | 43 +- Doc/html/search/all_7.js | 3 +- Doc/html/search/all_8.js | 2 +- Doc/html/search/all_9.js | 10 +- Doc/html/search/all_a.js | 26 +- Doc/html/search/all_c.js | 4 +- Doc/html/search/all_d.js | 21 +- Doc/html/search/all_e.js | 30 +- Doc/html/search/all_f.js | 58 +- Doc/html/search/classes_0.js | 4 +- Doc/html/search/classes_1.js | 3 +- Doc/html/search/classes_2.js | 2 +- Doc/html/search/classes_3.js | 5 +- Doc/html/search/classes_4.js | 4 +- Doc/html/search/classes_5.js | 6 +- Doc/html/search/classes_6.js | 5 - Doc/html/search/classes_7.js | 8 - Doc/html/search/enums_0.js | 2 +- Doc/html/search/enums_1.js | 5 + Doc/html/search/enumvalues_0.js | 8 +- Doc/html/search/enumvalues_1.js | 12 + Doc/html/search/files_0.js | 3 +- Doc/html/search/files_1.js | 7 +- Doc/html/search/files_2.js | 5 +- Doc/html/search/files_3.js | 5 + Doc/html/search/functions_0.js | 20 +- Doc/html/search/functions_3.js | 14 + Doc/html/search/groups_10.js | 4 + Doc/html/search/groups_2.js | 5 +- Doc/html/search/groups_3.js | 5 +- Doc/html/search/groups_4.js | 3 +- Doc/html/search/groups_6.js | 2 +- Doc/html/search/groups_8.js | 2 +- Doc/html/search/groups_9.js | 2 +- Doc/html/search/groups_b.js | 2 +- Doc/html/search/groups_c.js | 3 +- Doc/html/search/groups_d.js | 3 +- Doc/html/search/groups_e.js | 8 +- Doc/html/search/groups_f.js | 8 +- Doc/html/search/pages_0.js | 5 + Doc/html/search/pages_1.js | 7 + Doc/html/search/pages_2.js | 4 + Doc/html/search/pages_3.js | 4 + Doc/html/search/pages_4.js | 4 + Doc/html/search/pages_5.js | 4 + Doc/html/search/pages_6.js | 5 + Doc/html/search/pages_7.js | 6 + Doc/html/search/pages_8.js | 6 + Doc/html/search/pages_9.js | 5 + Doc/html/search/pages_a.js | 6 + Doc/html/search/pages_b.js | 6 + Doc/html/search/pages_c.js | 4 + Doc/html/search/searchdata.js | 23 +- Doc/html/search/variables_1.js | 7 +- Doc/html/search/variables_2.js | 6 +- Doc/html/search/variables_3.js | 6 +- Doc/html/search/variables_4.js | 12 +- Doc/html/search/variables_5.js | 4 +- Doc/html/search/variables_6.js | 8 + Doc/html/search/variables_7.js | 21 + Doc/html/search/variables_8.js | 4 + ...ruct_a_d_c___tracker_type_def-members.html | 120 -- Doc/html/struct_a_d_c___tracker_type_def.html | 206 ---- ..._c_channel___tracker_type_def-members.html | 120 -- ...ruct_a_d_c_channel___tracker_type_def.html | 206 ---- ...ruct_g_p_i_o___l_e_d_type_def-members.html | 2 +- Doc/html/struct_g_p_i_o___l_e_d_type_def.html | 23 +- Doc/html/struct_g_p_i_o___l_e_d_type_def.js | 3 +- ...uct_g_p_i_o___switch_type_def-members.html | 2 +- .../struct_g_p_i_o___switch_type_def.html | 19 +- Doc/html/struct_g_p_i_o___switch_type_def.js | 3 +- Doc/html/struct_h_f___stack_frame__t.html | 18 +- ..._t___discrete_inputs_type_def-members.html | 120 -- ...ct_m_z_k_t___discrete_inputs_type_def.html | 200 --- ...uct_m_z_k_t___l_e_ds_type_def-members.html | 123 -- .../struct_m_z_k_t___l_e_ds_type_def.html | 251 ---- ...ct_measure___tracker_type_def-members.html | 120 -- .../struct_measure___tracker_type_def.html | 206 ---- ...ure_handle___tracker_type_def-members.html | 120 -- ...uct_measure_handle___tracker_type_def.html | 206 ---- Doc/html/struct_r_s___tracker_type_def.html | 206 ---- Doc/html/struct_r_t_t___flash_header__t.html | 8 +- ...ruct_t_i_m___encoder_type_def-members.html | 16 +- Doc/html/struct_t_i_m___encoder_type_def.html | 104 +- 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 0 -> 1853 bytes ...uct_t_i_m___settings_type_def-members.html | 20 +- .../struct_t_i_m___settings_type_def.html | 76 +- Doc/html/struct_t_i_m___settings_type_def.js | 13 + Doc/html/topics.html | 14 +- Doc/html/trace_8h.html | 30 + Doc/html/trace_8h__dep__incl.map | 5 + Doc/html/trace_8h__dep__incl.md5 | 1 + Doc/html/trace_8h__dep__incl.png | Bin 0 -> 2854 bytes Doc/html/trace_8h__incl.map | 13 + Doc/html/trace_8h__incl.md5 | 1 + Doc/html/trace_8h__incl.png | Bin 0 -> 6855 bytes Doc/html/trace_8h_source.html | 1090 ++++++++--------- Doc/html/trackers_8h.html | 26 + Doc/html/trackers_8h__dep__incl.map | 5 + Doc/html/trackers_8h__dep__incl.md5 | 1 + Doc/html/trackers_8h__dep__incl.png | Bin 0 -> 2894 bytes Doc/html/trackers_8h__incl.map | 9 + Doc/html/trackers_8h__incl.md5 | 1 + Doc/html/trackers_8h__incl.png | Bin 0 -> 4009 bytes Doc/html/trackers_8h_source.html | 295 ++--- Doc/latex/____general__flash_8h_source.tex | 28 +- Doc/latex/____general__spi_8c_source.tex | 38 +- Doc/latex/____general__spi_8h_source.tex | 8 +- Doc/latex/____general__tim_8c_source.tex | 663 ---------- Doc/latex/____general__tim_8h_source.tex | 136 -- Doc/latex/____general__uart_8c_source.tex | 2 +- Doc/latex/____general__uart_8h_source.tex | 8 +- Doc/latex/annotated.tex | 11 +- Doc/latex/bit__access_8h.tex | 55 + Doc/latex/bit__access_8h__dep__incl.md5 | 1 + Doc/latex/bit__access_8h__dep__incl.pdf | Bin 0 -> 20657 bytes Doc/latex/bit__access_8h__incl.md5 | 1 + Doc/latex/bit__access_8h__incl.pdf | Bin 0 -> 22135 bytes Doc/latex/bit__access_8h_source.tex | 50 +- Doc/latex/files.tex | 10 +- Doc/latex/general__gpio_8c.tex | 32 +- Doc/latex/general__gpio_8c__incl.md5 | 1 + Doc/latex/general__gpio_8c__incl.pdf | Bin 0 -> 22451 bytes Doc/latex/general__gpio_8c_source.tex | 364 +++--- Doc/latex/general__gpio_8h.tex | 50 +- Doc/latex/general__gpio_8h__dep__incl.md5 | 1 + Doc/latex/general__gpio_8h__dep__incl.pdf | Bin 0 -> 22848 bytes Doc/latex/general__gpio_8h__incl.md5 | 1 + Doc/latex/general__gpio_8h__incl.pdf | Bin 0 -> 22499 bytes Doc/latex/general__gpio_8h_source.tex | 340 ++--- Doc/latex/general__tim_8c.tex | 55 + Doc/latex/general__tim_8c__incl.md5 | 1 + Doc/latex/general__tim_8c__incl.pdf | Bin 0 -> 22734 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 0 -> 21347 bytes Doc/latex/general__tim_8h__incl.md5 | 1 + Doc/latex/general__tim_8h__incl.pdf | Bin 0 -> 22786 bytes Doc/latex/general__tim_8h_source.tex | 230 ++++ ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 | 1 + ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf | Bin 0 -> 13916 bytes ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex | 8 + .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 | 1 + .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf | Bin 0 -> 13445 bytes .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex | 16 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 | 1 + ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf | Bin 0 -> 13599 bytes ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex | 70 +- 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 0 -> 13404 bytes Doc/latex/group___g_p_i_o___i_n_i_t.tex | 18 +- Doc/latex/group___l_i_b_s___c_o_n_f_i_g.md5 | 1 + Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf | Bin 0 -> 13696 bytes Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex | 20 +- 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 0 -> 17211 bytes Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex | 25 +- 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 0 -> 18332 bytes Doc/latex/group___m_y___l_i_b_s___t_i_m.tex | 49 + Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 | 1 + Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf | Bin 0 -> 16589 bytes Doc/latex/group___m_y_l_i_b_s___a_l_l.tex | 19 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.md5 | 1 + .../group___m_y_l_i_b_s___c_o_n_f_i_g.pdf | Bin 0 -> 15443 bytes .../group___m_y_l_i_b_s___c_o_n_f_i_g.tex | 10 +- .../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 0 -> 18496 bytes .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex | 8 + ..._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 0 -> 14292 bytes ...m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex} | 36 +- ...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 0 -> 11871 bytes ...oup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex} | 90 +- ...___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 0 -> 14065 bytes ...__m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex} | 30 +- ...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 0 -> 15516 bytes ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex | 13 +- ...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 0 -> 13109 bytes ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex | 107 ++ ...___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 0 -> 13140 bytes ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex | 110 ++ ...___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 0 -> 14377 bytes ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex | 214 ++++ .../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 0 -> 14476 bytes .../group___m_y_l_i_b_s___t_i_m___o_c.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 0 -> 13418 bytes Doc/latex/group___t_i_m___i_n_i_t.tex | 264 ++++ Doc/latex/group___t_r_a_c_e.md5 | 1 + Doc/latex/group___t_r_a_c_e.pdf | Bin 0 -> 17677 bytes Doc/latex/group___t_r_a_c_e.tex | 8 + Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.md5 | 1 + Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf | Bin 0 -> 13334 bytes Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex | 40 +- Doc/latex/group___t_r_a_c_e___g_p_i_o.md5 | 1 + Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf | Bin 0 -> 13991 bytes Doc/latex/group___t_r_a_c_e___g_p_i_o.tex | 12 +- .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.md5 | 1 + .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf | Bin 0 -> 13602 bytes .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex | 12 +- .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.md5 | 1 + .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf | Bin 0 -> 14391 bytes .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex | 16 +- Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.md5 | 1 + Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf | Bin 0 -> 13663 bytes Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex | 16 +- Doc/latex/group___t_r_a_c_k_e_r_s.md5 | 1 + Doc/latex/group___t_r_a_c_k_e_r_s.pdf | Bin 0 -> 13999 bytes Doc/latex/group___t_r_a_c_k_e_r_s.tex | 55 +- .../group___u_t_i_l_s___d_e_f_i_n_e_s.md5 | 1 + .../group___u_t_i_l_s___d_e_f_i_n_e_s.pdf | Bin 0 -> 13375 bytes .../group___u_t_i_l_s___d_e_f_i_n_e_s.tex | 16 +- Doc/latex/index.tex | 105 ++ Doc/latex/mylibs__config_8h.tex | 19 +- Doc/latex/mylibs__config_8h__dep__incl.md5 | 1 + Doc/latex/mylibs__config_8h__dep__incl.pdf | Bin 0 -> 25362 bytes Doc/latex/mylibs__config_8h__incl.md5 | 1 + Doc/latex/mylibs__config_8h__incl.pdf | Bin 0 -> 21708 bytes Doc/latex/mylibs__config_8h_source.tex | 124 +- Doc/latex/mylibs__defs_8h.tex | 28 +- Doc/latex/mylibs__defs_8h__dep__incl.md5 | 1 + Doc/latex/mylibs__defs_8h__dep__incl.pdf | Bin 0 -> 25220 bytes Doc/latex/mylibs__defs_8h__incl.md5 | 1 + Doc/latex/mylibs__defs_8h__incl.pdf | Bin 0 -> 22009 bytes Doc/latex/mylibs__defs_8h_source.tex | 294 ++--- Doc/latex/mylibs__include_8h.tex | 41 +- Doc/latex/mylibs__include_8h__incl.md5 | 1 + Doc/latex/mylibs__include_8h__incl.pdf | Bin 0 -> 24983 bytes Doc/latex/mylibs__include_8h_source.tex | 275 +++-- Doc/latex/refman.tex | 15 +- Doc/latex/struct_a_d_c___tracker_type_def.tex | 79 -- ...truct_a_d_c_channel___tracker_type_def.tex | 79 -- Doc/latex/struct_g_p_i_o___l_e_d_type_def.tex | 24 +- .../struct_g_p_i_o___switch_type_def.tex | 20 +- Doc/latex/struct_h_f___stack_frame__t.tex | 18 +- ...uct_m_z_k_t___discrete_inputs_type_def.tex | 70 -- .../struct_m_z_k_t___l_e_ds_type_def.tex | 106 -- .../struct_measure___tracker_type_def.tex | 79 -- ...ruct_measure_handle___tracker_type_def.tex | 79 -- Doc/latex/struct_r_s___tracker_type_def.tex | 79 -- Doc/latex/struct_r_t_t___flash_header__t.tex | 8 +- Doc/latex/struct_t_i_m___encoder_type_def.tex | 117 +- ..._t_i_m___encoder_type_def__coll__graph.md5 | 1 + ..._t_i_m___encoder_type_def__coll__graph.pdf | Bin 0 -> 17027 bytes .../struct_t_i_m___settings_type_def.tex | 107 +- Doc/latex/topics.tex | 16 +- Doc/latex/trace_8h.tex | 16 + Doc/latex/trace_8h__dep__incl.md5 | 1 + Doc/latex/trace_8h__dep__incl.pdf | Bin 0 -> 20650 bytes Doc/latex/trace_8h__incl.md5 | 1 + Doc/latex/trace_8h__incl.pdf | Bin 0 -> 22340 bytes Doc/latex/trace_8h_source.tex | 1018 ++++++++------- Doc/latex/trackers_8h.tex | 16 + Doc/latex/trackers_8h__dep__incl.md5 | 1 + Doc/latex/trackers_8h__dep__incl.pdf | Bin 0 -> 21171 bytes Doc/latex/trackers_8h__incl.md5 | 1 + Doc/latex/trackers_8h__incl.pdf | Bin 0 -> 22652 bytes Doc/latex/trackers_8h_source.tex | 293 ++--- Doc/latex/unionuint16___bit_type_def.tex | 2 +- Doc/latex/unionuint32___bit_type_def.tex | 2 +- Doc/latex/unionuint64___bit_type_def.tex | 2 +- Doc/latex/unionuint8___bit_type_def.tex | 2 +- MyLibsGeneral/Inc/__general_flash.h | 26 +- MyLibsGeneral/Inc/__general_spi.h | 8 +- MyLibsGeneral/Inc/__general_tim.h | 130 -- MyLibsGeneral/Inc/__general_uart.h | 8 +- MyLibsGeneral/Inc/bit_access.h | 48 +- MyLibsGeneral/Inc/general_gpio.h | 50 +- MyLibsGeneral/Inc/general_tim.h | 224 ++++ MyLibsGeneral/Inc/mylibs_config.h | 8 +- MyLibsGeneral/Inc/mylibs_defs.h | 16 +- MyLibsGeneral/Inc/mylibs_include.h | 116 +- MyLibsGeneral/Inc/trace.h | 14 +- MyLibsGeneral/Inc/trackers.h | 81 +- MyLibsGeneral/Src/__general_spi.c | 32 +- MyLibsGeneral/Src/general_gpio.c | 60 +- .../Src/{__general_tim.c => general_tim.c} | 187 ++- 534 files changed, 13259 insertions(+), 9229 deletions(-) create mode 100644 Doc/Documentation.lnk delete mode 100644 Doc/html/____general__tim_8c_source.html delete mode 100644 Doc/html/____general__tim_8h_source.html create mode 100644 Doc/html/bit__access_8h.html create mode 100644 Doc/html/bit__access_8h.js create mode 100644 Doc/html/bit__access_8h__dep__incl.map create mode 100644 Doc/html/bit__access_8h__dep__incl.md5 create mode 100644 Doc/html/bit__access_8h__dep__incl.png create mode 100644 Doc/html/bit__access_8h__incl.map create mode 100644 Doc/html/bit__access_8h__incl.md5 create mode 100644 Doc/html/bit__access_8h__incl.png rename Doc/html/{struct_r_s___tracker_type_def-members.html => dir_000002_000000.html} (70%) create mode 100644 Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map create mode 100644 Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 create mode 100644 Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.png create mode 100644 Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map create mode 100644 Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 create mode 100644 Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.png create mode 100644 Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.map create mode 100644 Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 create mode 100644 Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.png create mode 100644 Doc/html/general__gpio_8c__incl.map create mode 100644 Doc/html/general__gpio_8c__incl.md5 create mode 100644 Doc/html/general__gpio_8c__incl.png create mode 100644 Doc/html/general__gpio_8h__dep__incl.map create mode 100644 Doc/html/general__gpio_8h__dep__incl.md5 create mode 100644 Doc/html/general__gpio_8h__dep__incl.png create mode 100644 Doc/html/general__gpio_8h__incl.map create mode 100644 Doc/html/general__gpio_8h__incl.md5 create mode 100644 Doc/html/general__gpio_8h__incl.png create mode 100644 Doc/html/general__tim_8c.html create mode 100644 Doc/html/general__tim_8c.js create mode 100644 Doc/html/general__tim_8c__incl.map create mode 100644 Doc/html/general__tim_8c__incl.md5 create mode 100644 Doc/html/general__tim_8c__incl.png create mode 100644 Doc/html/general__tim_8c_source.html create mode 100644 Doc/html/general__tim_8h.html create mode 100644 Doc/html/general__tim_8h.js create mode 100644 Doc/html/general__tim_8h__dep__incl.map create mode 100644 Doc/html/general__tim_8h__dep__incl.md5 create mode 100644 Doc/html/general__tim_8h__dep__incl.png create mode 100644 Doc/html/general__tim_8h__incl.map create mode 100644 Doc/html/general__tim_8h__incl.md5 create mode 100644 Doc/html/general__tim_8h__incl.png create mode 100644 Doc/html/general__tim_8h_source.html create mode 100644 Doc/html/graph_legend.html create mode 100644 Doc/html/graph_legend.md5 create mode 100644 Doc/html/graph_legend.png create mode 100644 Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map create mode 100644 Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png create mode 100644 Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map create mode 100644 Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.png create mode 100644 Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map create mode 100644 Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 create mode 100644 Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png delete mode 100644 Doc/html/group___g_p_i_o___g_e_n_e_r_a_l.js create mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.map create mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.md5 create mode 100644 Doc/html/group___g_p_i_o___i_n_i_t.png delete mode 100644 Doc/html/group___g_p_i_o___l_e_d_s.js create mode 100644 Doc/html/group___l_i_b_s___c_o_n_f_i_g.map create mode 100644 Doc/html/group___l_i_b_s___c_o_n_f_i_g.md5 create mode 100644 Doc/html/group___l_i_b_s___c_o_n_f_i_g.png create mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.map create mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.md5 create mode 100644 Doc/html/group___m_y___l_i_b_s___g_p_i_o.png create mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.html create mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.js create mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.map create mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.md5 create mode 100644 Doc/html/group___m_y___l_i_b_s___t_i_m.png create mode 100644 Doc/html/group___m_y_l_i_b_s___a_l_l.map create mode 100644 Doc/html/group___m_y_l_i_b_s___a_l_l.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___a_l_l.png create mode 100644 Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map create mode 100644 Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.png create mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map create mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png rename Doc/html/{group___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.html} (80%) create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.js create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.map create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.png rename Doc/html/{group___g_p_i_o___l_e_d_s.html => group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html} (94%) create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.js create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.map create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.png rename Doc/html/{group___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.html} (83%) rename Doc/html/{group___g_p_i_o___s_w_i_t_c_h.js => group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js} (58%) create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.map create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.png create mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map create mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.js create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.map create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.png create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.js create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.map create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.png create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.js create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.map create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.png create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.html create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.js create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.map create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.md5 create mode 100644 Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.png create mode 100644 Doc/html/group___t_i_m___i_n_i_t.html create mode 100644 Doc/html/group___t_i_m___i_n_i_t.js create mode 100644 Doc/html/group___t_i_m___i_n_i_t.map create mode 100644 Doc/html/group___t_i_m___i_n_i_t.md5 create mode 100644 Doc/html/group___t_i_m___i_n_i_t.png create mode 100644 Doc/html/group___t_r_a_c_e.map create mode 100644 Doc/html/group___t_r_a_c_e.md5 create mode 100644 Doc/html/group___t_r_a_c_e.png create mode 100644 Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.map create mode 100644 Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.md5 create mode 100644 Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.png create mode 100644 Doc/html/group___t_r_a_c_e___g_p_i_o.map create mode 100644 Doc/html/group___t_r_a_c_e___g_p_i_o.md5 create mode 100644 Doc/html/group___t_r_a_c_e___g_p_i_o.png create mode 100644 Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.map create mode 100644 Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.md5 create mode 100644 Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.png create mode 100644 Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.map create mode 100644 Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.md5 create mode 100644 Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.png create mode 100644 Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.map create mode 100644 Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.md5 create mode 100644 Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.png create mode 100644 Doc/html/group___t_r_a_c_k_e_r_s.map create mode 100644 Doc/html/group___t_r_a_c_k_e_r_s.md5 create mode 100644 Doc/html/group___t_r_a_c_k_e_r_s.png create mode 100644 Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map create mode 100644 Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.png create mode 100644 Doc/html/mylibs__config_8h__dep__incl.map create mode 100644 Doc/html/mylibs__config_8h__dep__incl.md5 create mode 100644 Doc/html/mylibs__config_8h__dep__incl.png create mode 100644 Doc/html/mylibs__config_8h__incl.map create mode 100644 Doc/html/mylibs__config_8h__incl.md5 create mode 100644 Doc/html/mylibs__config_8h__incl.png create mode 100644 Doc/html/mylibs__defs_8h__dep__incl.map create mode 100644 Doc/html/mylibs__defs_8h__dep__incl.md5 create mode 100644 Doc/html/mylibs__defs_8h__dep__incl.png create mode 100644 Doc/html/mylibs__defs_8h__incl.map create mode 100644 Doc/html/mylibs__defs_8h__incl.md5 create mode 100644 Doc/html/mylibs__defs_8h__incl.png delete mode 100644 Doc/html/mylibs__include_8h.js create mode 100644 Doc/html/mylibs__include_8h__incl.map create mode 100644 Doc/html/mylibs__include_8h__incl.md5 create mode 100644 Doc/html/mylibs__include_8h__incl.png create mode 100644 Doc/html/navtreeindex1.js create mode 100644 Doc/html/search/all_11.js create mode 100644 Doc/html/search/all_12.js create mode 100644 Doc/html/search/all_13.js create mode 100644 Doc/html/search/all_14.js create mode 100644 Doc/html/search/all_15.js create mode 100644 Doc/html/search/all_16.js create mode 100644 Doc/html/search/all_17.js create mode 100644 Doc/html/search/all_18.js create mode 100644 Doc/html/search/all_19.js create mode 100644 Doc/html/search/all_1a.js create mode 100644 Doc/html/search/all_1b.js delete mode 100644 Doc/html/search/classes_6.js delete mode 100644 Doc/html/search/classes_7.js create mode 100644 Doc/html/search/enums_1.js create mode 100644 Doc/html/search/enumvalues_1.js create mode 100644 Doc/html/search/files_3.js create mode 100644 Doc/html/search/functions_3.js create mode 100644 Doc/html/search/groups_10.js create mode 100644 Doc/html/search/pages_0.js create mode 100644 Doc/html/search/pages_1.js create mode 100644 Doc/html/search/pages_2.js create mode 100644 Doc/html/search/pages_3.js create mode 100644 Doc/html/search/pages_4.js create mode 100644 Doc/html/search/pages_5.js create mode 100644 Doc/html/search/pages_6.js create mode 100644 Doc/html/search/pages_7.js create mode 100644 Doc/html/search/pages_8.js create mode 100644 Doc/html/search/pages_9.js create mode 100644 Doc/html/search/pages_a.js create mode 100644 Doc/html/search/pages_b.js create mode 100644 Doc/html/search/pages_c.js create mode 100644 Doc/html/search/variables_6.js create mode 100644 Doc/html/search/variables_7.js create mode 100644 Doc/html/search/variables_8.js delete mode 100644 Doc/html/struct_a_d_c___tracker_type_def-members.html delete mode 100644 Doc/html/struct_a_d_c___tracker_type_def.html delete mode 100644 Doc/html/struct_a_d_c_channel___tracker_type_def-members.html delete mode 100644 Doc/html/struct_a_d_c_channel___tracker_type_def.html delete mode 100644 Doc/html/struct_m_z_k_t___discrete_inputs_type_def-members.html delete mode 100644 Doc/html/struct_m_z_k_t___discrete_inputs_type_def.html delete mode 100644 Doc/html/struct_m_z_k_t___l_e_ds_type_def-members.html delete mode 100644 Doc/html/struct_m_z_k_t___l_e_ds_type_def.html delete mode 100644 Doc/html/struct_measure___tracker_type_def-members.html delete mode 100644 Doc/html/struct_measure___tracker_type_def.html delete mode 100644 Doc/html/struct_measure_handle___tracker_type_def-members.html delete mode 100644 Doc/html/struct_measure_handle___tracker_type_def.html delete mode 100644 Doc/html/struct_r_s___tracker_type_def.html create mode 100644 Doc/html/struct_t_i_m___encoder_type_def.js create mode 100644 Doc/html/struct_t_i_m___encoder_type_def__coll__graph.map create mode 100644 Doc/html/struct_t_i_m___encoder_type_def__coll__graph.md5 create mode 100644 Doc/html/struct_t_i_m___encoder_type_def__coll__graph.png create mode 100644 Doc/html/struct_t_i_m___settings_type_def.js create mode 100644 Doc/html/trace_8h__dep__incl.map create mode 100644 Doc/html/trace_8h__dep__incl.md5 create mode 100644 Doc/html/trace_8h__dep__incl.png create mode 100644 Doc/html/trace_8h__incl.map create mode 100644 Doc/html/trace_8h__incl.md5 create mode 100644 Doc/html/trace_8h__incl.png create mode 100644 Doc/html/trackers_8h__dep__incl.map create mode 100644 Doc/html/trackers_8h__dep__incl.md5 create mode 100644 Doc/html/trackers_8h__dep__incl.png create mode 100644 Doc/html/trackers_8h__incl.map create mode 100644 Doc/html/trackers_8h__incl.md5 create mode 100644 Doc/html/trackers_8h__incl.png delete mode 100644 Doc/latex/____general__tim_8c_source.tex delete mode 100644 Doc/latex/____general__tim_8h_source.tex create mode 100644 Doc/latex/bit__access_8h.tex create mode 100644 Doc/latex/bit__access_8h__dep__incl.md5 create mode 100644 Doc/latex/bit__access_8h__dep__incl.pdf create mode 100644 Doc/latex/bit__access_8h__incl.md5 create mode 100644 Doc/latex/bit__access_8h__incl.pdf create mode 100644 Doc/latex/general__gpio_8c__incl.md5 create mode 100644 Doc/latex/general__gpio_8c__incl.pdf create mode 100644 Doc/latex/general__gpio_8h__dep__incl.md5 create mode 100644 Doc/latex/general__gpio_8h__dep__incl.pdf create mode 100644 Doc/latex/general__gpio_8h__incl.md5 create mode 100644 Doc/latex/general__gpio_8h__incl.pdf create mode 100644 Doc/latex/general__tim_8c.tex create mode 100644 Doc/latex/general__tim_8c__incl.md5 create mode 100644 Doc/latex/general__tim_8c__incl.pdf create mode 100644 Doc/latex/general__tim_8c_source.tex create mode 100644 Doc/latex/general__tim_8h.tex create mode 100644 Doc/latex/general__tim_8h__dep__incl.md5 create mode 100644 Doc/latex/general__tim_8h__dep__incl.pdf create mode 100644 Doc/latex/general__tim_8h__incl.md5 create mode 100644 Doc/latex/general__tim_8h__incl.pdf create mode 100644 Doc/latex/general__tim_8h_source.tex create mode 100644 Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf create mode 100644 Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf create mode 100644 Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 create mode 100644 Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf create mode 100644 Doc/latex/group___g_p_i_o___i_n_i_t.md5 create mode 100644 Doc/latex/group___g_p_i_o___i_n_i_t.pdf create mode 100644 Doc/latex/group___l_i_b_s___c_o_n_f_i_g.md5 create mode 100644 Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf create mode 100644 Doc/latex/group___m_y___l_i_b_s___g_p_i_o.md5 create mode 100644 Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf create mode 100644 Doc/latex/group___m_y___l_i_b_s___t_i_m.md5 create mode 100644 Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf create mode 100644 Doc/latex/group___m_y___l_i_b_s___t_i_m.tex create mode 100644 Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf rename Doc/latex/{group___g_p_i_o___g_e_n_e_r_a_l.tex => group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex} (59%) create mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf rename Doc/latex/{group___g_p_i_o___l_e_d_s.tex => group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex} (57%) create mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf rename Doc/latex/{group___g_p_i_o___s_w_i_t_c_h.tex => group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex} (60%) create mode 100644 Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.md5 create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf create mode 100644 Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex create mode 100644 Doc/latex/group___t_i_m___i_n_i_t.md5 create mode 100644 Doc/latex/group___t_i_m___i_n_i_t.pdf create mode 100644 Doc/latex/group___t_i_m___i_n_i_t.tex create mode 100644 Doc/latex/group___t_r_a_c_e.md5 create mode 100644 Doc/latex/group___t_r_a_c_e.pdf create mode 100644 Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.md5 create mode 100644 Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf create mode 100644 Doc/latex/group___t_r_a_c_e___g_p_i_o.md5 create mode 100644 Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf create mode 100644 Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.md5 create mode 100644 Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf create mode 100644 Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.md5 create mode 100644 Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf create mode 100644 Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.md5 create mode 100644 Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf create mode 100644 Doc/latex/group___t_r_a_c_k_e_r_s.md5 create mode 100644 Doc/latex/group___t_r_a_c_k_e_r_s.pdf create mode 100644 Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 create mode 100644 Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf create mode 100644 Doc/latex/index.tex create mode 100644 Doc/latex/mylibs__config_8h__dep__incl.md5 create mode 100644 Doc/latex/mylibs__config_8h__dep__incl.pdf create mode 100644 Doc/latex/mylibs__config_8h__incl.md5 create mode 100644 Doc/latex/mylibs__config_8h__incl.pdf create mode 100644 Doc/latex/mylibs__defs_8h__dep__incl.md5 create mode 100644 Doc/latex/mylibs__defs_8h__dep__incl.pdf create mode 100644 Doc/latex/mylibs__defs_8h__incl.md5 create mode 100644 Doc/latex/mylibs__defs_8h__incl.pdf create mode 100644 Doc/latex/mylibs__include_8h__incl.md5 create mode 100644 Doc/latex/mylibs__include_8h__incl.pdf delete mode 100644 Doc/latex/struct_a_d_c___tracker_type_def.tex delete mode 100644 Doc/latex/struct_a_d_c_channel___tracker_type_def.tex delete mode 100644 Doc/latex/struct_m_z_k_t___discrete_inputs_type_def.tex delete mode 100644 Doc/latex/struct_m_z_k_t___l_e_ds_type_def.tex delete mode 100644 Doc/latex/struct_measure___tracker_type_def.tex delete mode 100644 Doc/latex/struct_measure_handle___tracker_type_def.tex delete mode 100644 Doc/latex/struct_r_s___tracker_type_def.tex create mode 100644 Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.md5 create mode 100644 Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf create mode 100644 Doc/latex/trace_8h__dep__incl.md5 create mode 100644 Doc/latex/trace_8h__dep__incl.pdf create mode 100644 Doc/latex/trace_8h__incl.md5 create mode 100644 Doc/latex/trace_8h__incl.pdf create mode 100644 Doc/latex/trackers_8h__dep__incl.md5 create mode 100644 Doc/latex/trackers_8h__dep__incl.pdf create mode 100644 Doc/latex/trackers_8h__incl.md5 create mode 100644 Doc/latex/trackers_8h__incl.pdf delete mode 100644 MyLibsGeneral/Inc/__general_tim.h create mode 100644 MyLibsGeneral/Inc/general_tim.h rename MyLibsGeneral/Src/{__general_tim.c => general_tim.c} (67%) diff --git a/Doc/Documentation.lnk b/Doc/Documentation.lnk new file mode 100644 index 0000000000000000000000000000000000000000..65f9ac363b4026b4c21b926004946a61a43b206f GIT binary patch literal 1513 zcmcIkTS${(7=APfEz3>jG0hPLmAE{R*hm^Sb=Y*aNgLY_F5SRco3m}P7GXC*h>{RN z5r#>B<1PY^0e+tKufi$eVcx~!+jhh=TD(J@C@HUd0jTwjDKmj9k z(Bl-H%Mjz!TeMaQ3~kL-m2tjR)2^F(i}NY-)fF>eBxF*e<5$je7|@1hRH2ggWbjA* z(_5szC|`TM-)nc->^7~V!vma&ddn6KmW48A{~b&x$w(Z30xuKT+fh&KUfAJ+jie1) zIM4y2#6C2|?S=yqsCzn56StG;Gg#h>b}o;xjegE zl2sw84~MBLN;+HbDj}g}iTc0mCq%O^#3Qpt{2npU%)@5)ob&d$%iJD!_0isL^yjTj zYx|b!h9*byBsGq~{K6Z)ir{zY{YzoZ^eg#)&-YU!X8NVk+fe}(q< z@&&e5P1uSmCGQBf3LGP_V-vYf_1K_W^H`%&JgD^#6w`heU(gUnXIs9p4n%*Bq+KKM jL#=7~^Ytln(~P{&tey*ga?t*Ef*4UL&07%>^CynKnSvwo literal 0 HcmV?d00001 diff --git a/Doc/Doxyfile b/Doc/Doxyfile index ac3b5d3..ba9121b 100644 --- a/Doc/Doxyfile +++ b/Doc/Doxyfile @@ -2619,7 +2619,7 @@ HIDE_UNDOC_RELATIONS = YES # set to NO # The default value is: NO. -HAVE_DOT = NO +HAVE_DOT = YES # The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed # to run in parallel. When set to 0 Doxygen will base this on the number of diff --git a/Doc/html/____general__flash_8h_source.html b/Doc/html/____general__flash_8h_source.html index 8c2819b..463e16a 100644 --- a/Doc/html/____general__flash_8h_source.html +++ b/Doc/html/____general__flash_8h_source.html @@ -100,10 +100,10 @@ $(function(){initNavTree('____general__flash_8h_source.html','',''); });
__general_flash.h
-
1/*********************************UART**************************************
-
2Данный файл содержит объявления базовых функции и дефайны для инициализации
-
3UART.
-
4***************************************************************************/
+
1/**************************************************************************
+
2* @file general_flash.h
+
3* @brief Заголовочны файл модуля работы с FLASH.
+
4*************************************************************************/
5#ifndef __FLASH_GENERAL_H_
6#define __FLASH_GENERAL_H_
7
@@ -143,25 +143,7 @@ $(function(){initNavTree('____general__flash_8h_source.html','',''); });
41HAL_StatusTypeDef FLASH_Write_Word(uint32_t Address, uint32_t Data);
42///////////////////////////---FUNCTIONS---///////////////////////////
43
-
44#ifndef LED_PWM_TICKS
-
45#define LED_PWM_TICKS 15
-
46#endif
-
47
-
48#ifndef LED_ON
-
49#define LED_ON 1
-
50#endif
-
51#ifndef LED_OFF
-
52#define LED_OFF 0
-
53#endif
-
54
-
55#ifndef SW_ON
-
56#define SW_ON 1
-
57#endif
-
58#ifndef SW_OFF
-
59#define SW_OFF 0
-
60#endif
-
61
-
62#endif // __FLASH_GENERAL_H_
+
44#endif // __FLASH_GENERAL_H_
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
diff --git a/Doc/html/____general__spi_8c_source.html b/Doc/html/____general__spi_8c_source.html index 5121ef3..ad92bfa 100644 --- a/Doc/html/____general__spi_8c_source.html +++ b/Doc/html/____general__spi_8c_source.html @@ -101,22 +101,22 @@ $(function(){initNavTree('____general__spi_8c_source.html','',''); });
1/**
-
2 **************************************************************************
-
3 * @file general_spi.c
-
4 * @brief Модуль для инициализации SPI.
-
5 **************************************************************************
-
6 * //-------------------Функции-------------------//
-
7 * @verbatim
-
8 * Functions: users
-
9 * - SPI_Base_Init Инициализация SPI
-
10 *
-
11 * Functions: spi initialize
-
12 * - SPI_GPIO_Init Инициализация GPIO для SPI
-
13 * - SPI_DMA_Init Инициализация DMA для SPI
-
14 * - SPI_MspInit Аналог HAL_MspInit для SPI
-
15 * - SPI_MspDeInit Аналог HAL_MspDeInit для SPI
-
16 * @endverbatim
-
17 *************************************************************************/
+
2**************************************************************************
+
3* @file general_spi.c
+
4* @brief Модуль для инициализации SPI.
+
5**************************************************************************
+
6* @details
+
7*
+
8* Функции:
+
9* - SPI_Base_Init Инициализация SPI
+
10*
+
11* Functions: spi initialize
+
12* - SPI_GPIO_Init Инициализация GPIO для SPI
+
13* - SPI_DMA_Init Инициализация DMA для SPI
+
14* - SPI_MspInit Аналог HAL_MspInit для SPI
+
15* - SPI_MspDeInit Аналог HAL_MspDeInit для SPI
+
16*
+
17*************************************************************************/
18#include "general_spi.h"
19#include "general_gpio.h"
20
@@ -164,9 +164,9 @@ $(function(){initNavTree('____general__spi_8c_source.html','',''); });
62{
63 GPIO_InitTypeDef GPIO_InitStruct = {0};
64 // GPIO INIT
-
65 GPIO_Clock_Enable(sspi->CLK_GPIOx);
-
66 GPIO_Clock_Enable(sspi->MISO_GPIOx);
-
67 GPIO_Clock_Enable(sspi->MOSI_GPIOx);
+
65 GPIO_Clock_Enable(sspi->CLK_GPIOx);
+
66 GPIO_Clock_Enable(sspi->MISO_GPIOx);
+
67 GPIO_Clock_Enable(sspi->MOSI_GPIOx);
68 // CLK PIN INIT
69 GPIO_InitStruct.Pin = sspi->CLK_PIN;
70 GPIO_InitStruct.Alternate = sspi->CLK_GPIO_AlternageFunc;
@@ -392,9 +392,9 @@ $(function(){initNavTree('____general__spi_8c_source.html','',''); });
290
291 return HAL_OK;
292}
-
Заголовочный файл для модуля инициализации портов.
+
Заголовочный файл для модуля инициализации портов и работы с ними.
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
Definition mylibs_defs.h:31
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
+
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
diff --git a/Doc/html/____general__spi_8h_source.html b/Doc/html/____general__spi_8h_source.html index da603d4..e83c1f2 100644 --- a/Doc/html/____general__spi_8h_source.html +++ b/Doc/html/____general__spi_8h_source.html @@ -101,10 +101,10 @@ $(function(){initNavTree('____general__spi_8h_source.html','',''); });
1/**
-
2 **************************************************************************
-
3 * @file general_spi.h
-
4 * @brief Заголовочны файл модуля инициализации SPI.
-
5 *************************************************************************/
+
2**************************************************************************
+
3* @file general_spi.h
+
4* @brief Заголовочны файл модуля инициализации SPI.
+
5*************************************************************************/
6#ifndef __SPI_GENERAL_H_
7#define __SPI_GENERAL_H_
8
diff --git a/Doc/html/____general__tim_8c_source.html b/Doc/html/____general__tim_8c_source.html deleted file mode 100644 index 89d95ce..0000000 --- a/Doc/html/____general__tim_8c_source.html +++ /dev/null @@ -1,777 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_tim.c Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
__general_tim.c
-
-
-
1/**
-
2 **************************************************************************
-
3 * @file general_tim.c
-
4 * @brief Модуль для инициализации таймеров.
-
5 **************************************************************************
-
6 @verbatim
-
7 //-------------------Функции-------------------//
-
8 Functions: user init
-
9 - TIM_Base_Init Инициализация TIM
-
10 - TIM_Encoder_Init Инициализация режима энкодера
-
11 - TIM_Output_PWM_Init Инициализация PWM с выводом на GPIO
-
12 - TIM_OC_Comparator_Init Инициализация TIM как компаратора
-
13
-
14 Functions: user
-
15 - TIM_Delay Задержка с помощью TIM
-
16
-
17 Functions: tim initialize
-
18 - TIM_Base_MspInit Аналог HAL_MspInit для таймера
-
19 - TIM_Base_MspDeInit Аналог HAL_MspDeInit для таймера
-
20 @endverbatim
-
21 *************************************************************************/
-
22#include "general_tim.h"
-
23#include "general_gpio.h"
-
24
-
25//-------------------------------------------------------------------
-
26//-------------------------TIM INIT FUNCTIONS------------------------
-
27/**
-
28 * @brief Initialize TIM with TIM_SettingsTypeDef structure.
-
29 * @param stim - указатель на структуру с настройками таймера.
-
30 * @return HAL status.
-
31 * @note Данная структура содержит хендл таймера и структуры для его настройки.
-
32 */
-
33HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
-
34{ // function takes structure for init
-
35 // check that htim is defined
-
36 if (stim->htim.Instance == NULL)
-
37 return HAL_ERROR;
-
38
-
39
-
40
-
41 if(stim->sTickBaseUS) // if tickbase isnt disable
-
42 {
-
43 if(stim->sTimAHBFreqMHz == NULL)
-
44 return HAL_ERROR;
-
45 stim->htim.Init.Prescaler = (stim->sTimAHBFreqMHz*stim->sTickBaseUS) - 1;
-
46
-
47 if ((stim->sTimFreqHz != NULL))
-
48 stim->htim.Init.Period = ((1000000/stim->sTickBaseUS) / stim->sTimFreqHz) - 1;
-
49 else if (stim->htim.Init.Period == NULL)
-
50 stim->htim.Init.Period = 0xFFFF;
-
51
-
52 if(stim->sTickBasePrescaler)
-
53 {
-
54 stim->htim.Init.Prescaler = (stim->htim.Init.Prescaler + 1)/stim->sTickBasePrescaler - 1;
-
55 stim->htim.Init.Period = (stim->htim.Init.Period + 1)*stim->sTickBasePrescaler - 1;
-
56 }
-
57 else
-
58 stim->sTickBasePrescaler = 1;
-
59 }
-
60
-
61 // fix overflow of presc and period if need
-
62 for(int i = 0; (stim->htim.Init.Prescaler > 0xFFFF) || (stim->htim.Init.Period > 0xFFFF); i++)
-
63 {
-
64 if (i>10) // if it isnt fixed after 10 itteration - return HAL_ERRPOR
-
65 {
-
66 return HAL_ERROR;
-
67 }
-
68
-
69 // if timbase is too big (prescaller too big for choosen base from MHZ)
-
70 if(stim->htim.Init.Prescaler > 0xFFFF)
-
71 {
-
72 // переносим часть пресскалера в период
-
73 stim->htim.Init.Prescaler = ((stim->htim.Init.Prescaler + 1)/2) - 1;
-
74 stim->htim.Init.Period = ((stim->htim.Init.Period + 1)*2) - 1;
-
75 // обновляем TickBase, если есть куда обновлять
-
76 if(stim->sTickBaseUS > 1)
-
77 stim->sTickBaseUS /= 2;
-
78 // обновляем sTickBasePrescaler, если sTickBaseUS - уже в минимуме
-
79 else if (stim->sTickBaseUS == 1)
-
80 stim->sTickBasePrescaler *= 2;
-
81 else // if TickBase = 0 - return error
-
82 return HAL_ERROR;
-
83 }
-
84 // if freq is too low (period too big for choosen base)
-
85 if(stim->htim.Init.Period > 0xFFFF)
-
86 {
-
87 // переносим часть периода в прескалер
-
88 stim->htim.Init.Period = ((stim->htim.Init.Period + 1)/2) - 1;
-
89 stim->htim.Init.Prescaler = ((stim->htim.Init.Prescaler + 1)*2) - 1;
-
90 // обновляем TickBase
-
91 stim->sTickBaseUS *= 2;
-
92 }
-
93 }
-
94
-
95 //-------------TIM BASE INIT----------------
-
96 // tim base init
-
97 TIM_Base_MspInit(&stim->htim, stim->sTimMode);
-
98 if (HAL_TIM_Base_Init(&stim->htim) != HAL_OK)
-
99 {
- -
101 return HAL_ERROR;
-
102 }
-
103
-
104 //-------------CLOCK SRC INIT---------------
-
105 // fill sClockSourceConfig if its NULL
-
106 if (stim->sClockSourceConfig.ClockSource == NULL)
-
107 stim->sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
-
108 // clock source init
-
109 if (HAL_TIM_ConfigClockSource(&stim->htim, &stim->sClockSourceConfig) != HAL_OK)
-
110 {
- -
112 return HAL_ERROR;
-
113 }
-
114
-
115 //--------------SLAVE INIT------------------
-
116 // if slave mode enables - config it
-
117 if (stim->sSlaveConfig.SlaveMode)
-
118 {
-
119 // slave mode init
-
120 if (HAL_TIM_SlaveConfigSynchro(&stim->htim, &stim->sSlaveConfig) != HAL_OK)
-
121 {
- -
123 return HAL_ERROR;
-
124 }
-
125 }
-
126 //--------------MASTER INIT-----------------
-
127 // master mode init
-
128 if (HAL_TIMEx_MasterConfigSynchronization(&stim->htim, &stim->sMasterConfig) != HAL_OK)
-
129 {
- -
131 return HAL_ERROR;
-
132 }
-
133
-
134 //--------------BDTR INIT-----------------
-
135 if (HAL_TIMEx_ConfigBreakDeadTime(&stim->htim, &stim->sBreakDeadTimeConfig) != HAL_OK)
-
136 {
- -
138 return HAL_ERROR;
-
139 }
-
140
-
141 //----------------IT CLEAR-------------------
-
142 __HAL_TIM_CLEAR_IT(&stim->htim, TIM_IT_UPDATE);
-
143
-
144
-
145 // обновляем TickBase
-
146 #ifdef UPDATE_TIM_PARAMS_AFTER_INITIALIZATION
-
147 stim->sTickBaseUS = (stim->htim.Instance->PSC+1)*stim->sTickBasePrescaler/(stim->sTimAHBFreqMHz);
-
148 if(stim->sTickBaseUS == 0) // if prescaler is too high
-
149 { // recalc what is prescaler irl
-
150 stim->sTickBaseUS = 1;
-
151 stim->sTickBasePrescaler = stim->sTimAHBFreqMHz/(stim->htim.Instance->PSC+1);
-
152 }
-
153 #endif
-
154 stim->htim.Instance->CNT = 0;
-
155 return HAL_OK;
-
156}
-
157
-
158
-
159
-
160/**
-
161 * @brief Initialize TIM Encoder functional.
-
162 * @param htim - указатель на хендл таймера.
-
163 * @param sConfigOC - указатель на настрйоки канала таймера.
-
164 * @param GPIOx - порт для приема енкодера.
-
165 * @param GPIO_PIN1 - первый пин для енкодера.
-
166 * @param GPIO_PIN2 - второй пин для енкодера.
-
167 * @param GPIO_PIN_SW - пин для кнопки енкодера.
-
168 * @return HAL status.
-
169 */
-
170HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim)
-
171{
-
172 GPIO_InitTypeDef GPIO_InitStruct = {0};
-
173 HAL_StatusTypeDef RES = HAL_ERROR;
-
174 henc->htim = htim;
-
175
-
176 // setup channel for pwm
-
177 RES = HAL_TIM_Encoder_Init(henc->htim, &henc->sConfig);
-
178 if (RES != HAL_OK)
-
179 {
- -
181 return RES;
-
182 }
-
183 // choose port for enable clock
-
184 RES = GPIO_Clock_Enable(henc->GPIOx);
-
185 if(RES != HAL_OK)
-
186 {
- -
188 return RES;
-
189 }
-
190
-
191 GPIO_InitStruct.Pin = henc->GPIO_PIN_TI1|henc->GPIO_PIN_TI2;
-
192 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
193 GPIO_InitStruct.Pull = GPIO_PULLUP;
-
194 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
195 GPIO_InitStruct.Alternate = TIM_Alternate_Mapping(henc->htim->Instance);
-
196 if(GPIO_InitStruct.Alternate)
-
197 HAL_GPIO_Init(henc->GPIOx, &GPIO_InitStruct);
-
198
-
199 if(henc->GPIO_PIN_SW)
-
200 {
-
201 /*Configure switch pin */
-
202 GPIO_InitStruct.Pin = henc->GPIO_PIN_SW;
-
203 GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-
204 GPIO_InitStruct.Pull = GPIO_PULLUP;
-
205 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
206 }
-
207
-
208 return HAL_OK;
-
209}
-
210
-
211/**
-
212 * @brief Initialize PWM Channel and GPIO for output.
-
213 * @param htim - указатель на хендл таймера.
-
214 * @param sConfigOC - указатель на настрйоки канала таймера.
-
215 * @param TIM_CHANNEL - канал таймера для настройки.
-
216 * @param GPIOx - порт для вывода ШИМ.
-
217 * @param GPIO_PIN - пин для вывода ШИМ.
-
218 * @return HAL status.
-
219 */
-
220HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)
-
221{
-
222 GPIO_InitTypeDef GPIO_InitStruct = {0};
-
223 HAL_StatusTypeDef RES = HAL_ERROR;
-
224
-
225 // setup channel for pwm
-
226 RES = HAL_TIM_PWM_ConfigChannel(htim, sConfigOC, TIM_CHANNEL);
-
227 if (RES != HAL_OK)
-
228 {
- -
230 return RES;
-
231 }
-
232 // choose port for enable clock
-
233 RES = GPIO_Clock_Enable(GPIOx);
-
234 if(RES != HAL_OK)
-
235 {
- -
237 return RES;
-
238 }
-
239
-
240 GPIO_InitStruct.Pin = GPIO_PIN;
-
241 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
242 if(sConfigOC->OCPolarity == TIM_OCNPOLARITY_HIGH)
-
243 GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-
244 else
-
245 GPIO_InitStruct.Pull = GPIO_PULLUP;
-
246 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
247 GPIO_InitStruct.Alternate = TIM_Alternate_Mapping(htim->Instance);
-
248 if(GPIO_InitStruct.Alternate)
-
249 HAL_GPIO_Init(GPIOx, &GPIO_InitStruct);
-
250
-
251 return HAL_OK;
-
252}
-
253
-
254/**
-
255 * @brief Initialize OC Comparator.
-
256 * @param htim - указатель на хендл таймера.
-
257 * @param TIM_CHANNEL - канал таймера для настройки.
-
258 * @return HAL status.
-
259 */
-
260HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
-
261{
-
262 TIM_OC_InitTypeDef sConfigOC = {0};
-
263 HAL_StatusTypeDef RES = HAL_ERROR;
-
264
-
265 sConfigOC.OCMode = TIM_OCMODE_ACTIVE;
-
266 sConfigOC.Pulse = 0;
-
267 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
-
268
-
269 RES = HAL_TIM_OC_ConfigChannel(htim, &sConfigOC, TIM_CHANNEL);
-
270 if (RES != HAL_OK)
-
271 {
- -
273 return RES;
-
274 }
-
275 return RES;
-
276}
-
277
-
278
-
279
-
280//-------------------------------------------------------------------
-
281//-------------------------TIM USER FUNCTIONS------------------------
-
282/**
-
283 * @brief Delay via TIM.
-
284 * @param htim - указатель на хендл таймера.
-
285 * @param delay - задержка в тиках таймера.
-
286 * @return HAL status.
-
287 * @note Таймер должен быть уже запущен.
-
288 */
-
289HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)
-
290{
-
291 if(delay >= htim->Instance->ARR)
-
292 {
-
293 return HAL_ERROR;
-
294 }
-
295 htim->Instance->CNT = 0;
-
296 while(1)
-
297 {
-
298 if(htim->Instance->CNT > delay)
-
299 {
-
300 return HAL_OK;
-
301 }
-
302 }
-
303}
-
304
-
305/**
-
306 * @brief Start delay via TIM.
-
307 * @param htim - указатель на хендл таймера.
-
308 * @return HAL status.
-
309 * @note Таймер должен быть уже запущен.
-
310 */
-
311HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim)
-
312{
-
313 htim->Instance->CNT = 0;
-
314
-
315 return HAL_OK;
-
316}
-
317
-
318/**
-
319 * @brief Wait Delay via TIM without blocking app.
-
320 * @param htim - указатель на хендл таймера.
-
321 * @param delay - задержка в тиках таймера.
-
322 * @return HAL status.
-
323 * @note Перед ожиданием задержки надо запутстить таймер её @ref TIM_Delay_Start
-
324 * @note Таймер не должен использоваться на время этой задержки
-
325 */
-
326HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)
-
327{
-
328 if(delay >= htim->Instance->ARR)
-
329 {
-
330 return HAL_ERROR;
-
331 }
-
332
-
333 if(htim->Instance->CNT <= delay)
-
334 {
-
335 return HAL_BUSY;
-
336 }
-
337 else
-
338 {
-
339 return HAL_OK;
-
340 }
-
341}
-
342
-
343/**
-
344 * @brief Initialize TIMs clock and interrupt.
-
345 * @param htim - указатель на хендл таймера.
-
346 * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых таймеров,
-
347 дефайнами в general_tim.h определяются используемые таймеры.
-
348 */
-
349void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode)
-
350{
-
351 it_mode = it_mode&TIM_IT_CONF;
-
352#ifdef USE_TIM1
-
353 if(htim->Instance==TIM1)
-
354 {
-
355 /* TIM2 clock enable */
-
356 __HAL_RCC_TIM1_CLK_ENABLE();
-
357
-
358 /* TIM2 interrupt Init */
-
359 if(it_mode)
-
360 {
-
361 HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0);
-
362 HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);
-
363 }
-
364 }
-
365#endif
-
366#ifdef USE_TIM2
-
367 if(htim->Instance==TIM2)
-
368 {
-
369 /* TIM2 clock enable */
-
370 __HAL_RCC_TIM2_CLK_ENABLE();
-
371
-
372 /* TIM2 interrupt Init */
-
373 if(it_mode)
-
374 {
-
375 HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
-
376 HAL_NVIC_EnableIRQ(TIM2_IRQn);
-
377 }
-
378 }
-
379#endif
-
380#ifdef USE_TIM3
-
381 if(htim->Instance==TIM3)
-
382 {
-
383 /* TIM3 clock enable */
-
384 __HAL_RCC_TIM3_CLK_ENABLE();
-
385
-
386 /* TIM3 interrupt Init */
-
387 if(it_mode)
-
388 {
-
389 HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
-
390 HAL_NVIC_EnableIRQ(TIM3_IRQn);
-
391 }
-
392 }
-
393#endif
-
394#ifdef USE_TIM4
-
395 if(htim->Instance==TIM4)
-
396 {
-
397 /* TIM4 clock enable */
-
398 __HAL_RCC_TIM4_CLK_ENABLE();
-
399
-
400 /* TIM4 interrupt Init */
-
401 if(it_mode)
-
402 {
-
403 HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0);
-
404 HAL_NVIC_EnableIRQ(TIM4_IRQn);
-
405 }
-
406 }
-
407#endif
-
408#ifdef USE_TIM5
-
409 if(htim->Instance==TIM5)
-
410 {
-
411 /* TIM5 clock enable */
-
412 __HAL_RCC_TIM5_CLK_ENABLE();
-
413
-
414 /* TIM5 interrupt Init */
-
415 if(it_mode)
-
416 {
-
417 HAL_NVIC_SetPriority(TIM5_IRQn, 0, 0);
-
418 HAL_NVIC_EnableIRQ(TIM5_IRQn);
-
419 }
-
420 }
-
421#endif
-
422#ifdef USE_TIM6
-
423 if(htim->Instance==TIM6)
-
424 {
-
425 /* TIM6 clock enable */
-
426 __HAL_RCC_TIM6_CLK_ENABLE();
-
427
-
428 /* TIM6 interrupt Init */
-
429 if(it_mode)
-
430 {
-
431 HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);
-
432 HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
-
433 }
-
434 }
-
435#endif
-
436#ifdef USE_TIM7
-
437 if(htim->Instance==TIM7)
-
438 {
-
439 /* TIM7 clock enable */
-
440 __HAL_RCC_TIM7_CLK_ENABLE();
-
441
-
442 /* TIM7 interrupt Init */
-
443 if(it_mode)
-
444 {
-
445 HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0);
-
446 HAL_NVIC_EnableIRQ(TIM7_IRQn);
-
447 }
-
448 }
-
449#endif
-
450#ifdef USE_TIM8
-
451 if(htim->Instance==TIM8)
-
452 {
-
453 /* TIM8 clock enable */
-
454 __HAL_RCC_TIM8_CLK_ENABLE();
-
455
-
456 /* TIM8 interrupt Init */
-
457 if(it_mode)
-
458 {
-
459 HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0);
-
460 HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn);
-
461 }
-
462 }
-
463#endif
-
464#ifdef USE_TIM9
-
465 if(htim->Instance==TIM9)
-
466 {
-
467 /* TIM9 clock enable */
-
468 __HAL_RCC_TIM9_CLK_ENABLE();
-
469
-
470 /* TIM9 interrupt Init */
-
471 if(it_mode)
-
472 {
-
473 HAL_NVIC_SetPriority(TIM1_BRK_TIM9_IRQn, 0, 0);
-
474 HAL_NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn);
-
475 }
-
476 }
-
477#endif
-
478#ifdef USE_TIM10
-
479 if(htim->Instance==TIM10)
-
480 {
-
481 /* TIM10 clock enable */
-
482 __HAL_RCC_TIM10_CLK_ENABLE();
-
483
-
484 /* TIM10 interrupt Init */
-
485 if(it_mode)
-
486 {
-
487 HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0);
-
488 HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);
-
489 }
-
490 }
-
491#endif
-
492#ifdef USE_TIM11
-
493 if(htim->Instance==TIM11)
-
494 {
-
495 /* TIM11 clock enable */
-
496 __HAL_RCC_TIM11_CLK_ENABLE();
-
497
-
498 /* TIM11 interrupt Init */
-
499 if(it_mode)
-
500 {
-
501 HAL_NVIC_SetPriority(TIM1_TRG_COM_TIM11_IRQn, 0, 0);
-
502 HAL_NVIC_EnableIRQ(TIM1_TRG_COM_TIM11_IRQn);
-
503 }
-
504 }
-
505#endif
-
506#ifdef USE_TIM12
-
507 if(htim->Instance==TIM12)
-
508 {
-
509 /* TIM12 clock enable */
-
510 __HAL_RCC_TIM12_CLK_ENABLE();
-
511
-
512 /* TIM12 interrupt Init */
-
513 if(it_mode)
-
514 {
-
515 HAL_NVIC_SetPriority(TIM8_BRK_TIM12_IRQn, 0, 0);
-
516 HAL_NVIC_EnableIRQ(TIM8_BRK_TIM12_IRQn);
-
517 }
-
518 }
-
519#endif
-
520#ifdef USE_TIM13
-
521 if(htim->Instance==TIM13)
-
522 {
-
523 /* TIM13 clock enable */
-
524 __HAL_RCC_TIM13_CLK_ENABLE();
-
525
-
526 /* TIM13 interrupt Init */
-
527 if(it_mode)
-
528 {
-
529 HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0);
-
530 HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn);
-
531 }
-
532 }
-
533#endif
-
534#ifdef USE_TIM14
-
535 if(htim->Instance==TIM14)
-
536 {
-
537 /* TIM14 clock enable */
-
538 __HAL_RCC_TIM14_CLK_ENABLE();
-
539
-
540 /* TIM14 interrupt Init */
-
541 if(it_mode)
-
542 {
-
543 HAL_NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 0, 0);
-
544 HAL_NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn);
-
545 }
-
546 }
-
547#endif
-
548}
-
549/**
-
550 * @brief DeInitialize TIMs clock and interrupt.
-
551 * @param htim - указатель на хендл таймера.
-
552 * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых таймеров,
-
553 дефайнами в general_tim.h определяются используемые таймеры.
-
554 */
-
555void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim)
-
556{
-
557#ifdef USE_TIM1
-
558 if(htim->Instance==TIM1)
-
559 {
-
560 __HAL_RCC_TIM1_FORCE_RESET();
-
561 __HAL_RCC_TIM1_RELEASE_RESET();
-
562 }
-
563#endif
-
564#ifdef USE_TIM2
-
565 if(htim->Instance==TIM2)
-
566 {
-
567 __HAL_RCC_TIM2_FORCE_RESET();
-
568 __HAL_RCC_TIM2_RELEASE_RESET();
-
569 }
-
570#endif
-
571#ifdef USE_TIM3
-
572 if(htim->Instance==TIM3)
-
573 {
-
574 __HAL_RCC_TIM3_FORCE_RESET();
-
575 __HAL_RCC_TIM3_RELEASE_RESET();
-
576 }
-
577#endif
-
578#ifdef USE_TIM4
-
579 if(htim->Instance==TIM4)
-
580 {
-
581 __HAL_RCC_TIM4_FORCE_RESET();
-
582 __HAL_RCC_TIM4_RELEASE_RESET();
-
583 }
-
584#endif
-
585#ifdef USE_TIM5
-
586 if(htim->Instance==TIM5)
-
587 {
-
588 __HAL_RCC_TIM5_FORCE_RESET();
-
589 __HAL_RCC_TIM5_RELEASE_RESET();
-
590 }
-
591#endif
-
592#ifdef USE_TIM6
-
593 if(htim->Instance==TIM6)
-
594 {
-
595 __HAL_RCC_TIM6_FORCE_RESET();
-
596 __HAL_RCC_TIM6_RELEASE_RESET();
-
597 }
-
598#endif
-
599#ifdef USE_TIM7
-
600 if(htim->Instance==TIM7)
-
601 {
-
602 __HAL_RCC_TIM7_FORCE_RESET();
-
603 __HAL_RCC_TIM7_RELEASE_RESET();
-
604 }
-
605#endif
-
606#ifdef USE_TIM8
-
607 if(htim->Instance==TIM8)
-
608 {
-
609 __HAL_RCC_TIM8_FORCE_RESET();
-
610 __HAL_RCC_TIM8_RELEASE_RESET();
-
611 }
-
612#endif
-
613#ifdef USE_TIM9
-
614 if(htim->Instance==TIM9)
-
615 {
-
616 __HAL_RCC_TIM9_FORCE_RESET();
-
617 __HAL_RCC_TIM9_RELEASE_RESET();
-
618 }
-
619#endif
-
620#ifdef USE_TIM10
-
621 if(htim->Instance==TIM10)
-
622 {
-
623 __HAL_RCC_TIM10_FORCE_RESET();
-
624 __HAL_RCC_TIM10_RELEASE_RESET();
-
625 }
-
626#endif
-
627#ifdef USE_TIM11
-
628 if(htim->Instance==TIM11)
-
629 {
-
630 __HAL_RCC_TIM11_FORCE_RESET();
-
631 __HAL_RCC_TIM11_RELEASE_RESET();
-
632 }
-
633#endif
-
634#ifdef USE_TIM12
-
635 if(htim->Instance==TIM12)
-
636 {
-
637 __HAL_RCC_TIM12_FORCE_RESET();
-
638 __HAL_RCC_TIM12_RELEASE_RESET();
-
639 }
-
640#endif
-
641#ifdef USE_TIM13
-
642 if(htim->Instance==TIM13)
-
643 {
-
644 __HAL_RCC_TIM13_FORCE_RESET();
-
645 __HAL_RCC_TIM13_RELEASE_RESET();
-
646 }
-
647#endif
-
648#ifdef USE_TIM14
-
649 if(htim->Instance==TIM14)
-
650 {
-
651 __HAL_RCC_TIM14_FORCE_RESET();
-
652 __HAL_RCC_TIM14_RELEASE_RESET();
-
653 }
-
654#endif
-
655}
-
656//-------------------------TIM INIT FUNCTIONS------------------------
-
657//-------------------------------------------------------------------
-
Заголовочный файл для модуля инициализации портов.
-
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
Definition mylibs_defs.h:31
-
#define TIM_Alternate_Mapping(INSTANCE)
Маппинг альтернативной функции SPI между GPIO.
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
- - -
-
-
- - - - diff --git a/Doc/html/____general__tim_8h_source.html b/Doc/html/____general__tim_8h_source.html deleted file mode 100644 index 1442d2c..0000000 --- a/Doc/html/____general__tim_8h_source.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_tim.h Source File - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
MyLibs 1.0 -
-
Расширенные библиотеки для STM32
-
-
- - - - - - - - -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
__general_tim.h
-
-
-
1/**
-
2 **************************************************************************
-
3 * @file general_tim.h
-
4 * @brief Заголовочный файл для базовой работы с таймерами.
-
5 *************************************************************************/
-
6#ifndef __TIM_GENERAL_H_
-
7#define __TIM_GENERAL_H_
-
8
-
9/////////////////////////////////////////////////////////////////////
-
10/////////////////////////---USER SETTINGS---/////////////////////////
-
11#define HAL_TIM_MODULE_ENABLED // need to uncomment this define in stm32f4xx_hal_conf.h
-
12
-
13#define USE_TIM1
-
14#define USE_TIM2
-
15#define USE_TIM3
-
16#define USE_TIM4
-
17#define USE_TIM5
-
18#define USE_TIM6
-
19#define USE_TIM7
-
20#define USE_TIM8
-
21#define USE_TIM9
-
22#define USE_TIM10
-
23#define USE_TIM11
-
24#define USE_TIM12
-
25#define USE_TIM13
-
26#define USE_TIM14
-
27/* note: used uart defines in modbus.h */
-
28
-
29/////////////////////////---USER SETTINGS---/////////////////////////
-
30#include "mylibs_defs.h"
-
31
-
32/////////////////////////////////////////////////////////////////////
-
33////////////////////////////---DEFINES---////////////////////////////
-
34#define TIM_IT_CONF_Pos 0
-
35//#define TIM_PWM_CONF_Pos 1
-
36//#define TIM_CLCK_SRC_CONF_Pos 2
-
37//#define TIM_SLAVE_CONF_Pos 3
-
38//#define TIM_MASTER_CONF_Pos 4
-
39//#define TIM_BDTR_CONF_Pos 5
-
40
-
41#define TIM_IT_CONF (1<<(TIM_IT_CONF_Pos))
-
42//#define TIM_PWM_CONF (1<<(TIM_PWM_Pos))
-
43
-
44
-
45#define TIM_Alternate_Mapping(INSTANCE) ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
-
46 (((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
-
47 (((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
-
48 (((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
-
49 (0))
-
50////////////////////////////---DEFINES---////////////////////////////]
-
51
-
52
-
53
-
54/////////////////////////////////////////////////////////////////////
-
55///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
56typedef enum
-
57{
-
58 TIM_DEFAULT = 0,
-
59 TIM_IT_MODE = TIM_IT_CONF,
-
60// TIM_PWM_MODE = TIM_PWM_ENABLE,
-
61// TIM_PWM_IT_MODE = TIM_PWM_ENABLE | TIM_IT_CONF,
-
62}TIM_ITModeTypeDef;
-
63
-
64
-
65typedef enum
-
66{
-
67 TIM_Base_Disable = 0,
-
68 TIM_TickBase_1US = 1,
-
69 TIM_TickBase_10US = 10,
-
70 TIM_TickBase_100US = 100,
-
71 TIM_TickBase_1MS = 1000,
-
72 TIM_TickBase_10MS = 10000,
-
73 TIM_TickBase_100MS = 100000,
-
74}TIM_MHzTickBaseTypeDef;
-
75
-
-
76typedef struct // struct with settings for custom function
-
77{
-
78 TIM_HandleTypeDef htim;
-
79 TIM_ClockConfigTypeDef sClockSourceConfig;
-
80 TIM_SlaveConfigTypeDef sSlaveConfig;
-
81 TIM_MasterConfigTypeDef sMasterConfig;
-
82 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
-
83 TIM_ITModeTypeDef sTimMode;
-
84
-
85 TIM_MHzTickBaseTypeDef sTickBaseUS;
-
86 uint8_t sTickBasePrescaler;
-
87 float sTimAHBFreqMHz;
-
88 float sTimFreqHz;
-
89
- -
-
91
-
92
-
-
93typedef struct // struct with variables for encoder
-
94{
-
95 int16_t Encoder_Diff;
-
96
-
97 TIM_HandleTypeDef *htim;
-
98 TIM_Encoder_InitTypeDef sConfig;
-
99
-
100 GPIO_TypeDef *GPIOx;
-
101 uint32_t GPIO_PIN_TI1;
-
102 uint32_t GPIO_PIN_TI2;
-
103 uint32_t GPIO_PIN_SW;
- -
-
105///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
106
-
107/////////////////////////////////////////////////////////////////////
-
108///////////////////////////---FUNCTIONS---///////////////////////////
-
109/* Initialize TIM with TIM_SettingsTypeDef structure */
-
110HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef* stim);
-
111/* Initialize PWM Channel and GPIO for output */
-
112HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN);
-
113/* Initialize TIM Encoder functional */
-
114HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim);
-
115/* Initialize OC Comparator */
-
116HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL);
-
117/* Start delay via TIM */
-
118HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim);
-
119/* Delay via TIM */
-
120HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay);
-
121/* Wait Delay via TIM without blocking app */
-
122HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay);
-
123/* Initialize TIMs clock and interrupt */
-
124void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode);
-
125/* DeInitialize TIMs clock and interrupt */
-
126void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim);
-
127///////////////////////////---FUNCTIONS---///////////////////////////
-
128
-
129
-
130#endif // __TIM_GENERAL_H_
-
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
- - -
-
-
- - - - diff --git a/Doc/html/____general__uart_8c_source.html b/Doc/html/____general__uart_8c_source.html index 27d3d50..041ddc5 100644 --- a/Doc/html/____general__uart_8c_source.html +++ b/Doc/html/____general__uart_8c_source.html @@ -170,7 +170,7 @@ $(function(){initNavTree('____general__uart_8c_source.html','',''); });
68 GPIO_InitTypeDef GPIO_InitStruct = {0};
69
70 // choose port for enable clock
-
71 GPIO_Clock_Enable(GPIOx);
+
71 GPIO_Clock_Enable(GPIOx);
72
73 //USART3 GPIO Configuration
74 //GPIO_PIN_TX ------> USART_TX
@@ -480,9 +480,9 @@ $(function(){initNavTree('____general__uart_8c_source.html','',''); });
378
379//------------------------UART INIT FUNCTIONS------------------------
380//-------------------------------------------------------------------
-
Заголовочный файл для модуля инициализации портов.
+
Заголовочный файл для модуля инициализации портов и работы с ними.
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
Definition mylibs_defs.h:31
-
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
+
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
diff --git a/Doc/html/____general__uart_8h_source.html b/Doc/html/____general__uart_8h_source.html index 78bb766..810ca3d 100644 --- a/Doc/html/____general__uart_8h_source.html +++ b/Doc/html/____general__uart_8h_source.html @@ -101,10 +101,10 @@ $(function(){initNavTree('____general__uart_8h_source.html','',''); });
1/**
-
2 **************************************************************************
-
3 * @file general_uart.h
-
4 * @brief Заголовочный файл для модуля инициализации UART.
-
5 *************************************************************************/
+
2**************************************************************************
+
3* @file general_uart.h
+
4* @brief Заголовочный файл для модуля инициализации UART.
+
5*************************************************************************/
6#ifndef __UART_GENERAL_H_
7#define __UART_GENERAL_H_
8
diff --git a/Doc/html/annotated.html b/Doc/html/annotated.html index 8e38e32..a2c2e40 100644 --- a/Doc/html/annotated.html +++ b/Doc/html/annotated.html @@ -102,25 +102,18 @@ $(function(){initNavTree('annotated.html','',''); });
Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + +
 CADC_TrackerTypeDefStruct for trackers for ADC
 CADCChannel_TrackerTypeDefStruct for trackers for ADC Channel
 CGPIO_LEDTypeDefСтруктура светодиода
 CGPIO_SwitchTypeDefСтруктура кнопки
 CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault
 CMeasure_TrackerTypeDefStruct for trackers for Measure
 CMeasureHandle_TrackerTypeDefStruct for trackers for Measure
 CMZKT_DiscreteInputsTypeDef
 CMZKT_LEDsTypeDef
 CRS_TrackerTypeDefStruct for trackers for RS
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSPI_SettingsTypeDef
 CTIM_EncoderTypeDef
 CTIM_SettingsTypeDef
 CUART_SettingsTypeDef
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
 CGPIO_LEDTypeDefСтруктура светодиода
 CGPIO_SwitchTypeDefСтруктура кнопки
 CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault
 CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash
 CSPI_SettingsTypeDef
 CTIM_EncoderTypeDefСтруктура инициализации енкодера
 CTIM_SettingsTypeDefСтруктура инициализации таймера
 CUART_SettingsTypeDef
 Cuint16_BitTypeDef
 Cuint32_BitTypeDef
 Cuint64_BitTypeDef
 Cuint8_BitTypeDef
diff --git a/Doc/html/annotated_dup.js b/Doc/html/annotated_dup.js index 904449e..555ef5f 100644 --- a/Doc/html/annotated_dup.js +++ b/Doc/html/annotated_dup.js @@ -1,19 +1,12 @@ var annotated_dup = [ - [ "ADC_TrackerTypeDef", "struct_a_d_c___tracker_type_def.html", null ], - [ "ADCChannel_TrackerTypeDef", "struct_a_d_c_channel___tracker_type_def.html", null ], [ "GPIO_LEDTypeDef", "struct_g_p_i_o___l_e_d_type_def.html", "struct_g_p_i_o___l_e_d_type_def" ], [ "GPIO_SwitchTypeDef", "struct_g_p_i_o___switch_type_def.html", "struct_g_p_i_o___switch_type_def" ], [ "HF_StackFrame_t", "struct_h_f___stack_frame__t.html", "struct_h_f___stack_frame__t" ], - [ "Measure_TrackerTypeDef", "struct_measure___tracker_type_def.html", null ], - [ "MeasureHandle_TrackerTypeDef", "struct_measure_handle___tracker_type_def.html", null ], - [ "MZKT_DiscreteInputsTypeDef", "struct_m_z_k_t___discrete_inputs_type_def.html", null ], - [ "MZKT_LEDsTypeDef", "struct_m_z_k_t___l_e_ds_type_def.html", null ], - [ "RS_TrackerTypeDef", "struct_r_s___tracker_type_def.html", null ], [ "RTT_FlashHeader_t", "struct_r_t_t___flash_header__t.html", "struct_r_t_t___flash_header__t" ], [ "SPI_SettingsTypeDef", "struct_s_p_i___settings_type_def.html", null ], - [ "TIM_EncoderTypeDef", "struct_t_i_m___encoder_type_def.html", null ], - [ "TIM_SettingsTypeDef", "struct_t_i_m___settings_type_def.html", null ], + [ "TIM_EncoderTypeDef", "struct_t_i_m___encoder_type_def.html", "struct_t_i_m___encoder_type_def" ], + [ "TIM_SettingsTypeDef", "struct_t_i_m___settings_type_def.html", "struct_t_i_m___settings_type_def" ], [ "UART_SettingsTypeDef", "struct_u_a_r_t___settings_type_def.html", null ], [ "uint16_BitTypeDef", "unionuint16___bit_type_def.html", null ], [ "uint32_BitTypeDef", "unionuint32___bit_type_def.html", null ], diff --git a/Doc/html/bit__access_8h.html b/Doc/html/bit__access_8h.html new file mode 100644 index 0000000..eacf932 --- /dev/null +++ b/Doc/html/bit__access_8h.html @@ -0,0 +1,176 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h File Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bit_access.h File Reference
+
+
+ +

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

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

Go to the source code of this file.

+ + + + + + +

+Classes

union  uint8_BitTypeDef
union  uint16_BitTypeDef
union  uint32_BitTypeDef
union  uint64_BitTypeDef
+ + + + + + + + + +

+Macros

#define uint8_bit(_uint8_, _bit_)
 Получить n-й бит из uint8_t.
#define uint16_bit(_uint8_, _bit_)
 Получить n-й бит из uint16_t.
#define uint32_bit(_uint8_, _bit_)
 Получить n-й бит из uint32_t.
#define uint64_bit(_uint8_, _bit_)
 Получить n-й бит из uint64_t.
+

Detailed Description

+

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

+ +

Definition in file bit_access.h.

+
+
+ +
+ + + + diff --git a/Doc/html/bit__access_8h.js b/Doc/html/bit__access_8h.js new file mode 100644 index 0000000..9c568c5 --- /dev/null +++ b/Doc/html/bit__access_8h.js @@ -0,0 +1,7 @@ +var bit__access_8h = +[ + [ "uint8_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396", null ], + [ "uint16_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086", null ], + [ "uint32_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1", null ], + [ "uint64_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a", null ] +]; \ No newline at end of file diff --git a/Doc/html/bit__access_8h__dep__incl.map b/Doc/html/bit__access_8h__dep__incl.map new file mode 100644 index 0000000..11c4cbf --- /dev/null +++ b/Doc/html/bit__access_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/Doc/html/bit__access_8h__dep__incl.md5 b/Doc/html/bit__access_8h__dep__incl.md5 new file mode 100644 index 0000000..2f7fcbf --- /dev/null +++ b/Doc/html/bit__access_8h__dep__incl.md5 @@ -0,0 +1 @@ +9d0f52ae67584f7f09caa88b8c7ab4e9 \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..79f6619c897b62c156eb065203a84350319b4e25 GIT binary patch literal 2910 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 AHvj+t literal 0 HcmV?d00001 diff --git a/Doc/html/bit__access_8h__incl.map b/Doc/html/bit__access_8h__incl.map new file mode 100644 index 0000000..9afbbb7 --- /dev/null +++ b/Doc/html/bit__access_8h__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Doc/html/bit__access_8h__incl.md5 b/Doc/html/bit__access_8h__incl.md5 new file mode 100644 index 0000000..dd84ccf --- /dev/null +++ b/Doc/html/bit__access_8h__incl.md5 @@ -0,0 +1 @@ +4b8c2556090cdbb9271b9fbe97d7cf5b \ No newline at end of file diff --git a/Doc/html/bit__access_8h__incl.png b/Doc/html/bit__access_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6e25770119bfb439eb0d6be2ab61fa27cba69f31 GIT binary patch literal 4026 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 literal 0 HcmV?d00001 diff --git a/Doc/html/bit__access_8h_source.html b/Doc/html/bit__access_8h_source.html index f72b8e8..37a5171 100644 --- a/Doc/html/bit__access_8h_source.html +++ b/Doc/html/bit__access_8h_source.html @@ -100,37 +100,37 @@ $(function(){initNavTree('bit__access_8h_source.html','',''); });
bit_access.h
-
1/**
+Go to the documentation of this file.
1/**
2**************************************************************************
-
3* @file mylibs_defs.h
-
4* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
+
3* @file bit_access.h
+
4* @brief Заголочный файл для дефайнов битового доступа.
5**************************************************************************
6* @defgroup BIT_ACCESS_DEFINES Bit access defines
7* @ingroup MYLIBS_DEFINES
8* @brief Макросы и typedef'ы для работы с битами в unsigned типах.
9* @details
-
10* В этом файле определены макросы для получения значения конкретного бита^
-
11* - @ref uint8_bit
-
12* - @ref uint16_bit
-
13* - @ref uint32_bit
-
14* - @ref uint64_bit
-
15*
-
16* Особенности использования:
-
17* - Индекс бита должен быть **константой на этапе компиляции**.
-
18* Пример верного использования:
-
19* @code
-
20* uint8_t val = 0x05;
-
21* uint8_t b2 = uint8_bit(val, 2); // Получить бит 2
-
22* uint8_bit(val, 6) = 1; // Записать бит 6
-
23* @endcode
-
24* - Нельзя использовать переменные в качестве индекса:
-
25* @code
-
26* uint8_t i = 2;
-
27* uint8_bit(val, i); // Не сработает!
-
28* @endcode
-
29* - Макросы возвращают 0 или 1.
-
30* - Доступ реализован через приведение к `union` с битовыми полями, поэтому это
-
31* безопасный способ работы с отдельными битами без ручного сдвига и маскирования.
+
10В этом файле определены макросы для получения значения конкретного бита^
+
11- @ref uint8_bit
+
12- @ref uint16_bit
+
13- @ref uint32_bit
+
14- @ref uint64_bit
+
15
+
16Особенности использования:
+
17- Индекс бита должен быть **константой на этапе компиляции**.
+
18 Пример верного использования:
+
19 @code
+
20 uint8_t val = 0x05;
+
21 uint8_t b2 = uint8_bit(val, 2); // Получить бит 2
+
22 uint8_bit(val, 6) = 1; // Записать бит 6
+
23 @endcode
+
24- Нельзя использовать переменные в качестве индекса:
+
25 @code
+
26 uint8_t i = 2;
+
27 uint8_bit(val, i); // Не сработает!
+
28 @endcode
+
29- Макросы возвращают 0 или 1.
+
30- Доступ реализован через приведение к `union` с битовыми полями, поэтому это
+
31 безопасный способ работы с отдельными битами без ручного сдвига и маскирования.
32* @{
33*************************************************************************/
34#ifndef __BIT_ACCESS_H_
@@ -278,7 +278,7 @@ $(function(){initNavTree('bit__access_8h_source.html','',''); }); diff --git a/Doc/html/classes.html b/Doc/html/classes.html index f99af2f..6035bf4 100644 --- a/Doc/html/classes.html +++ b/Doc/html/classes.html @@ -100,23 +100,17 @@ $(function(){initNavTree('classes.html','',''); });
Class Index
-
A | G | H | M | R | S | T | U
+
G | H | R | S | T | U
-
A
-
ADC_TrackerTypeDef
ADCChannel_TrackerTypeDef
-
G
GPIO_LEDTypeDef
GPIO_SwitchTypeDef
-
+
H
HF_StackFrame_t
-
-
M
-
Measure_TrackerTypeDef
MeasureHandle_TrackerTypeDef
MZKT_DiscreteInputsTypeDef
MZKT_LEDsTypeDef
R
-
RS_TrackerTypeDef
RTT_FlashHeader_t
+
RTT_FlashHeader_t
S
SPI_SettingsTypeDef
diff --git a/Doc/html/struct_r_s___tracker_type_def-members.html b/Doc/html/dir_000002_000000.html similarity index 70% rename from Doc/html/struct_r_s___tracker_type_def-members.html rename to Doc/html/dir_000002_000000.html index 35107fa..39823a3 100644 --- a/Doc/html/struct_r_s___tracker_type_def-members.html +++ b/Doc/html/dir_000002_000000.html @@ -5,7 +5,7 @@ -MyLibs: Member List +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src -> Inc Relation @@ -71,7 +71,7 @@ $(function() {
@@ -96,23 +96,21 @@ $(function(){initNavTree('struct_r_s___tracker_type_def.html','',''); });
-
-
RS_TrackerTypeDef Member List
-
- -

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

- - - - - -
cnt_err (defined in RS_TrackerTypeDef)RS_TrackerTypeDef
cnt_ok (defined in RS_TrackerTypeDef)RS_TrackerTypeDef
cnt_warn (defined in RS_TrackerTypeDef)RS_TrackerTypeDef
user (defined in RS_TrackerTypeDef)RS_TrackerTypeDef
+

Src → Inc Relation

File in MyLibsGeneral/SrcIncludes file in MyLibsGeneral/Inc
__general_spi.cgeneral_gpio.h
__general_uart.cgeneral_gpio.h
general_gpio.cgeneral_gpio.h
general_tim.cgeneral_tim.h
+
diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html index 8ab2f6c..2a88587 100644 --- a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html +++ b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html @@ -100,15 +100,29 @@ $(function(){initNavTree('dir_9c80311a018e1f8cfb6659b73d634be4.html','',''); });
Src Directory Reference
+
Directory dependency graph for Src:
+
+
+ - - + + +

Files

 
__general_flash.c
 
__general_spi.c
 
__general_tim.c
 
__general_uart.c
 
general_gpio.c
 Модуль для инициализации портов.
 Модуль для инициализации портов и работы с ними.
 
general_tim.c
 Модуль для инициализации таймеров и работы с ними.
diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.js b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.js index ca9dc0f..6df5d45 100644 --- a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.js +++ b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.js @@ -2,7 +2,7 @@ var dir_9c80311a018e1f8cfb6659b73d634be4 = [ [ "__general_flash.c", "____general__flash_8c_source.html", null ], [ "__general_spi.c", "____general__spi_8c_source.html", null ], - [ "__general_tim.c", "____general__tim_8c_source.html", null ], [ "__general_uart.c", "____general__uart_8c_source.html", null ], - [ "general_gpio.c", "general__gpio_8c.html", "general__gpio_8c" ] + [ "general_gpio.c", "general__gpio_8c.html", "general__gpio_8c" ], + [ "general_tim.c", "general__tim_8c.html", "general__tim_8c" ] ]; \ No newline at end of file diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map new file mode 100644 index 0000000..649ed93 --- /dev/null +++ b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 new file mode 100644 index 0000000..26d1cc5 --- /dev/null +++ b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 @@ -0,0 +1 @@ +387bb26d88dde230c0675e9727f07c60 \ No newline at end of file diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.png b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..662c95b0c8b790c28ce27f436ae63d2c797fa6e6 GIT binary patch literal 1992 zcmZ8idpy)xAD*&^!6dhF8@m&7_aj9#6e`t}5{=s!gIq(1nWh@KH6 z2Iv0$kdfkUX6GPaa_0QXT&gY!-Ip=dO&-Zzr&-dKFaQ>9MtcENE0+B!M z;_L>F8DMMJBL(&k8`ONjK`P+vDQC#mb}ebC{1*fwefzZYad%>&fZr9N9HJ#HT=;xK zsUd#4I{osQe#eA!Rcvl@t*lH-eoj3p6js{PT2euJ6@p?i{mz(+bct0ei)npGfmx_u z`hn7^sMIsZ4ePz~A25-$ey4=^y6(B|=n3A9n{*w|j=2vum0mGa#XB|E-i_0>hZ^rBZCus$Qc!`N2=a=3=yB0CN zjhNz+rZ4b*I%6+&*BK7qx2Q?YtA#mS?o&*c#wER*T!wDsRllHLD7f-k0+0(Fb=9P2 zWowO<^sz=SOg>g4i7KLgq(u@nz2Fc$c4zbtiFfE{$NT5k9C^vxQcfEKc4xY?{G;z?u1W z{u4c^|0qoym76tZ4!%t08ECPkHQ+S0W?ubpLg7S1IBVfsa3^uYr$_KF+7Lh%34&k7lpmw#ZYcvDxfAY__i#%rK)0$rBwaO={ z-$ALbri3+*p5^|9$y5@|;KMQgp|_^?YJj-+%;J?_(?VU{&C&1*X5n;vr=Y>>*)2Q+ z2vdW%kt2{zmmj{w?*idB^#40KAqfwB!=o~!Z7F6JA|UFByhD^Znj6kD2t;L^@-w>& z=R6(=M9E2J?ohA;!nuk$CjMjP;Ld4|-SAWrWQL{bH6mF>=4f zBtE#iP=N-`Qkz}ZJ27axe5m|u;=TlHq%qrv+FSbwxPDB43DQv?zD5hQws#n)tj9t+ zf(VAu2SaNW(24rc!Qv}?!}yP1H>SuKyQ^B+{|K=iv|VUzN5(#=7b!=>YNN|wwJpvTmzJC{#UMTnL)a&7$oXpe-t`ygt9orbadrn z_ee^7N&-m&?+WlwJ#X?wH(~3oJb2U-w!dVZE$NTSxa>aA&RpwUC8NmUV=IXqdI-Ya zuV_=S(0z!7TPxFS8`@vq7#ZX4t8;R;t$Lwe_^B96bhBU={%$2Vwv;j-(w{5Y{M+-4 zvS|C;Uwuay&(hg;Em-Zg;b2K^h!K04a^(qUX6LmS7runL9hJYs=H$>=V?U8Uo%E{e-h1gcFOi@JyXk}Yj+8)l_ zPT{Va-crFIg~zzqd#0umPNNopE~9Nsy!TKHu`QwT1&UQ_a$HA#6`VpQYyOH{tK-*4 zdBQIJ_wWz4lz&`6Y}MU2zLD)%vYu&9Ao4o`Lq_nbP9+!&-sVorPX(@XgxV$747rMmdyswf*o57 z0nQ1GlSg9Mk=+6f8(bU&^$u~qe{O}ql2%gU06J@>>|b^b{Ah2v| zxRAThW}*tE9*NT!Cd^T{CWhm1cBX{Ib*Pgyd2
MyLibsGeneral Directory Reference
+
Directory dependency graph for MyLibsGeneral:
+
+
+ diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map new file mode 100644 index 0000000..397ee7e --- /dev/null +++ b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 new file mode 100644 index 0000000..e96a2a1 --- /dev/null +++ b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 @@ -0,0 +1 @@ +a1466c7fe0f5fc90492120d9a3a88167 \ No newline at end of file diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.png b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..755f4fd8a58864ee3aaf5cb47613663f851cd307 GIT binary patch literal 1613 zcmb7Ec{mhk99D}4LrBU!G?V+RA?L=R8CPXplYKY%B+Rf8CDaUmClzQ~Gh^#KWzjsJTOZNaHMulj;GE6Z==UP%ZTc7K8CPoZzW3 z_>?R9ZS+)PMn*=Lfqv8j>M_9t&!LZ{ZUjqqk7LCa z*9?^3Q0_)_v91L&KNRC@bF9$*s;3H&E;e-g_@4H|ze7|#0j39&g~8teTxA+|5D~l^ zifjp?4WNz(w}rA%6r#T(+-H&2U+QCg$7N%TxUjG!0@i^#<`1F(^&e{3>+DS+-*Gc^ zygc_l@Jm$75Ue__TeR8sr#ICIPYdg4n?ls-me^IRIUiw0Wlw#o)2bpkH(A4niSa(ti}X_!@yU{LMp;9!^`_8XKW+1xb`ZoiSDC z_AZe%Bg{zkdNI;X#cPu_%{iTslk~=*h}bIm%Ihg!s{JobB(r~Pb>zwH_@lf zBs#T_WlHn^ZuRS!V<;2-%KUohx1aO)>s$8S2C1JRhG)jmetF)E64l^ zU_gUyfEv$v)NJPEhFL@jDe$i~+v4^}Oc_nXnf{DWUr4hJhGKF`)IW-QU#^~hwU92M zvp6Vm)cT2UKoum=A-5(Iu{xpC7upsVB-<6KANPx5XBRE3no{SNcn<|52e-r&`%#+O zJz6Ma8S27b;1emg8rhC&#|sxJu31_GsSwp+&4D2_;tn<-zCTn1EU%#H((r8+;TqQ# zyWO**ZuO%8kA=ZHd9%|%4`~T3_!DIp!7LzHqI;ihlgeg~#aXcnrgyZJ5L@#Drj_GN zhzac5cYfF#|A#DNxy9U6S&~0(fu2{zc;^B{wUR(1dU#`_N17VDg>0=WBA;8YOtV$X z(2ASyKB+5?M^R?9d=6UcRf;s+4%>^S?@DDQgP~JiO$Oeg;G(sqX^WlBn_8=FQdwz& zujOoH=HIFAjx@hK4#8AkA1!=T!0)j{=bxIX$AjQ!0(?Nj`6HW3#^((TFH?KZ4%baD zE-Q(ErFC7`9R;ok0fe${@R^b>h1hILrsT_~^Hdm^qR*ZOikF8SA*P936gOIU(^`v_ zj=5{7>-JzIsc+sl(DsA6GbG^-T?GdfJc@ktvjckQUVB(nQzmGpu}qQRxatTbmP0Gy7PBrqz?(Y*&K zhDDI{sTt9ACZekbx#Gg%k^~q9+hwge*zZ<$y#3-T5u@~jx6_;G$yg;O1duiImn{Kk4xA{dJigPLmV z%WQyX{y&>fY8zzD%0s%g8|P~K+?~3G6S#r$@cnSc*SD>JEo>+DRVzpVY{>G9P-v*W z>on_yJ+^e{X|!s;V+}s!xk=_^bBcuMP@ta9lJ@7Ce$j(e;tVN6=Gr2t#c8}nQXzci z6xfucOvYKY2g_Lh_|tA-;$8FEIO0DMV=%2mPKfpu)oq`wFCE5JIQL^wTPzfuI~C~o z*xw<4*J#P>KFR+(ufN8Cb|Bt$Lw4W}6>d;l#om^4QdQxmm
Inc Directory Reference
+
Directory dependency graph for Inc:
+
+
+

Directories

- - + + - + + + diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js index 0ea66f6..9316149 100644 --- a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.js @@ -2,13 +2,13 @@ var dir_eb423fea8a9c4b9b32b922020ec391e1 = [ [ "__general_flash.h", "____general__flash_8h_source.html", null ], [ "__general_spi.h", "____general__spi_8h_source.html", null ], - [ "__general_tim.h", "____general__tim_8h_source.html", null ], [ "__general_uart.h", "____general__uart_8h_source.html", null ], - [ "bit_access.h", "bit__access_8h_source.html", null ], + [ "bit_access.h", "bit__access_8h.html", "bit__access_8h" ], [ "general_gpio.h", "general__gpio_8h.html", "general__gpio_8h" ], + [ "general_tim.h", "general__tim_8h.html", "general__tim_8h" ], [ "mylibs_config.h", "mylibs__config_8h.html", "mylibs__config_8h" ], [ "mylibs_defs.h", "mylibs__defs_8h.html", "mylibs__defs_8h" ], - [ "mylibs_include.h", "mylibs__include_8h.html", "mylibs__include_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_eb423fea8a9c4b9b32b922020ec391e1_dep.map b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.map new file mode 100644 index 0000000..8f7cb36 --- /dev/null +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 new file mode 100644 index 0000000..f594f8b --- /dev/null +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 @@ -0,0 +1 @@ +51bda8bf2e3b4eafeabf6cf3520068b7 \ No newline at end of file diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.png b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf8f9ffd65820332e35a778a6918f7688ccc69a GIT binary patch literal 1046 zcmeAS@N?(olHy`uVBq!ia0vp^JwTkz!3HFkHfFH^DYhhUcNd2LAh=-f^2rPg%%?qF z978JRyuIt|FYG9D{NsNi{W~5W9qfBAz0zJF;aq+7f?MbM0~H@MSb9~CNgtc=Ncy6{ zL)H?`OGRPLx$CQzaGK{`>Gqwri~sNYH=pb5J%vxbZDuJu zgTCJJ`&n^{pS@PHSI_SDw!ddK7c@jLHRnk2{rdFn?CM$Z??qD1En)mxRhw$@Vs=O) zi*ER;Bq1@u!v{J}Tzhz3zb#b3--o$*lA=KX1bLbmbaQ`pyPbaX{Lb8Kzy7=`y0=NK z*G%=^;R@RmE9CyX_@p(dN=*D&YDs13<7r1PWXQ^0-zv9)vaN`2mC z|KGNGj;HnGBJH|Jy=v+c0&!)gir%g&4Ma~s#TShvcmnLOQOAmTg4%s}ZsyW*LPGUex=o2e|-+-m+# z&AsBnMA_>z-hMw)9m~tQRrTFHwYM8Op6qBZtp0Q-&S!n1dWJ_4x9 zk&*S@#IUz}V_(jjx8!b*L-cLyO}`!_-a2b=%o1qG{lgZiZ#m?8^-?bUpITl=5ZDZ;qd7+0J`Q3&@72b3xZA^NO|b|wleh80RL-g_yk)4eH7|8t^}$k9igk;iK!RQeP-wOHIV&p$T^)VT7c&7vjt$A%SNk`mjm z8kl}R-2;+c<}!nyS@hXqg+d-rP=e9Cl3IGrj?q#^8!I-!^ra zmi+toclUK|`}&&wk3--6?4F+9FSq?)Meg#NHBWm%YC9jN=H{+7GdC~4p8dPR=H0Dr wZ+|vu%E$kF{rdI&zopr01*)1?f?J) literal 0 HcmV?d00001 diff --git a/Doc/html/doxygen_crawl.html b/Doc/html/doxygen_crawl.html index dadab9a..a4b8d18 100644 --- a/Doc/html/doxygen_crawl.html +++ b/Doc/html/doxygen_crawl.html @@ -12,13 +12,13 @@ - - + + @@ -30,11 +30,16 @@ + + + + + @@ -46,47 +51,89 @@ - - - - + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -146,27 +193,32 @@ + + + + + + + + + + + - - - - - - @@ -182,16 +234,6 @@ - - - - - - - - - - @@ -201,8 +243,27 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/files.html b/Doc/html/files.html index cc94b1b..be04d52 100644 --- a/Doc/html/files.html +++ b/Doc/html/files.html @@ -106,10 +106,10 @@ $(function(){initNavTree('files.html','',''); }); - - - - + + + + @@ -118,9 +118,9 @@ $(function(){initNavTree('files.html','',''); }); - - - + + +

Files

 
__general_flash.h
 
__general_spi.h
 
__general_tim.h
 
__general_uart.h
 
bit_access.h
 
bit_access.h
 Заголочный файл для дефайнов битового доступа.
 
general_gpio.h
 Заголовочный файл для модуля инициализации портов.
 Заголовочный файл для модуля инициализации портов и работы с ними.
 
general_tim.h
 Заголовочный файл для модуля инициализации таймеров и работы с ними.
 
mylibs_config.h
 Конфигурации для библиотек MyLibs.
 
mylibs_defs.h
 
Inc
 
__general_flash.h
 
__general_spi.h
 
__general_tim.h
 
__general_uart.h
 
bit_access.h
 
general_gpio.h
Заголовочный файл для модуля инициализации портов
 
__general_uart.h
 
bit_access.h
Заголочный файл для дефайнов битового доступа
 
general_gpio.h
Заголовочный файл для модуля инициализации портов и работы с ними
 
general_tim.h
Заголовочный файл для модуля инициализации таймеров и работы с ними
 
mylibs_config.h
Конфигурации для библиотек MyLibs
 
mylibs_defs.h
Заголочный файл для дефайнов библиотеки MyLibsGeneral
 
mylibs_include.h
Заголочный файл для всех библиотек
 
Src
 
__general_flash.c
 
__general_spi.c
 
__general_tim.c
 
__general_uart.c
 
general_gpio.c
Модуль для инициализации портов
 
__general_uart.c
 
general_gpio.c
Модуль для инициализации портов и работы с ними
 
general_tim.c
Модуль для инициализации таймеров и работы с ними
diff --git a/Doc/html/functions.html b/Doc/html/functions.html index 258c390..1411471 100644 --- a/Doc/html/functions.html +++ b/Doc/html/functions.html @@ -97,29 +97,80 @@ $(function(){initNavTree('functions.html','',''); });
-
Here is a list of all documented class members with links to the class documentation for each member:
diff --git a/Doc/html/functions_vars.html b/Doc/html/functions_vars.html index b788bfc..fc684f6 100644 --- a/Doc/html/functions_vars.html +++ b/Doc/html/functions_vars.html @@ -97,29 +97,80 @@ $(function(){initNavTree('functions_vars.html','',''); });
-
Here is a list of all documented variables with links to the class documentation for each member:
diff --git a/Doc/html/general__gpio_8c.html b/Doc/html/general__gpio_8c.html index f7405e2..895b805 100644 --- a/Doc/html/general__gpio_8c.html +++ b/Doc/html/general__gpio_8c.html @@ -101,37 +101,54 @@ $(function(){initNavTree('general__gpio_8c.html','',''); });
-

Модуль для инициализации портов. +

Модуль для инициализации портов и работы с ними. 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)
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_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_On (GPIO_LEDTypeDef *led)
 Включить светодиод
HAL_StatusTypeDef GPIO_LED_Off (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_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
 Выставить светодиод по переменной
HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
HAL_StatusTypeDef GPIO_LED_Fading_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)
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)
HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)
 Инициализировать кнопку (структуру кнопки)
uint8_t GPIO_Read_Switch (GPIO_SwitchTypeDef *sw)
 Считать состоянии кнопки
int GPIO_Read_Switch (GPIO_SwitchTypeDef *sw)
 Считать состоянии кнопки

Detailed Description

-

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

+

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

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

  • Включение тактирования портов
  • Инициализация светодиодов и кнопок
  • diff --git a/Doc/html/general__gpio_8c.js b/Doc/html/general__gpio_8c.js index d09c80d..10e5599 100644 --- a/Doc/html/general__gpio_8c.js +++ b/Doc/html/general__gpio_8c.js @@ -1,13 +1,13 @@ var general__gpio_8c = [ - [ "GPIO_Clock_Enable", "group___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6", null ], - [ "GPIO_LED_Init", "group___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084", null ], - [ "GPIO_LED_On", "group___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c", null ], - [ "GPIO_LED_Off", "group___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357", null ], - [ "GPIO_LED_Set", "group___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2", null ], - [ "GPIO_LED_Blink_Start", "group___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9", null ], - [ "GPIO_LED_Fading_Start", "group___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a", null ], - [ "GPIO_LED_Dynamic_Handle", "group___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2", null ], - [ "GPIO_Switch_Init", "group___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ], - [ "GPIO_Read_Switch", "group___g_p_i_o___s_w_i_t_c_h.html#ga4b6b8be19a9265bfee6b2bb8a68e988f", 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_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 new file mode 100644 index 0000000..1d47388 --- /dev/null +++ b/Doc/html/general__gpio_8c__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Doc/html/general__gpio_8c__incl.md5 b/Doc/html/general__gpio_8c__incl.md5 new file mode 100644 index 0000000..958ccc2 --- /dev/null +++ b/Doc/html/general__gpio_8c__incl.md5 @@ -0,0 +1 @@ +6e517891df2cdbcb0824fafba9ac3005 \ No newline at end of file diff --git a/Doc/html/general__gpio_8c__incl.png b/Doc/html/general__gpio_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a4a650cc1bf9365c667f77fd8ff3413523ca2d GIT binary patch literal 5053 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 to the documentation of this file.

    1/**
    2**************************************************************************
    3* @file general_gpio.c
    -
    4* @brief Модуль для инициализации портов.
    +
    4* @brief Модуль для инициализации портов и работы с ними.
    5**************************************************************************
    -
    6* @details Реализация функций для работы с GPIO:
    -
    7* - Включение тактирования портов
    -
    8* - Инициализация светодиодов и кнопок
    -
    9* - Управление светодиодами: включение, выключение, моргание, плавное затухание
    -
    10* - Чтение состояния кнопок с фильтром от дребезга
    -
    11***************************************************************************/
    -
    12#include "general_gpio.h"
    -
    13
    -
    14//-------------------------------------------------------------------
    -
    15//------------------------GPIO INIT FUNCTIONS------------------------
    -
    16
    -
    17
    -
    18/**
    -
    19 * @brief Включить тактирование порта GPIO
    -
    20 */
    -
    -
    21HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
    -
    22{
    -
    23 HAL_StatusTypeDef status = HAL_OK;
    -
    24 // choose port for enable clock
    -
    25 if (GPIOx==GPIOA)
    -
    26 __HAL_RCC_GPIOA_CLK_ENABLE();
    -
    27 else if (GPIOx==GPIOB)
    -
    28 __HAL_RCC_GPIOB_CLK_ENABLE();
    -
    29#ifdef GPIOC
    -
    30 else if (GPIOx==GPIOC)
    -
    31 __HAL_RCC_GPIOC_CLK_ENABLE();
    -
    32#endif
    -
    33#ifdef GPIOD
    -
    34 else if (GPIOx==GPIOD)
    -
    35 __HAL_RCC_GPIOD_CLK_ENABLE();
    +
    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 GPIOE
    -
    38 else if (GPIOx==GPIOE)
    -
    39 __HAL_RCC_GPIOE_CLK_ENABLE();
    +
    37#ifdef GPIOD
    +
    38 else if (GPIOx==GPIOD)
    +
    39 __HAL_RCC_GPIOD_CLK_ENABLE();
    40#endif
    -
    41#ifdef GPIOF
    -
    42 else if (GPIOx==GPIOF)
    -
    43 __HAL_RCC_GPIOF_CLK_ENABLE();
    +
    41#ifdef GPIOE
    +
    42 else if (GPIOx==GPIOE)
    +
    43 __HAL_RCC_GPIOE_CLK_ENABLE();
    44#endif
    -
    45#ifdef GPIOH
    +
    45#ifdef GPIOF
    46 else if (GPIOx==GPIOF)
    -
    47 __HAL_RCC_GPIOH_CLK_ENABLE();
    +
    47 __HAL_RCC_GPIOF_CLK_ENABLE();
    48#endif
    -
    49 else
    -
    50 status = HAL_ERROR;
    -
    51
    -
    52 return status;
    -
    53}
    +
    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}
    -
    54
    -
    55//------------------------GPIO INIT FUNCTIONS------------------------
    -
    56//-------------------------------------------------------------------
    -
    57
    58
    -
    59//-------------------------------------------------------------------
    -
    60//------------------------GPIO LED FUNCTIONS-------------------------
    -
    61
    -
    62/**
    -
    63 * @brief Инициализировать светодиод (структуру светодиода)
    -
    64 * @param led Указатель на структуру светодиода
    -
    65 * @param GPIOx Указатель на структуру порта для светодиода
    -
    66 * @param GPIO_PIN_X Пин для светодиода
    -
    67 * @param LED_ActiveLevel Состояния пина, при котором светодиод будет включен
    -
    68 */
    -
    -
    69HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)
    -
    70{
    -
    71 if(check_null_ptr_2(led, GPIOx))
    -
    72 return HAL_ERROR;
    -
    73
    -
    74 led->LED_Port = GPIOx;
    -
    75 led->LED_Pin = GPIO_PIN_X;
    -
    76 led->LED_ActiveLvl = LED_ActiveLevel;
    +
    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 GPIO_LED_Off(led);
    -
    79 return HAL_OK;
    -
    80}
    +
    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}
    -
    81
    -
    82/**
    -
    83 * @brief Включить светодиод
    -
    84 * @param led Указатель на структуру светодиода
    -
    85 * @return HAL Status
    -
    86 */
    -
    -
    87HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
    -
    88{
    -
    89 if(check_null_ptr_1(led))
    -
    90 return HAL_ERROR;
    -
    91
    -
    92 led->state = LED_IS_ON;
    -
    93 if(led->LED_Port != NULL)
    -
    94 HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
    -
    95 else
    -
    96 return HAL_ERROR;
    -
    97
    -
    98 return HAL_OK;
    -
    99}
    +
    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}
    -
    100/**
    -
    101 * @brief Выключить светодиод
    -
    102 * @param led Указатель на структуру светодиода
    -
    103 * @return HAL Status
    -
    104 */
    -
    -
    105HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
    -
    106{
    -
    107 if(check_null_ptr_1(led))
    -
    108 return HAL_ERROR;
    -
    109
    -
    110 led->state = LED_IS_OFF;
    -
    111 if(led->LED_Port != NULL)
    -
    112 HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
    -
    113 else
    -
    114 return HAL_ERROR;
    +
    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;
    @@ -233,18 +233,18 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    123 * @return HAL Status
    124 */
    -
    125HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
    +
    125HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
    126{
    -
    127 if(check_null_ptr_1(led))
    -
    128 return HAL_ERROR;
    +
    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);
    +
    132 return GPIO_LED_On(led);
    133 }
    134 else
    135 {
    -
    136 return GPIO_LED_Off(led);
    +
    136 return GPIO_LED_Off(led);
    137 }
    138}
    @@ -256,12 +256,12 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    144 * @details Функция ставит режим моргания, который после управляется в @ref GPIO_LED_Dynamic_Handle
    145 */
    -
    146HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
    +
    146HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
    147{
    -
    148 if(check_null_ptr_2(led, led->LED_Port))
    +
    148 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
    149 return HAL_ERROR;
    150
    -
    151 led->state = LED_IS_BLINKING;
    +
    151 led->state = LED_IS_BLINKING;
    152 led->LED_Period = period;
    153
    154 return HAL_OK;
    @@ -276,12 +276,12 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    162 * @details Функция ставит режим моргания, который после управляется в @ref GPIO_LED_Dynamic_Handle
    163 */
    -
    164HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
    +
    164HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
    165{
    -
    166 if(check_null_ptr_2(led, led->LED_Port))
    +
    166 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
    167 return HAL_ERROR;
    168
    -
    169 led->state = LED_IS_FADING;
    +
    169 led->state = LED_IS_FADING;
    170 led->LED_Period = period;
    171
    172
    @@ -298,41 +298,41 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    182 * и в нужный момент переключала светодиод
    183 */
    - +
    185{
    -
    186 if(check_null_ptr_2(led, led->LED_Port))
    +
    186 if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
    187 return;
    188
    189 /* Режим моргания светодиода */
    -
    190 if(led->state == LED_IS_BLINKING)
    +
    190 if(led->state == LED_IS_BLINKING)
    191 {
    192 uint32_t tickcurrent = HAL_GetTick();
    193 /* Ожидание истечения периода моргания */
    -
    194 if((tickcurrent - led->tickprev) > led->LED_Period)
    +
    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;
    +
    199 led->tickprev = tickcurrent;
    200 }
    201 }
    202 /* Режим плавного моргания светодиода */
    -
    203 else if(led->state == LED_IS_FADING)
    +
    203 else if(led->state == LED_IS_FADING)
    204 {
    205 static unsigned direction = 0;
    206 static int duty = 0;
    207 uint32_t tickcurrent = HAL_GetTick();
    208 /* Ожидание момента изменения яркости */
    209 /* Период ШИМ 20 мс, поэтому менять яроксть надо 40 раз за период (туда обратно) */
    -
    210 if((tickcurrent - led->tickprev) > led->LED_Period/(LED_PWM_TICKS*2))
    +
    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)
    +
    215 if(++duty >= LED_PWM_TICKS)
    216 {
    217 direction = 1;
    -
    218 duty = LED_PWM_TICKS;
    +
    218 duty = LED_PWM_TICKS;
    219 }
    220 }
    221 /* Формирование затухания */
    @@ -344,11 +344,11 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    227 duty = 0;
    228 }
    229 }
    -
    230 led->tickprev = tickcurrent;
    +
    230 led->tickprev = tickcurrent;
    231 }
    232 /* Формирование ШИМ для изменения яркости */
    -
    233 int duty_crt = (duty*duty/LED_PWM_TICKS);
    -
    234 if(tickcurrent%LED_PWM_TICKS < duty_crt)
    +
    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 }
    @@ -374,9 +374,9 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    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)
    +
    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_2(sw, GPIOx))
    +
    260 if(check_null_ptr_3(sw, GPIOx, GPIO_PIN_X))
    261 return HAL_ERROR;
    262
    263 sw->Sw_Port = GPIOx;
    @@ -389,92 +389,93 @@ $(function(){initNavTree('general__gpio_8c_source.html','',''); });
    269/**
    270 * @brief Считать состоянии кнопки
    271 * @param sw Указатель на структуру кнопки
    -
    272 * @return 1 - если кнопка нажата, 0 - если отжата
    -
    273 * @details Функция включает в себя неблокирующую проверку на дребезг
    -
    274 * Т.е. функцию надо вызывать постоянно, чтобы она мониторила состояние кнопки
    -
    275 */
    -
    - -
    277{
    -
    278 if(check_null_ptr_1(sw))
    -
    279 return 0;
    -
    280
    -
    281 if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
    -
    282 {
    -
    283 sw->Sw_PrevState = 1;
    -
    284
    -
    285
    -
    286 if(sw->Sw_FilterDelay) // если включена защита от дребезга
    -
    287 {
    -
    288 if(sw->tickprev == 0)
    -
    289 sw->tickprev = HAL_GetTick();
    -
    290
    -
    291 if((HAL_GetTick() - sw->tickprev) >= sw->Sw_FilterDelay)
    -
    292 {
    -
    293 if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
    -
    294 {
    -
    295 return 1;
    -
    296 }
    -
    297 else
    -
    298 {
    -
    299 sw->tickprev = 0;
    -
    300 return 0;
    -
    301 }
    -
    302 }
    -
    303 }
    -
    304 else // если нет защиты от дребезга
    -
    305 {
    -
    306 if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
    -
    307 {
    -
    308 return 1;
    -
    309 }
    -
    310 else
    -
    311 {
    -
    312 sw->tickprev = 0;
    -
    313 return 0;
    -
    314 }
    -
    315 }
    -
    316 }
    -
    317 else
    -
    318 {
    -
    319 sw->Sw_PrevState = 0;
    -
    320 }
    -
    321 return 0;
    -
    322}
    +
    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 = HAL_GetTick();
    +
    292
    +
    293 if((HAL_GetTick() - 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}
    -
    323//------------------------GPIO SW FUNCTIONS-------------------------
    -
    324//-------------------------------------------------------------------
    -
    Заголовочный файл для модуля инициализации портов.
    -
    #define check_null_ptr_1(_p1_)
    Проверить указатель на NULL.
    Definition mylibs_defs.h:38
    -
    #define check_null_ptr_2(_p1_, _p2_)
    Проверить два указателя на NULL.
    Definition mylibs_defs.h:40
    -
    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
    Светодиод включен
    -
    uint8_t 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 порт ножки светодиода
    -
    uint32_t tickprev
    Период моргания светодиода
    -
    uint8_t LED_ActiveLvl
    Активный уровень ножки (при котором светодиод горит)
    -
    GPIO_LEDStateTypeDef state
    Текущий режим работы светодиода
    -
    Структура кнопки
    -
    uint32_t tickprev
    Период моргания светодиода
    -
    uint32_t Sw_PrevState
    Предыдущее состояние кнопки
    -
    uint32_t Sw_FilterDelay
    Фильтр от дребезга (в мс)
    -
    uint8_t Sw_ActiveLvl
    Активный уровень ножки (при котором кнопка нажата)
    -
    uint32_t Sw_Pin
    GPIO пин ножки кнопки
    -
    GPIO_TypeDef * Sw_Port
    GPIO порт ножки кнопки
    +
    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
    Количество тиков в периоде ШИМ
    +
    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 index 8204ab5..7538746 100644 --- a/Doc/html/general__gpio_8h.html +++ b/Doc/html/general__gpio_8h.html @@ -101,9 +101,46 @@ $(function(){initNavTree('general__gpio_8h.html','',''); });
    -

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

    Заголовочный файл для модуля инициализации портов и работы с ними. 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.

    @@ -126,43 +163,43 @@ Macros - - + +
     Состояние пина при нажатой кнопке
    #define SW_OFF   0
     Состояние пина при отжатой кнопке
    #define TIM_Alternate_Mapping(INSTANCE)
     Маппинг альтернативной функции SPI между GPIO.
    #define GPIO_TIM_Alternate_Mapping(INSTANCE)
     Маппинг альтернативной функции SPI между GPIO.
    - - +

    Enumerations

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

    Functions

    HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef *GPIOx)
    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)
    HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
     Инициализировать кнопку (структуру кнопки)
    uint8_t 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)
    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_On (GPIO_LEDTypeDef *led)
     Включить светодиод
    HAL_StatusTypeDef GPIO_LED_Off (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_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
     Выставить светодиод по переменной
    HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
    HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
     Активировать моргание светодиодом
    HAL_StatusTypeDef GPIO_LED_Fading_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)
    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 index e5410ab..20925fe 100644 --- a/Doc/html/general__gpio_8h.js +++ b/Doc/html/general__gpio_8h.js @@ -5,21 +5,21 @@ var general__gpio_8h = [ "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 ], - [ "TIM_Alternate_Mapping", "group___g_p_i_o___g_e_n_e_r_a_l.html#ga34242874b455a72aa6e25841678ed105", null ], - [ "GPIO_LEDStateTypeDef", "group___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1", [ - [ "LED_IS_OFF", "group___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae", null ], - [ "LED_IS_ON", "group___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea", null ], - [ "LED_IS_BLINKING", "group___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb", null ], - [ "LED_IS_FADING", "group___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b", null ] + [ "GPIO_TIM_Alternate_Mapping", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga580b842096340b066c28b24d6b315be6", 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___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6", null ], - [ "GPIO_Switch_Init", "group___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ], - [ "GPIO_Read_Switch", "group___g_p_i_o___s_w_i_t_c_h.html#ga4b6b8be19a9265bfee6b2bb8a68e988f", null ], - [ "GPIO_LED_Init", "group___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084", null ], - [ "GPIO_LED_On", "group___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c", null ], - [ "GPIO_LED_Off", "group___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357", null ], - [ "GPIO_LED_Set", "group___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2", null ], - [ "GPIO_LED_Blink_Start", "group___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9", null ], - [ "GPIO_LED_Fading_Start", "group___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a", null ], - [ "GPIO_LED_Dynamic_Handle", "group___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2", 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 new file mode 100644 index 0000000..5752b36 --- /dev/null +++ b/Doc/html/general__gpio_8h__dep__incl.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Doc/html/general__gpio_8h__dep__incl.md5 b/Doc/html/general__gpio_8h__dep__incl.md5 new file mode 100644 index 0000000..ad68897 --- /dev/null +++ b/Doc/html/general__gpio_8h__dep__incl.md5 @@ -0,0 +1 @@ +601832d7a86478887e6618268a8e6110 \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..506ce3788e6bc0d8cdf10e5f073b9a9b7bf99555 GIT binary patch literal 17021 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

    DFV{ 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 PSD4A=OL(I{{``Lci<0Lb literal 0 HcmV?d00001 diff --git a/Doc/html/general__gpio_8h__incl.map b/Doc/html/general__gpio_8h__incl.map new file mode 100644 index 0000000..2a678e8 --- /dev/null +++ b/Doc/html/general__gpio_8h__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Doc/html/general__gpio_8h__incl.md5 b/Doc/html/general__gpio_8h__incl.md5 new file mode 100644 index 0000000..e999f78 --- /dev/null +++ b/Doc/html/general__gpio_8h__incl.md5 @@ -0,0 +1 @@ +64dafee7a8d3ae5fb443763ec7bc3400 \ No newline at end of file diff --git a/Doc/html/general__gpio_8h__incl.png b/Doc/html/general__gpio_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..04247fc3069caead3024a2a3d5fce8d3f08faf04 GIT binary patch literal 4033 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 to the documentation of this file.

    1/**
    2**************************************************************************
    3* @file general_gpio.h
    -
    4* @brief Заголовочный файл для модуля инициализации портов.
    +
    4* @brief Заголовочный файл для модуля инициализации портов и работы с ними.
    5**************************************************************************
    6* @defgroup MY_LIBS_GPIO GPIO Tools
    7* @ingroup MYLIBS_PERIPHERAL
    8* @brief Функции и макросы для удобной работы с GPIO.
    -
    9*************************************************************************/
    -
    10#ifndef __GPIO_GENERAL_H_
    -
    11#define __GPIO_GENERAL_H_
    -
    12
    -
    13#include "mylibs_defs.h"
    -
    14
    -
    15/**
    -
    16 * @addtogroup GPIO_INIT Init defines
    -
    17 * @ingroup GPIO_GENERAL
    -
    18 * @brief Настройка состояний кнопок и количества тиков в периоде ШИМ
    -
    19 * @{
    -
    20 */
    -
    21
    -
    22#ifndef LED_PWM_TICKS
    -
    23#define LED_PWM_TICKS 15 ///< Количество тиков в периоде ШИМ
    -
    24#endif
    -
    25
    -
    26#ifndef LED_ON
    -
    27#define LED_ON 1 ///< Состояние пина для включения светодиода
    -
    28#endif
    -
    29#ifndef LED_OFF
    -
    30#define LED_OFF 0 ///< Состояние пина для выключения светодиода
    -
    31#endif
    -
    32
    -
    33#ifndef SW_ON
    -
    34#define SW_ON 1 ///< Состояние пина при нажатой кнопке
    -
    35#endif
    -
    36#ifndef SW_OFF
    -
    37#define SW_OFF 0 ///< Состояние пина при отжатой кнопке
    -
    38#endif
    -
    39
    -
    40/** GPIO_INIT
    -
    41 * @}
    -
    42 */
    -
    43
    -
    44
    -
    45// /**
    -
    46// * @brief Маппинг альтернативной функции SPI между GPIO
    -
    47// * @ingroup GPIO_GENERAL
    -
    48// */
    -
    49// #define SPI_Alternate_Mapping(INSTANCE) \
    -
    50// ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
    -
    51// (((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
    -
    52// (((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
    -
    53// (((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
    -
    54// (0))
    -
    55
    -
    56
    -
    57/**
    -
    58 * @brief Маппинг альтернативной функции TIM между GPIO
    -
    59 * @ingroup GPIO_GENERAL
    -
    60 */
    -
    -
    61#define TIM_Alternate_Mapping(INSTANCE) \
    -
    62((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
    -
    63(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
    -
    64(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
    -
    65(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
    -
    66(0))
    +
    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 LED_PWM_TICKS
    +
    31#define LED_PWM_TICKS 15 ///< Количество тиков в периоде ШИМ
    +
    32#endif
    +
    33
    +
    34#ifndef LED_ON
    +
    35#define LED_ON 1 ///< Состояние пина для включения светодиода
    +
    36#endif
    +
    37#ifndef LED_OFF
    +
    38#define LED_OFF 0 ///< Состояние пина для выключения светодиода
    +
    39#endif
    +
    40
    +
    41#ifndef SW_ON
    +
    42#define SW_ON 1 ///< Состояние пина при нажатой кнопке
    +
    43#endif
    +
    44#ifndef SW_OFF
    +
    45#define SW_OFF 0 ///< Состояние пина при отжатой кнопке
    +
    46#endif
    +
    47
    +
    48/** GPIO_INIT
    +
    49 * @}
    +
    50 */
    +
    51
    +
    52
    +
    53// /**
    +
    54// * @brief Маппинг альтернативной функции SPI между GPIO
    +
    55// * @ingroup MYLIBS_GPIO_GENERAL
    +
    56// */
    +
    57// #define SPI_Alternate_Mapping(INSTANCE) \
    +
    58// ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
    +
    59// (((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
    +
    60// (((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
    +
    61// (((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
    +
    62// (0))
    +
    63
    +
    64
    +
    65/**
    +
    66 * @brief Маппинг альтернативной функции TIM между GPIO
    +
    67 * @ingroup MYLIBS_GPIO_GENERAL
    +
    68 */
    +
    +
    69#define GPIO_TIM_Alternate_Mapping(INSTANCE) \
    +
    70((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
    +
    71(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
    +
    72(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
    +
    73(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
    +
    74(0))
    -
    67
    -
    68
    -
    69/**
    -
    70 * @brief Режимы работы светодиода
    -
    71 * @ingroup GPIO_LEDS
    -
    72 */
    -
    -
    73typedef enum
    -
    74{
    -
    75 LED_IS_OFF = 0, ///< Светодиод выключен
    -
    76 LED_IS_ON = 1, ///< Светодиод включен
    -
    77 LED_IS_BLINKING = 2, ///< Моргание светодиодом
    -
    78 LED_IS_FADING = 3, ///< Плавное моргание светодиодом
    - +
    75
    +
    76
    +
    77/**
    +
    78 * @brief Режимы работы светодиода
    +
    79 * @ingroup MYLIBS_GPIO_LEDS
    +
    80 */
    +
    +
    81typedef enum
    +
    82{
    +
    83 LED_IS_OFF = 0, ///< Светодиод выключен
    +
    84 LED_IS_ON = 1, ///< Светодиод включен
    +
    85 LED_IS_BLINKING = 2, ///< Моргание светодиодом
    +
    86 LED_IS_FADING = 3, ///< Плавное моргание светодиодом
    +
    -
    80
    -
    81/**
    -
    82 * @brief Структура светодиода
    -
    83 * @ingroup GPIO_LEDS
    -
    84 */
    -
    -
    85typedef struct
    -
    86{
    -
    87 GPIO_LEDStateTypeDef state; ///< Текущий режим работы светодиода
    -
    88
    -
    89 GPIO_TypeDef *LED_Port; ///< GPIO порт ножки светодиода
    -
    90 uint32_t LED_Pin; ///< GPIO пин ножки светодиода
    -
    91
    -
    92 uint8_t LED_ActiveLvl; ///< Активный уровень ножки (при котором светодиод горит)
    -
    93 uint32_t LED_Period; ///< Период моргания светодиода
    -
    94
    -
    95 uint32_t tickprev;///< Период моргания светодиода
    - +
    88
    +
    89/**
    +
    90 * @brief Структура светодиода
    +
    91 * @ingroup MYLIBS_GPIO_LEDS
    +
    92 */
    +
    +
    93typedef struct
    +
    94{
    +
    95 GPIO_LEDStateTypeDef state; ///< Текущий режим работы светодиода
    +
    96
    +
    97 GPIO_TypeDef *LED_Port; ///< GPIO порт ножки светодиода
    +
    98 uint32_t LED_Pin; ///< GPIO пин ножки светодиода
    +
    99
    +
    100 uint8_t LED_ActiveLvl; ///< Активный уровень ножки (при котором светодиод горит)
    +
    101 uint32_t LED_Period; ///< Период моргания светодиода
    +
    102
    +
    103 uint32_t tickprev;
    +
    -
    97
    -
    98/**
    -
    99 * @brief Структура кнопки
    -
    100 * @ingroup GPIO_SWITCH
    -
    101 */
    -
    -
    102typedef struct
    -
    103{
    -
    104 GPIO_TypeDef *Sw_Port; ///< GPIO порт ножки кнопки
    -
    105 uint32_t Sw_Pin; ///< GPIO пин ножки кнопки
    -
    106
    -
    107 uint8_t Sw_ActiveLvl; ///< Активный уровень ножки (при котором кнопка нажата)
    -
    108 uint32_t Sw_PrevState; ///< Предыдущее состояние кнопки
    -
    109 uint32_t Sw_FilterDelay; ///< Фильтр от дребезга (в мс)
    -
    110
    -
    111 uint32_t tickprev;///< Период моргания светодиода
    - +
    105
    +
    106/**
    +
    107 * @brief Структура кнопки
    +
    108 * @ingroup MYLIBS_GPIO_SWITCH
    +
    109 */
    +
    +
    110typedef struct
    +
    111{
    +
    112 GPIO_TypeDef *Sw_Port; ///< GPIO порт ножки кнопки
    +
    113 uint32_t Sw_Pin; ///< GPIO пин ножки кнопки
    +
    114
    +
    115 uint8_t Sw_ActiveLvl; ///< Активный уровень ножки (при котором кнопка нажата)
    +
    116 uint32_t Sw_PrevState; ///< Предыдущее состояние кнопки
    +
    117 uint32_t Sw_FilterDelay; ///< Фильтр от дребезга (в мс)
    +
    118
    +
    119 uint32_t tickprev;
    +
    -
    113
    -
    114
    -
    115/////////////////////////////////////////////////////////////////////
    -
    116///////////////////////////---FUNCTIONS---///////////////////////////
    -
    117/**
    -
    118 * @addtogroup GPIO_GENERAL General tools
    -
    119 * @ingroup MY_LIBS_GPIO
    -
    120 * @brief Общие функции/макросы для работы с GPIO
    -
    121 * @{
    -
    122 */
    -
    123
    -
    124HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx);
    -
    125
    -
    126/** GPIO_GENERAL
    -
    127 * @}
    -
    128 */
    -
    129
    -
    130/**
    -
    131* @addtogroup GPIO_SWITCH Switch tools
    -
    132* @ingroup MY_LIBS_GPIO
    -
    133* @brief Функции для работы с GPIO, как с кнопкой
    -
    134* @{
    -
    135*/
    -
    136
    -
    137/* Инициализировать кнопку (структуру кнопки) */
    -
    138HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State);
    -
    139/* Считать состоянии кнопки запуска */
    -
    140uint8_t GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart);
    -
    141
    -
    142/** GPIO_SWITCH
    -
    143 * @}
    -
    144 */
    -
    145
    -
    146
    -
    147/**
    -
    148 * @addtogroup GPIO_LEDS LED tools
    -
    149 * @ingroup MY_LIBS_GPIO
    -
    150 * @brief Функции для работы с GPIO, для управления светодиодом
    -
    151 * @{
    +
    121
    +
    122
    +
    123/////////////////////////////////////////////////////////////////////
    +
    124///////////////////////////---FUNCTIONS---///////////////////////////
    +
    125/**
    +
    126 * @addtogroup MYLIBS_GPIO_GENERAL General tools
    +
    127 * @ingroup MY_LIBS_GPIO
    +
    128 * @brief Общие функции/макросы для работы с GPIO
    +
    129 * @{
    +
    130 */
    +
    131
    +
    132HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx);
    +
    133
    +
    134/** MYLIBS_GPIO_GENERAL
    +
    135 * @}
    +
    136 */
    +
    137
    +
    138/**
    +
    139* @addtogroup MYLIBS_GPIO_SWITCH Switch tools
    +
    140* @ingroup MY_LIBS_GPIO
    +
    141* @brief Функции для работы с GPIO, как с кнопкой
    +
    142* @{
    +
    143*/
    +
    144
    +
    145/* Инициализировать кнопку (структуру кнопки) */
    +
    146HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State);
    +
    147/* Считать состоянии кнопки запуска */
    + +
    149
    +
    150/** MYLIBS_GPIO_SWITCH
    +
    151 * @}
    152 */
    153
    -
    154/* Инициализировать светодиод (структуру светодиода) */
    -
    155HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State);
    -
    156/* Включить светодиод */
    -
    157HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led);
    -
    158/* Выключить светодиод */
    -
    159HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led);
    -
    160/* Выставить светодиод по переменной */
    -
    161HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state);
    -
    162/* Активировать моргание светодиодом */
    -
    163HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period);
    -
    164/* Активировать моргание светодиодом */
    -
    165HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period);
    -
    166/* Управление динамическими режимами свечения светодиода */
    - -
    168
    -
    169/** GPIO_LEDS
    -
    170 * @}
    -
    171 */
    -
    172///////////////////////////---FUNCTIONS---///////////////////////////
    -
    173
    -
    174
    -
    175#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
    Светодиод включен
    -
    uint8_t 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)
    Инициализировать кнопку (структуру кнопки)
    +
    154
    +
    155/**
    +
    156 * @addtogroup MYLIBS_GPIO_LEDS LED tools
    +
    157 * @ingroup MY_LIBS_GPIO
    +
    158 * @brief Функции для работы с GPIO, для управления светодиодом
    +
    159 * @{
    +
    160 */
    +
    161
    +
    162/* Инициализировать светодиод (структуру светодиода) */
    +
    163HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State);
    +
    164/* Включить светодиод */
    +
    165HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led);
    +
    166/* Выключить светодиод */
    +
    167HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led);
    +
    168/* Выставить светодиод по переменной */
    +
    169HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state);
    +
    170/* Активировать моргание светодиодом */
    +
    171HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period);
    +
    172/* Активировать моргание светодиодом */
    +
    173HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period);
    +
    174/* Управление динамическими режимами свечения светодиода */
    + +
    176
    +
    177/** MYLIBS_GPIO_LEDS
    +
    178 * @}
    +
    179 */
    +
    180///////////////////////////---FUNCTIONS---///////////////////////////
    +
    181
    +
    182
    +
    183#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 порт ножки светодиода
    -
    uint32_t tickprev
    Период моргания светодиода
    -
    uint8_t LED_ActiveLvl
    Активный уровень ножки (при котором светодиод горит)
    -
    GPIO_LEDStateTypeDef state
    Текущий режим работы светодиода
    -
    Структура кнопки
    -
    uint32_t tickprev
    Период моргания светодиода
    -
    uint32_t Sw_PrevState
    Предыдущее состояние кнопки
    -
    uint32_t Sw_FilterDelay
    Фильтр от дребезга (в мс)
    -
    uint8_t Sw_ActiveLvl
    Активный уровень ножки (при котором кнопка нажата)
    -
    uint32_t Sw_Pin
    GPIO пин ножки кнопки
    -
    GPIO_TypeDef * Sw_Port
    GPIO порт ножки кнопки
    +
    Структура светодиода
    +
    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__tim_8c.html b/Doc/html/general__tim_8c.html new file mode 100644 index 0000000..bc889a7 --- /dev/null +++ b/Doc/html/general__tim_8c.html @@ -0,0 +1,182 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/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 new file mode 100644 index 0000000..ae02dd9 --- /dev/null +++ b/Doc/html/general__tim_8c.js @@ -0,0 +1,14 @@ +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 new file mode 100644 index 0000000..1096c09 --- /dev/null +++ b/Doc/html/general__tim_8c__incl.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Doc/html/general__tim_8c__incl.md5 b/Doc/html/general__tim_8c__incl.md5 new file mode 100644 index 0000000..b3c8500 --- /dev/null +++ b/Doc/html/general__tim_8c__incl.md5 @@ -0,0 +1 @@ +b9386d564e6b4fd6c35f93b0536b2339 \ No newline at end of file diff --git a/Doc/html/general__tim_8c__incl.png b/Doc/html/general__tim_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..616abfe5664e201f7dbb808ac217117f039bb4dc GIT binary patch literal 8453 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 + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/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 дефайнами в 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 дефайнами в 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
    +
    #define GPIO_TIM_Alternate_Mapping(INSTANCE)
    Маппинг альтернативной функции SPI между GPIO.
    +
    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:77
    +
    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 new file mode 100644 index 0000000..534318f --- /dev/null +++ b/Doc/html/general__tim_8h.html @@ -0,0 +1,282 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/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_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)
     Считать кнопку энкодера.
    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_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

    +

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

    + +

    Definition in file general_tim.h.

    +

    Macro Definition Documentation

    + +

    ◆ TIM_IT_CONF_Pos

    + +
    +
    + + + + +
    #define TIM_IT_CONF_Pos   0
    +
    + +

    Definition at line 56 of file general_tim.h.

    + +
    +
    + +

    ◆ TIM_IT_CONF

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

    Definition at line 63 of file general_tim.h.

    + +
    +
    +
    +
    + +
    + + + + diff --git a/Doc/html/general__tim_8h.js b/Doc/html/general__tim_8h.js new file mode 100644 index 0000000..babcffb --- /dev/null +++ b/Doc/html/general__tim_8h.js @@ -0,0 +1,41 @@ +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_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 ], + [ "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_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/general__tim_8h__dep__incl.map b/Doc/html/general__tim_8h__dep__incl.map new file mode 100644 index 0000000..e76bc39 --- /dev/null +++ b/Doc/html/general__tim_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Doc/html/general__tim_8h__dep__incl.md5 b/Doc/html/general__tim_8h__dep__incl.md5 new file mode 100644 index 0000000..abe2711 --- /dev/null +++ b/Doc/html/general__tim_8h__dep__incl.md5 @@ -0,0 +1 @@ +44714191f83fa51a72cbc1377ffdbdff \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..c7c1671659597a001b31542966a438f42e3cd9d9 GIT binary patch literal 5296 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 + + + + + + + + + + + diff --git a/Doc/html/general__tim_8h__incl.md5 b/Doc/html/general__tim_8h__incl.md5 new file mode 100644 index 0000000..c5ffabb --- /dev/null +++ b/Doc/html/general__tim_8h__incl.md5 @@ -0,0 +1 @@ +8d2ac3de78aaeedbad6de045ad16b161 \ No newline at end of file diff --git a/Doc/html/general__tim_8h__incl.png b/Doc/html/general__tim_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ac28d97f201037167334aba7572792f6a0547bcd GIT binary patch literal 7341 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 l34l8^Sa0$DbLAhOqrS + + + + + + +MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/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* @note Требуется подключение модуля TIM в библиотеке HAL
    +
    16@code
    +
    17#define HAL_TIM_MODULE_ENABLED
    +
    18@endcode
    +
    19*************************************************************************/
    +
    20#ifndef __TIM_GENERAL_H_
    +
    21#define __TIM_GENERAL_H_
    +
    22
    +
    23/////////////////////////////////////////////////////////////////////
    +
    24/////////////////////////---USER SETTINGS---/////////////////////////
    +
    25/**
    +
    26 * @addtogroup TIM_INIT Init defines
    +
    27 * @ingroup MYLIBS_TIM_GENERAL
    +
    28 * @brief Настройка таймеров
    +
    29 * @{
    +
    30 */
    +
    31#define HAL_TIM_MODULE_ENABLED
    +
    32
    +
    33#define USE_TIM1 ///< Включить TIM1 в @ref TIM_Base_MspInit
    +
    34#define USE_TIM2 ///< Включить TIM2 в @ref TIM_Base_MspInit
    +
    35#define USE_TIM3 ///< Включить TIM3 в @ref TIM_Base_MspInit
    +
    36#define USE_TIM4 ///< Включить TIM4 в @ref TIM_Base_MspInit
    +
    37#define USE_TIM5 ///< Включить TIM5 в @ref TIM_Base_MspInit
    +
    38#define USE_TIM6 ///< Включить TIM6 в @ref TIM_Base_MspInit
    +
    39#define USE_TIM7 ///< Включить TIM7 в @ref TIM_Base_MspInit
    +
    40#define USE_TIM8 ///< Включить TIM8 в @ref TIM_Base_MspInit
    +
    41#define USE_TIM9 ///< Включить TIM9 в @ref TIM_Base_MspInit
    +
    42#define USE_TIM10 ///< Включить TIM10 в @ref TIM_Base_MspInit
    +
    43#define USE_TIM11 ///< Включить TIM11 в @ref TIM_Base_MspInit
    +
    44#define USE_TIM12 ///< Включить TIM12 в @ref TIM_Base_MspInit
    +
    45#define USE_TIM13 ///< Включить TIM13 в @ref TIM_Base_MspInit
    +
    46#define USE_TIM14 ///< Включить TIM14 в @ref TIM_Base_MspInit
    +
    47/** TIM_INIT
    +
    48 * @}
    +
    49 */
    +
    50/////////////////////////---USER SETTINGS---/////////////////////////
    +
    51#include "mylibs_defs.h"
    +
    52#include "general_gpio.h"
    +
    53
    +
    54/////////////////////////////////////////////////////////////////////
    +
    55////////////////////////////---DEFINES---////////////////////////////
    +
    56#define TIM_IT_CONF_Pos 0
    +
    57//#define TIM_PWM_CONF_Pos 1
    +
    58//#define TIM_CLCK_SRC_CONF_Pos 2
    +
    59//#define TIM_SLAVE_CONF_Pos 3
    +
    60//#define TIM_MASTER_CONF_Pos 4
    +
    61//#define TIM_BDTR_CONF_Pos 5
    +
    62
    +
    63#define TIM_IT_CONF (1<<(TIM_IT_CONF_Pos))
    +
    64//#define TIM_PWM_CONF (1<<(TIM_PWM_Pos))
    +
    65
    +
    66////////////////////////////---DEFINES---////////////////////////////]
    +
    67
    +
    68
    +
    69
    +
    70/////////////////////////////////////////////////////////////////////
    +
    71///////////////////////---STRUCTURES & ENUMS---//////////////////////
    +
    72/**
    +
    73 * @brief Режим прерываний таймера
    +
    74 * @ingroup MYLIBS_TIM_GENERAL
    +
    75 */
    +
    +
    76typedef enum
    +
    77{
    +
    78 TIM_DEFAULT = 0, ///< Прерываний отключены
    +
    79 TIM_IT_MODE = TIM_IT_CONF, ///< Прерываний включены
    +
    80// TIM_PWM_MODE = TIM_PWM_ENABLE,
    +
    81// TIM_PWM_IT_MODE = TIM_PWM_ENABLE | TIM_IT_CONF,
    + +
    +
    83
    +
    84/**
    +
    85 * @brief Длительность тика таймера (частота тактирования таймера)
    +
    86 * @ingroup MYLIBS_TIM_GENERAL
    +
    87 * @details enum дает базовые длительности, но можно выставить другие
    +
    88 * (напр 500 - 0.5 мс)
    +
    89 */
    +
    +
    90typedef enum
    +
    91{
    +
    92 TIM_Base_Disable = 0, ///< Таймер отключен
    +
    93 TIM_TickBase_1US = 1, ///< Таймер тактируется с частотой 1 МГц
    +
    94 TIM_TickBase_10US = 10, ///< Таймер тактируется с частотой 100 кГц
    +
    95 TIM_TickBase_100US = 100, ///< Таймер тактируется с частотой 10 кГц
    +
    96 TIM_TickBase_1MS = 1000, ///< Таймер тактируется с частотой 1 кГц
    +
    97 TIM_TickBase_10MS = 10000, ///< Таймер тактируется с частотой 100 Гц
    +
    98 TIM_TickBase_100MS = 100000, ///< Таймер тактируется с частотой 10 Гц
    + +
    +
    100
    +
    101/**
    +
    102 * @brief Структура инициализации таймера
    +
    103 * @ingroup MYLIBS_TIM_GENERAL
    +
    104 * @details
    +
    105 * Содержит все базовые структуры, которые нужны для инициализации таймера.
    +
    106 * Если структуры настроек не заданы, то они заполнятся сами дефолтными параметрами
    +
    107 *
    +
    108 * Также высокоуровневые настройки частоты работы таймера.
    +
    109 * Если какая-либо высокоуровневая настройка не задана, то
    +
    110 * по возможности берется низкоуровневая настройка из структур
    +
    111 */
    +
    +
    112typedef struct // struct with settings for custom function
    +
    113{
    +
    114 TIM_HandleTypeDef htim; ///< HAL handle таймера
    +
    115 TIM_ClockConfigTypeDef sClockSourceConfig; ///< Настройки тактирования таймера
    +
    116 TIM_SlaveConfigTypeDef sSlaveConfig; ///< Настройки слейв режима таймера
    +
    117 TIM_MasterConfigTypeDef sMasterConfig; ///< Настройки мастер режима таймера
    +
    118 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; ///< Настройки дедтаймов таймера
    +
    119
    +
    120 TIM_ITModeTypeDef sTimMode; ///< Настройки прерывания таймера
    +
    121 TIM_MHzTickBaseTypeDef sTickBaseUS; ///< Длительность одного тика
    +
    122 uint8_t sTickBasePrescaler; ///< Дополнительный делитель, для удобного деления @ref sTickBaseUS
    +
    123 float sTimAHBFreqMHz; ///< Частота шины тактирования таймера
    +
    124 float sTimFreqHz; ///< Желаемая частота таймера
    +
    125
    + +
    +
    127
    +
    128
    +
    129/**
    +
    130 * @brief Структура инициализации енкодера
    +
    131 * @ingroup MYLIBS_TIM_ENCODER
    +
    132 * @details
    +
    133 * Содержит все базовые структуры, которые нужны для инициализации таймера.
    +
    134 * Если структуры настроек не заданы, то они заполнятся сами дефолтными параметрами
    +
    135 *
    +
    136 * Также высокоуровневые настройки частоты работы таймера.
    +
    137 * Если какая-либо высокоуровневая настройка не задана, то
    +
    138 * по возможности берется низкоуровневая настройка из структур
    +
    139 */
    +
    +
    140typedef struct // struct with variables for encoder
    +
    141{
    +
    142 int16_t Encoder_Diff; ///< Считанная разница
    +
    143 uint16_t Encoder_Shdw; ///< Последние считанные тики
    +
    144
    +
    145 TIM_HandleTypeDef *htim; ///< Указатель на HAL handle таймера
    +
    146 TIM_Encoder_InitTypeDef sConfig; ///< Указатель на структуру настройки энкодера
    +
    147
    +
    148 GPIO_TypeDef *GPIOx; ///< Порт, куда подключается энкодер
    +
    149 uint32_t GPIO_PIN_TI1; ///< Пин, куда подключается канал TI1
    +
    150 uint32_t GPIO_PIN_TI2; ///< Пин, куда подключается канал TI2
    +
    151 uint32_t GPIO_PIN_SW; ///< Пин, куда кнопка энкодера (если есть)
    +
    152
    +
    153 GPIO_SwitchTypeDef Sw; ///< Структура кнопки
    +
    154
    + +
    +
    156///////////////////////---STRUCTURES & ENUMS---//////////////////////
    +
    157
    +
    158/////////////////////////////////////////////////////////////////////
    +
    159///////////////////////////---FUNCTIONS---///////////////////////////
    +
    160/**
    +
    161 * @addtogroup MYLIBS_TIM_OC PWM/OC Channels tools
    +
    162 * @ingroup MY_LIBS_TIM
    +
    163 * @brief Функции для инициализации базовых функций каналов таймера
    +
    164 * @{
    +
    165 */
    +
    166/* Initialize PWM Channel and GPIO for output */
    +
    167HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN);
    +
    168/* Initialize OC Comparator */
    +
    169HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL);
    +
    170/** MYLIBS_TIM_ENCODER
    +
    171 * @}
    +
    172 */
    +
    173
    +
    174/**
    +
    175 * @addtogroup MYLIBS_TIM_ENCODER Encoder tools
    +
    176 * @ingroup MY_LIBS_TIM
    +
    177 * @brief Функции для считывания энкодера
    +
    178 * @{
    +
    179 */
    +
    180/* Initialize TIM Encoder functional */
    +
    181HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim);
    +
    182/* Считать энкодер */
    +
    183HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc);
    +
    184/* Считать кнопку энкодера */
    + +
    186/** MYLIBS_TIM_ENCODER
    +
    187 * @}
    +
    188 */
    +
    189
    +
    190/**
    +
    191 * @addtogroup MYLIBS_TIM_DELAY Delay tools
    +
    192 * @ingroup MY_LIBS_TIM
    +
    193 * @brief Функции для формирования задержек с помощью таймеров
    +
    194 * @{
    +
    195 */
    +
    196/* Start delay via TIM */
    +
    197HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim);
    +
    198/* Delay via TIM */
    +
    199HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay);
    +
    200/* Wait Delay via TIM without blocking app */
    +
    201HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay);
    +
    202/** MYLIBS_TIM_DELAY
    +
    203 * @}
    +
    204 */
    +
    205
    +
    206/**
    +
    207 * @addtogroup MYLIBS_TIM_GENERAL General tools
    +
    208 * @ingroup MY_LIBS_TIM
    +
    209 * @brief Функции для базовой инициализации таймеров
    +
    210 * @{
    +
    211 */
    +
    212/* Initialize TIM with TIM_SettingsTypeDef structure */
    +
    213HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef* stim);
    +
    214/* Initialize TIMs clock and interrupt */
    +
    215void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode);
    +
    216/* DeInitialize TIMs clock and interrupt */
    +
    217void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim);
    +
    218/** MYLIBS_TIM_GENERAL
    +
    219 * @}
    +
    220 */
    +
    221///////////////////////////---FUNCTIONS---///////////////////////////
    +
    222
    +
    223
    +
    224#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:91
    +
    void TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
    Инициализация CLK и NVIC таймеров.
    +
    TIM_ITModeTypeDef
    Режим прерываний таймера
    Definition general_tim.h:77
    +
    @ TIM_TickBase_10US
    Таймер тактируется с частотой 100 кГц
    Definition general_tim.h:94
    +
    @ TIM_TickBase_100US
    Таймер тактируется с частотой 10 кГц
    Definition general_tim.h:95
    +
    @ TIM_TickBase_100MS
    Таймер тактируется с частотой 10 Гц
    Definition general_tim.h:98
    +
    @ TIM_TickBase_1US
    Таймер тактируется с частотой 1 МГц
    Definition general_tim.h:93
    +
    @ TIM_TickBase_1MS
    Таймер тактируется с частотой 1 кГц
    Definition general_tim.h:96
    +
    @ TIM_TickBase_10MS
    Таймер тактируется с частотой 100 Гц
    Definition general_tim.h:97
    +
    @ TIM_Base_Disable
    Таймер отключен
    Definition general_tim.h:92
    +
    @ TIM_IT_MODE
    Прерываний включены
    Definition general_tim.h:79
    +
    @ TIM_DEFAULT
    Прерываний отключены
    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 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/globals.html b/Doc/html/globals.html index ff955a0..e430e85 100644 --- a/Doc/html/globals.html +++ b/Doc/html/globals.html @@ -111,11 +111,11 @@ $(function(){initNavTree('globals.html','',''); });

    - c -

    @@ -126,17 +126,18 @@ $(function(){initNavTree('globals.html','',''); });

    - g -

    @@ -163,10 +164,10 @@ $(function(){initNavTree('globals.html','',''); });

    - l -

    diff --git a/Doc/html/globals_defs.html b/Doc/html/globals_defs.html index 0a8045f..df9d5c8 100644 --- a/Doc/html/globals_defs.html +++ b/Doc/html/globals_defs.html @@ -111,11 +111,11 @@ $(function(){initNavTree('globals_defs.html','',''); });

    - c -

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

    - g -

    @@ -192,7 +193,6 @@ $(function(){initNavTree('globals_defs.html','',''); });

    - t -

    + + +

    - u -

    diff --git a/Doc/html/globals_enum.html b/Doc/html/globals_enum.html index 1126f6c..6f657c5 100644 --- a/Doc/html/globals_enum.html +++ b/Doc/html/globals_enum.html @@ -98,7 +98,9 @@ $(function(){initNavTree('globals_enum.html','',''); });
    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 index 1f87744..0a9db7f 100644 --- a/Doc/html/globals_eval.html +++ b/Doc/html/globals_eval.html @@ -98,10 +98,19 @@ $(function(){initNavTree('globals_eval.html','',''); });
    Here is a list of all documented enum values with links to the documentation:
    diff --git a/Doc/html/globals_func.html b/Doc/html/globals_func.html index 9e5a2dd..7489c79 100644 --- a/Doc/html/globals_func.html +++ b/Doc/html/globals_func.html @@ -97,24 +97,49 @@ $(function(){initNavTree('globals_func.html','',''); });
-
Here is a list of all documented functions with links to the documentation:
diff --git a/Doc/html/graph_legend.html b/Doc/html/graph_legend.html new file mode 100644 index 0000000..141b423 --- /dev/null +++ b/Doc/html/graph_legend.html @@ -0,0 +1,173 @@ + + + + + + + +MyLibs: Graph Legend + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
+
+
+ + + + diff --git a/Doc/html/graph_legend.md5 b/Doc/html/graph_legend.md5 new file mode 100644 index 0000000..da515da --- /dev/null +++ b/Doc/html/graph_legend.md5 @@ -0,0 +1 @@ +f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/Doc/html/graph_legend.png b/Doc/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..feea22ab166bd34aa2a2130ff4c721152ec66803 GIT binary patch literal 12453 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%0D<(%2E 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Макросы и typedef'ы для работы с битами в unsigned типах. More...

+
Collaboration diagram for Bit access defines:
+
+
+ diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map new file mode 100644 index 0000000..3e0bb0e --- /dev/null +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 new file mode 100644 index 0000000..aab75c0 --- /dev/null +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 @@ -0,0 +1 @@ +58861c427738147326054c740ac5c202 \ No newline at end of file diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png new file mode 100644 index 0000000000000000000000000000000000000000..3f10226e433e9ff5ad4c0d7ab85279c7622ff4eb GIT binary patch literal 1167 zcmV;A1aSL_P)6qo99=!}R1qSn1XOKz8Y&AO%4RJ*@R)l?s&}R3;u~qUkeFGRc$YnP<{|UNA6| zCwcNsn0)y@$^THrBGyhs#iyo?OgW}v;VR_i$l%)b5om}n?D>L9)8XA$>DwAMJ`uei+l?F z)_BJrY;0^q|22#df81X6RJ3e}Rn_Ke|82M&QyWVkD)^|bs@R5EzJ;jns`~UaZ2SrM zV)nYj^yfwTz;nRgRNv?N4*1z+r){mRt;N{we{4e@AL>?ARZsug48KA=MRYwTS6&{0 zo7F+C&OIO(b+>DqxauT|&{bHVD)L9*OW-!}8t@hH2aqvMWMZ)>aaFa~ZFB9TjnGwC zsJOjVUbX~gUihv;+9)QP38sy;*PuV4avKYM)!yaBuqyv?){%YYj` zceo67Z`c>tFKaiSu9?Fhmmyw=wyL-nwfVY_wT$6z(cG0i7!0o&7Z(GOlR9a z3;Y^49FcifW^RuJ^Ly+7L~K-fiAX0Yd5K6TDS3%VCnB002ovPDHLkV1g<`N_YSO literal 0 HcmV?d00001 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 230069e..b32f9a6 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 @@ -103,6 +103,16 @@ $(function(){initNavTree('group___d_e_l_a_y_s___d_e_f_i_n_e_s.html','',''); });

Макросы и определения для работы с задержками в миллисекундах. More...

+
Collaboration diagram for Delays defines:
+
+
+

Classes

@@ -149,7 +159,7 @@ Macros
Note
Использует HAL_Delay или osDelay в зависимости от FREERTOS_DELAY.
-

Definition at line 82 of file mylibs_defs.h.

+

Definition at line 86 of file mylibs_defs.h.

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

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

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

-

Definition at line 94 of file mylibs_defs.h.

+

Definition at line 98 of file mylibs_defs.h.

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

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

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

Definition at line 111 of file mylibs_defs.h.

+

Definition at line 115 of file mylibs_defs.h.

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

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

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

Definition at line 128 of file mylibs_defs.h.

+

Definition at line 132 of file mylibs_defs.h.

diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map new file mode 100644 index 0000000..b015f63 --- /dev/null +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 new file mode 100644 index 0000000..c96e50e --- /dev/null +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 @@ -0,0 +1 @@ +591a0b98d98294b7a16c22b9669d8b64 \ No newline at end of file diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.png b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.png new file mode 100644 index 0000000000000000000000000000000000000000..263c49ab708d0dfca0984b25694e12bb1348c716 GIT binary patch literal 1155 zcmV-}1bq96P)(693{j z4jn>k8yg#}udjy=Lo6I0A9HqgwzNMA5Q~UhF-kNd;++zWh6h{S=;#Y<%e|bGfx3;10Mo!0Z-2M531*zUjr7$@ng9zEPq{nzQ#`8KxGXw zP18Ytst-MWOV@zcfUkj5rYneVahYTWFG-SKf7)LKo%LwS6!j8{UYjSY`Rgvn&G(m; z?MhMo+2K-lU;c5^>#KXMg;#-(f%k!Dfd9CBKV0kTBz=}mK2^PevU2$zMbUGc`m<$= z$`#d<9WG_}%4oM-8xu3qtlYYtj;du&RThQxr<&)m7<|W*L?Jvs_N`$==2Nl#caC)d<1+7Jj>$z zOp)(^-(61H*4o;dx4K=2KrZ#S8G`t@n`GPj>ebMx?Cy-soP`V9s(7OW+0R9Xcjtt$ET00?5{s}lvEBHk&{h=_MeG$P`i5{-y>r+*+Py?1(gTKG@Nq<=0hE(-TA zC7LLTP9~Gd-r?b)_n>4oq9{5E9fPYhP4~{v&qIeH4Mb7&sJ@hlh=_=Yh=_=++W(!n VTobP>b?yKF002ovPDHLkV1lGlN*@3K literal 0 HcmV?d00001 diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html index 1bc83fb..1ce57be 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html @@ -103,21 +103,31 @@ $(function(){initNavTree('group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html

Дефайны для обработки ошибок More...

+
Collaboration diagram for Error Handler defines:
+
+
+

Macros

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

Macros

#define MyLibs_Error_Handler(params)
 Error_Handler который будет вызыватся в библиотеке
#define check_null_ptr_1(_p1_)
 Проверить указатель на NULL.
#define check_null_ptr_2(_p1_, _p2_)
 Проверить два указателя на NULL.
#define check_null_ptr_3(_p1_, _p2_, _p3_)
 Проверить три указателя на NULL.
#define check_null_ptr_4(_p1_, _p2_, _p3_, _p4_)
 Проверить четыре указателя на NULL.
#define check_null_ptr_5(_p1_, _p2_, _p3_, _p4_, _p5_)
 Проверить пять указателей на NULL.
#define check_null_ptr_1(p1)
 Проверить один указатель на NULL.
#define check_null_ptr_2(p1, p2)
 Проверить два указателя на NULL.
#define check_null_ptr_3(p1, p2, p3)
 Проверить три указателя на NULL.
#define check_null_ptr_4(p1, p2, p3, p4)
 Проверить четыре указателя на NULL.
#define check_null_ptr_5(p1, p2, p3, p4, p5)
 Проверить пять указателей на NULL.
@@ -149,8 +159,8 @@ void  - +

Functions

Error_Handler (vo - -

◆ check_null_ptr_1

+ +

◆ check_null_ptr_1

@@ -158,21 +168,21 @@ void 
Error_Handler (vo
#define check_null_ptr_1 ( _p1_) p1)
-Value:
(_p1_ == NULL)
+Value:
(p1 == NULL)
-

Проверить указатель на NULL.

+

Проверить один указатель на NULL.

Definition at line 38 of file mylibs_defs.h.

- -

◆ check_null_ptr_2

+ +

◆ check_null_ptr_2

@@ -180,25 +190,25 @@ void Error_Handler (vo #define check_null_ptr_2 ( - _p1_, + p1, - _p2_ ) + p2 )
-Value:
((_p1_ == NULL) || (_p2_ == NULL))
+Value:
((p1 == NULL) || (p1 != NULL && p2 == NULL))

Проверить два указателя на NULL.

-

Definition at line 40 of file mylibs_defs.h.

+

Definition at line 41 of file mylibs_defs.h.

- -

◆ check_null_ptr_3

+ +

◆ check_null_ptr_3

@@ -206,30 +216,30 @@ void Error_Handler (vo #define check_null_ptr_3 ( - _p1_, + p1, - _p2_, + p2, - _p3_ ) + p3 )
-Value:
((_p1_ == NULL) || (_p2_ == NULL) || (_p3_ == NULL))
+Value:
((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && p3 == NULL))))

Проверить три указателя на NULL.

-

Definition at line 42 of file mylibs_defs.h.

+

Definition at line 44 of file mylibs_defs.h.

- -

◆ check_null_ptr_4

+ +

◆ check_null_ptr_4

@@ -237,35 +247,35 @@ void Error_Handler (vo #define check_null_ptr_4 ( - _p1_, + p1, - _p2_, + p2, - _p3_, + p3, - _p4_ ) + p4 )
-Value:
((_p1_ == NULL) || (_p2_ == NULL) || (_p3_ == NULL) || (_p4_ == NULL))
+Value:
((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && p4 == NULL))))))

Проверить четыре указателя на NULL.

-

Definition at line 44 of file mylibs_defs.h.

+

Definition at line 47 of file mylibs_defs.h.

- -

◆ check_null_ptr_5

+ +

◆ check_null_ptr_5

@@ -273,35 +283,35 @@ void Error_Handler (vo #define check_null_ptr_5 ( - _p1_, + p1, - _p2_, + p2, - _p3_, + p3, - _p4_, + p4, - _p5_ ) + p5 )
-Value:
((_p1_ == NULL) || (_p2_ == NULL) || (_p3_ == NULL) || (_p4_ == NULL) || (_p5_ == NULL))
+Value:
((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && ((p4 == NULL) || (p4 != NULL && p5 == NULL))))))))

Проверить пять указателей на NULL.

-

Definition at line 46 of file mylibs_defs.h.

+

Definition at line 50 of file mylibs_defs.h.

diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.js b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.js index e36b4ca..5060995 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.js +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.js @@ -1,9 +1,9 @@ var group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s = [ [ "MyLibs_Error_Handler", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f", null ], - [ "check_null_ptr_1", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga0b75f0bcf066acdf797b8e6730c52f86", null ], - [ "check_null_ptr_2", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae7d1cbb9075ee4b830342fd564d96be0", null ], - [ "check_null_ptr_3", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga002f4a5f5d8bb37d88f607386bc6ba2e", null ], - [ "check_null_ptr_4", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gade91c09d89a5f69003dcfe506ed0327f", null ], - [ "check_null_ptr_5", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga944edcd2c65519578d36730b94701f64", null ] + [ "check_null_ptr_1", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9", null ], + [ "check_null_ptr_2", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3", null ], + [ "check_null_ptr_3", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2", null ], + [ "check_null_ptr_4", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254", null ], + [ "check_null_ptr_5", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490", null ] ]; \ No newline at end of file diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map new file mode 100644 index 0000000..f3bc919 --- /dev/null +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 new file mode 100644 index 0000000..7cefaa5 --- /dev/null +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 @@ -0,0 +1 @@ +e4a53f66d0e2072179f4dedfeba20d50 \ No newline at end of file diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f8ee4ff3c07f31585476f2e17e426a60e665ea GIT binary patch literal 1156 zcmZvc`!gE`0LK$)>9nHOwT;JWRdk0?rBO;$B^TrbRgX1Z6_soRp-MK7R<}FvXGlA5 zTAgGt=}=k0~K z3jhG&$J^qR_OZngKP?=Wb~GA=0BHVA1NU_W0C2+D8{u&;y=GnFp16#F@HdsAD2$0u zg%J?zzj5{N8y{Rs2@P5vVDOJ$ciP(lKhyO=coK<={f%C`U`8+6gLX>SKc6#(49NE? zD|U~|mv|LBsEYXxik-dPvf%vn&0+b--nc7k6lm~?HHW|mCYO8IY5yK`alp%jT<1P7 zksQ($H!}+P@-_ypGz(q6d{flPA53);78Tm3725AoFIL$MgiEQ6XB&;#1ryVcTqGbk zl)AG(pn2zO*n}MgP9?lw+K>X>?qs~kdS6l(BO3#=xHG|O^w z<{`!R(@(2`>ADBH8GqWW4W!g<3tv5NbEI39c~+5ZakE1ts6=eyDS@!E=sZucijDh@ zJrdG!cLqsT-Fp+ZlTvXQFJcxCJbe5iCF5zy>UrsvDC2ZvwQ*>5B9=binn=TxMz00g zit55P8F;F3OsT~Xj1p*%Ujy&ZA3LZDw01HgEbELJdzwM`@ZR8-B@N1mZx(> za7_Xz6bfzzy|7?5%`N1eZK4=1%1e87F0%G)7u$t3ajhHDC1k@vm2AH!rmOW%PodH{ zX%M5T7pDJW1VT+9uJ^R|w|7(~H4d`rM$JoXIF7>hNJyaIEvR7(@?Mgpoj8%=eVvKV zE{kpNbKo#Hjk@A8-9cBkh?*gYKMg7;zu~<-iXQwjeh81wT6y^n%epbwKFhMY975`W z88&UlPv8qTeX>BjlRVJkNge9}FqsV~3va(+@Tpe@9PJTt}4{%L>aGVS<+FHFS=tmU29xmDAN#p+LTr#T}VV za0M|km3FLQH-7ktJ`alG%0m%3fwBtZTMqcPxg)n0iO@#n`TbYf{$at30zuwR$(;h5 zWD@B?cs6v?!aLcu7PAWmgPU|LL}lgz(u}=YxRs$i2=klD?KAgwA*&-0pOEdD*7@39 U#=&1~9p4JT8;L
- +

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

+
Collaboration diagram for Init defines:
+
+
+ @@ -134,7 +144,7 @@ Macros

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

-

Definition at line 23 of file general_gpio.h.

+

Definition at line 31 of file general_gpio.h.

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

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

-

Definition at line 27 of file general_gpio.h.

+

Definition at line 35 of file general_gpio.h.

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

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

-

Definition at line 30 of file general_gpio.h.

+

Definition at line 38 of file general_gpio.h.

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

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

-

Definition at line 34 of file general_gpio.h.

+

Definition at line 42 of file general_gpio.h.

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

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

-

Definition at line 37 of file general_gpio.h.

+

Definition at line 45 of file general_gpio.h.

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 new file mode 100644 index 0000000..994ad72 --- /dev/null +++ b/Doc/html/group___g_p_i_o___i_n_i_t.map @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 0000000..2df6bcc --- /dev/null +++ b/Doc/html/group___g_p_i_o___i_n_i_t.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..6fb3b6c5ea8028f08224ffbc3338d4e5ffc490e9 GIT binary patch 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
-

Включенные трекеры и трассировки в МЗКТЭ +

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

+
Collaboration diagram for Libraries configs:
+
+
+

Macros

@@ -116,7 +126,7 @@ Macros

Macros

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

Detailed Description

-

Включенные трекеры и трассировки в МЗКТЭ

+

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

Macro Definition Documentation

◆ INCLUDE_BIT_ACCESS_LIB

@@ -132,7 +142,7 @@ Macros

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

-

Definition at line 69 of file mylibs_config.h.

+

Definition at line 65 of file mylibs_config.h.

@@ -150,7 +160,7 @@ Macros

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

-

Definition at line 70 of file mylibs_config.h.

+

Definition at line 66 of file mylibs_config.h.

@@ -168,7 +178,7 @@ Macros

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

-

Definition at line 71 of file mylibs_config.h.

+

Definition at line 67 of file mylibs_config.h.

@@ -186,7 +196,7 @@ Macros

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

-

Definition at line 72 of file mylibs_config.h.

+

Definition at line 68 of file mylibs_config.h.

diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.map b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.map new file mode 100644 index 0000000..4f85ccb --- /dev/null +++ b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.md5 b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.md5 new file mode 100644 index 0000000..e76c949 --- /dev/null +++ b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.md5 @@ -0,0 +1 @@ +808022049140e07e55939aab8e99f2c8 \ No newline at end of file diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.png b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.png new file mode 100644 index 0000000000000000000000000000000000000000..b177fb80ffaf8c19b4d98e467b4939f7b0865427 GIT binary patch literal 1060 zcmV+<1l#+GP)O1!oYt3NYD&KLW)opB0-x)+iL_|bHM9wCYow2^Ye#sbf%||g^WUc*eb93{F?>g$}^?Iwm zYY?}hC^|@zPE9Nl zIHyf)jCu8PEj?}%<2&{y@Hy}U@S*2gN-MghmR{D>t+$YF>BVvUs$So9PrOfDl`#fu z?Zj!9W4jvHv2(!3z)eOC{MO0*2i_`jsEyAJg!0*hIF4Vd)py-anmDgvt+h@Yxx+pH zZZm4$i@?7){O2e#O{3?;c?~=%a;KwmdRbnC&f9iU)NUx^zYlx^`~&5wc z%UpAIBrX$OUBug>G4sZEy}yhR*9vq#wn}l_iZXppE^|adc9R+%)?OPNtVk55XUjr+O>YaU*+6#0k{s_0zL&k z!Bd>x*x0aoD1cusqyEW50k-=6{%cS6=+xEeIy(3f%xA!lz$)-I@Q2@Wq)k3Pf*D-g z%W5Gq&*G`?0;F9&uAB$o#L&6Ml{2pGQ_EZEnZZH_+ zK5$&Zb9{W9JO5M@M^SVz91gd3c6J&sDg;p!9r&)HE^F=9(b19bGQ^=MiXKg0OGHFO eL_|d7Z1@kbNA9_BФункции и макросы для удобной работы с GPIO. More...

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

Topics

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

Detailed Description

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

+

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

    +
  • General tools — инициализация и общие функции работы с портами.
  • +
  • Switch tools — работа с GPIO как с кнопкой: чтение состояния, фильтрация дребезга, настройка активного уровня.
  • +
  • LED tools — работа с GPIO как со светодиодом: включение, выключение, моргание и плавное затухание.
  • +
@@ -207,7 +217,7 @@ Functions -

Definition at line 69 of file general_gpio.c.

+

Definition at line 73 of file general_gpio.c.

@@ -235,7 +245,7 @@ Functions
Returns
HAL Status
-

Definition at line 87 of file general_gpio.c.

+

Definition at line 91 of file general_gpio.c.

@@ -263,7 +273,7 @@ Functions
Returns
HAL Status
-

Definition at line 105 of file general_gpio.c.

+

Definition at line 107 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 new file mode 100644 index 0000000..0cb5069 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.js @@ -0,0 +1,23 @@ +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 new file mode 100644 index 0000000..84e977d --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.map @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 0000000..665891b --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..ab4e080e98e900dd9e1cd46e33df3e5e2ada7930 GIT binary patch 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
@@ -103,6 +103,16 @@ $(function(){initNavTree('group___g_p_i_o___s_w_i_t_c_h.html','',''); });

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

+
Collaboration diagram for Switch tools:
+
+
+ @@ -113,8 +123,8 @@ Classes Functions - - + +

Classes

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

Detailed Description

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

@@ -164,14 +174,14 @@ Functions
- -

◆ GPIO_Read_Switch()

+ +

◆ GPIO_Read_Switch()

- + @@ -186,10 +196,10 @@ Functions
uint8_t GPIO_Read_Switch int GPIO_Read_Switch ( GPIO_SwitchTypeDef * sw)
-
Returns
1 - если кнопка нажата, 0 - если отжата
+
Returns
1 - если кнопка нажата, 0 - если отжата, -1 - если ошибка

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

-

Definition at line 276 of file general_gpio.c.

+

Definition at line 278 of file general_gpio.c.

diff --git a/Doc/html/group___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 similarity index 58% rename from Doc/html/group___g_p_i_o___s_w_i_t_c_h.js rename to Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.js index e174291..cc824a0 100644 --- a/Doc/html/group___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 @@ -1,13 +1,12 @@ -var group___g_p_i_o___s_w_i_t_c_h = +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 ], - [ "tickprev", "struct_g_p_i_o___switch_type_def.html#a13f97b867ff1a77ef182c9b13d964ca6", null ] + [ "Sw_FilterDelay", "struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06", null ] ] ], - [ "GPIO_Switch_Init", "group___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ], - [ "GPIO_Read_Switch", "group___g_p_i_o___s_w_i_t_c_h.html#ga4b6b8be19a9265bfee6b2bb8a68e988f", 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 new file mode 100644 index 0000000..7f03793 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.map @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 0000000..ca8ef1e --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..6b8513a6cddb391519b4180697bf587e50af342d GIT binary patch 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` literal 0 HcmV?d00001 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 index c223be2..be528a7 100644 --- 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 @@ -103,11 +103,25 @@ $(function(){initNavTree('group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html','','')

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

+
Collaboration diagram for Peripheral:
+
+
+ + +

Topics

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

Detailed Description

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

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 index 1d29866..3fc66f5 100644 --- 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 @@ -1,4 +1,5 @@ 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" ] + [ "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" ], + [ "TIM Tools", "group___m_y___l_i_b_s___t_i_m.html", "group___m_y___l_i_b_s___t_i_m" ] ]; \ 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 new file mode 100644 index 0000000..fc698cf --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map @@ -0,0 +1,6 @@ + + + + + + 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 new file mode 100644 index 0000000..ee8c449 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 @@ -0,0 +1 @@ +9a24bce9b60d282ebbaf04d75a3cfad4 \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..756240e0912f61f220dcf42c41800943fbae8b59 GIT binary patch literal 2455 zcmZ{mdpy(YAHcV1!*ZvykW0cVBe|rBQJ6wY(F|jeOPpMn!$g|7E^;L4D3{!6v@ET1 z+3XZnE-97!WtB+F?J$?Qoo~NC&VRq>dA*+d>+^X&ug~**-k%%ioKH!^Rp1~HNZQc> z;|c*5!GH{Dcqo)L5@h}`QPGrgK~vS6&Ji&VKK zJRbD68!Z1{naRtI7Q<*OGX!%>=m>KE?B19>r*A_my(b%jX*BKLrIu4_yvDINI8coUyT1%q^!twI*T}pLYT6gt4>@f!C>oaH` zRiE)%eJ@Fbc~$y=AZJ4S(X{#7s@X3;n?D$rJ-czBj`$2XJ9)o^FDWuGI8tt_KgSta zeSqIPT)_azgUjp;=}Fyj6IUxT+%OiM{_TVNUb~F#DWZQj7et@_8>uB$&4z?u*ANm% z6PAC?sbz*ophcW%CVe&yiI;cu#@&*MqrIHkCjPo1)G-$<<%<9h_b#&|c0hg0!VgWUN z_mbQK)>@?3+GajfKMxwaRpzQu>tNCWlJz*duveyDJRj1zEl{dgTlfuuKq#W0Va~N9 z{U*k^6N#3G=2vz3pat#7UFN$t71!?VtW&5FA|9n{dut=x%bL>$*xFXC5GnUUyvCo- zOI2TKfabU1N(1>Z6dy&dN~D50>{=J4NZe336vGTYU;nnd8_hR=+uIO~z3@pO6xYw| zZ18+uj%a9TNT$qRO#2}e9Y*GLZmHp$)nlb%_eI6Y=z^*fHKGS&lw!qI_Y+{_yF;OP zs=M*$b?F`9-pEG5ag6I80uvBiG4$ss9f$Npl}1>S=K`)>Lj%q)jGBH+`usB0xmFES z3=Zew?o0b~#fSUV#KJ4hFkReeu7E4a59Ax^p4fqS&rC;{NB>ZYii+C$X>0rOGV9&E zZE|#6oJCHD)cuPR{fmnvU0vNL;T>F0PtO~oIE7f1HKQplw|Bw}GS~+)p8W7a#H-Dz z?et>_6!2Q<&V26n^*Uu`<@FE${A1G9)peAtZ(Nh@R$)1k_*hJ~K|bXog32>Olox;3xk^DwN`D!=ToZEii+Nj1^R!pP^xDR!gi{q1(8B#M3KCyWDWp*4y& z)(^V!*Gv!9<%E{2$*4vftKqm0y{bDM1tZJj?(Q@dA?>2Y!aW?wZ1g1m*+$b zQ^d_gD>}OfRz$?nuX-3ASwNq3?j-i+E2Oh|Wy1Zjp2d$)O;1&kFI4mc9=R`lW@e`K zuz>-Z+GxcbVI=BMwy-}3nFn%qaw~|+9ab040sa`S^I`rOl@Zabs+sX^H{RXoY&b>2 zRDo~P?a^V@z1CqX13BA#|7NpnDm_4Fbx+7SBN+6`;LPf;9^$j`tuJ4+^!4>gm*nJr&)LX`2C-q+MtoGBKXo!r8SAr1p5q|z zd`xDM2-Xsx=+MV&nNry$>GfE@sYk;-9TD_Jxx2O8d&>oSo=#RCyA^5_d~Y>@RW^CB z>j=f-TyD?PwCeP$Xy5qf1pmS%5@d>Jay?+WpO+GWvGqS7i+`fX) z4Sg(jftMoa%AZU2&o_SOF4{CD#1=n~@bmk^3D@X8{|AeZRasd%C`gBeRJttdojIvTd13JbDcYF7k+*L;+c85W z;UfjqhgE^UnL<&gvem6z4F5WRnLq+Om)6_5`OW>zgE0y0>{#=ve0RHv<1H96Q|Xm5 zf1o*Lmhh%&zkLY+Oo)9C=e@w-waoP77*!{CKvY$rI&Y1K11?2nd+e>s^uw8k6}id6CaC+7bV~y&$hSZP^>h Ov_Ovb&KQQRZ_>ZVN2726 literal 0 HcmV?d00001 diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html new file mode 100644 index 0000000..0ff461a --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html @@ -0,0 +1,243 @@ + + + + + + + +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

+

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

+

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 new file mode 100644 index 0000000..595faab --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 0000000..59dd659 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.map @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 0000000..fd82335 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..d86dd9851a30c115944513eda12f8f0453503e48 GIT binary patch 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

+

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

+

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 new file mode 100644 index 0000000..ebbdb4b --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.js @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..112fd24 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.map @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 0000000..e0a4275 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..26fe6d6a78ffaf0154e2688ef03fb9f579fba601 GIT binary patch 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

+

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

+

Enumeration Type Documentation

+ +

◆ TIM_ITModeTypeDef

+ +
+
+ + + + +
enum TIM_ITModeTypeDef
+
+ +

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

+ + + +
Enumerator
TIM_DEFAULT 

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

+
TIM_IT_MODE 

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

+
+ +

Definition at line 76 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 90 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
Чтобы не генерировать функцию с иницилизацией неиспользуемых таймеров, дефайнами в 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
Чтобы не генерировать функцию с деиницилизацией неиспользуемых таймеров, дефайнами в 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 new file mode 100644 index 0000000..80fa05c --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.js @@ -0,0 +1,32 @@ +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 new file mode 100644 index 0000000..f14a09f --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.map @@ -0,0 +1,5 @@ + + + + + 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 new file mode 100644 index 0000000..5d080b1 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..6294f412d40c46cbbb89d457a45e31ec1cde0b73 GIT binary patch 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

+

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

+

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 new file mode 100644 index 0000000..b3b5b18 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 0000000..5a90a60 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.map @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 0000000..7283b9f --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..2b2d68bc3bccf467f62459e173af1f2594de77cc GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/Doc/html/group___t_i_m___i_n_i_t.html b/Doc/html/group___t_i_m___i_n_i_t.html new file mode 100644 index 0000000..ad276d8 --- /dev/null +++ b/Doc/html/group___t_i_m___i_n_i_t.html @@ -0,0 +1,437 @@ + + + + + + + +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 31 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM1

+ +
+
+ + + + +
#define USE_TIM1
+
+ +

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

+ +

Definition at line 33 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM2

+ +
+
+ + + + +
#define USE_TIM2
+
+ +

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

+ +

Definition at line 34 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM3

+ +
+
+ + + + +
#define USE_TIM3
+
+ +

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

+ +

Definition at line 35 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM4

+ +
+
+ + + + +
#define USE_TIM4
+
+ +

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

+ +

Definition at line 36 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM5

+ +
+
+ + + + +
#define USE_TIM5
+
+ +

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

+ +

Definition at line 37 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM6

+ +
+
+ + + + +
#define USE_TIM6
+
+ +

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

+ +

Definition at line 38 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM7

+ +
+
+ + + + +
#define USE_TIM7
+
+ +

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

+ +

Definition at line 39 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM8

+ +
+
+ + + + +
#define USE_TIM8
+
+ +

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

+ +

Definition at line 40 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM9

+ +
+
+ + + + +
#define USE_TIM9
+
+ +

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

+ +

Definition at line 41 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM10

+ +
+
+ + + + +
#define USE_TIM10
+
+ +

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

+ +

Definition at line 42 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM11

+ +
+
+ + + + +
#define USE_TIM11
+
+ +

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

+ +

Definition at line 43 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM12

+ +
+
+ + + + +
#define USE_TIM12
+
+ +

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

+ +

Definition at line 44 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM13

+ +
+
+ + + + +
#define USE_TIM13
+
+ +

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

+ +

Definition at line 45 of file general_tim.h.

+ +
+
+ +

◆ USE_TIM14

+ +
+
+ + + + +
#define USE_TIM14
+
+ +

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

+ +

Definition at line 46 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 new file mode 100644 index 0000000..9a8158f --- /dev/null +++ b/Doc/html/group___t_i_m___i_n_i_t.js @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..fa3e7f2 --- /dev/null +++ b/Doc/html/group___t_i_m___i_n_i_t.map @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 0000000..2f19743 --- /dev/null +++ b/Doc/html/group___t_i_m___i_n_i_t.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..6fb3b6c5ea8028f08224ffbc3338d4e5ffc490e9 GIT binary patch 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Дефайны для работы с трассировкой More...

+
Collaboration diagram for Trace defines:
+
+
+ diff --git a/Doc/html/group___t_r_a_c_e.map b/Doc/html/group___t_r_a_c_e.map new file mode 100644 index 0000000..0c4f8df --- /dev/null +++ b/Doc/html/group___t_r_a_c_e.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Doc/html/group___t_r_a_c_e.md5 b/Doc/html/group___t_r_a_c_e.md5 new file mode 100644 index 0000000..8707b6e --- /dev/null +++ b/Doc/html/group___t_r_a_c_e.md5 @@ -0,0 +1 @@ +af53452e0ed934b43a42a30e5eaddc2c \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e.png b/Doc/html/group___t_r_a_c_e.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9e235438155dc4f697526c0bfb989d131a290a GIT binary patch literal 6036 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 literal 0 HcmV?d00001 diff --git a/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html index bb4d4a2..cd9e6da 100644 --- a/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html +++ b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html @@ -103,6 +103,16 @@ $(function(){initNavTree('group___t_r_a_c_e___c_o_n_f_i_g.html','',''); });

Конфигурация трекеров и трассировки More...

+
Collaboration diagram for Trace configs:
+
+
+

Topics

@@ -156,7 +166,7 @@ Macros

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

-

Definition at line 29 of file mylibs_config.h.

+

Definition at line 25 of file mylibs_config.h.

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

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

-

Definition at line 30 of file mylibs_config.h.

+

Definition at line 26 of file mylibs_config.h.

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

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

-

Definition at line 31 of file mylibs_config.h.

+

Definition at line 27 of file mylibs_config.h.

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

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

-

Definition at line 32 of file mylibs_config.h.

+

Definition at line 28 of file mylibs_config.h.

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

    Definition at line 39 of file mylibs_config.h.

    +

    Definition at line 35 of file mylibs_config.h.

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

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

    -

    Definition at line 41 of file mylibs_config.h.

    +

    Definition at line 37 of file mylibs_config.h.

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

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

    -

    Definition at line 42 of file mylibs_config.h.

    +

    Definition at line 38 of file mylibs_config.h.

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

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

    -

    Definition at line 43 of file mylibs_config.h.

    +

    Definition at line 39 of file mylibs_config.h.

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

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

    -

    Definition at line 44 of file mylibs_config.h.

    +

    Definition at line 40 of file mylibs_config.h.

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

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

    -

    Definition at line 47 of file mylibs_config.h.

    +

    Definition at line 43 of file mylibs_config.h.

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

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

    -

    Definition at line 48 of file mylibs_config.h.

    +

    Definition at line 44 of file mylibs_config.h.

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

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

    -

    Definition at line 49 of file mylibs_config.h.

    +

    Definition at line 45 of file mylibs_config.h.

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

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

    -

    Definition at line 50 of file mylibs_config.h.

    +

    Definition at line 46 of file mylibs_config.h.

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

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

    -

    Definition at line 51 of file mylibs_config.h.

    +

    Definition at line 47 of file mylibs_config.h.

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

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

    -

    Definition at line 52 of file mylibs_config.h.

    +

    Definition at line 48 of file mylibs_config.h.

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

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

    -

    Definition at line 54 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___c_o_n_f_i_g.map b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.map new file mode 100644 index 0000000..ef4b643 --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.md5 b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.md5 new file mode 100644 index 0000000..d2b34dd --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.md5 @@ -0,0 +1 @@ +2fc8132be79ba3b5dcba4208b778cf55 \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.png b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.png new file mode 100644 index 0000000000000000000000000000000000000000..0f1fcfee81678049e4446ae82f316c55125a8b61 GIT binary patch literal 1009 zcmVTJF(EO7porJ0ss9cp zCL|cGbYcSqW)>v6fEe11rBWA)#L%Hbr6Tc?V{i%_5h&e`Snkvzm_pC7k*dXLX` zK}1AEL_|dXS0=k+X=&+{G3K(5V4BEU`(b5e<*V;Fs_1sRi@sx!{emFailXRadfk!i zM#h-S#+aA03#;+&0Iz%pQH6ew%`+Gb`oQhcOi3u>nUYY%vyrzbsxao?y?<-1%dY?S zZLP%^zjse$!yTA+Jt>18pjk_Il7;jf4=Nm;4VHkQnM`uZxO$?WblI^RZ2^auZ zfqTR^_>T|Q_q|0_Li$VS`%783?D_dVS0_oBmvAi^v0OMu`~<`ja1!`IJQ9jb#A!L2 zm6w2{O4cM{(`9FR`*cF*jk?J`quNHrQ_&gX(QX+y3;YC*4%-fG0wyC!dL&7gvDp!& zYFplM%l4CwHQknc&YnYd-(;UrZIi@3salgTtEgnnOSGa9HM>ulO+J^ku(0rTb#?Utun0T^ zF0jA+EbS&?TOf zDVm7+0KBPk&}q%h&DGlfxa*}NzGoz>YHT^09dW=<0_Md~gD=F%cz(D%0k(#1Kk7JO z8x$qrxb`y1JIfI?@0zd<&PKvXN3;Y9EKs*+B>~ougta85#So}P5Ya` zBRrL(%gf7FFZE8x<%0{umwNlXUT@!<^^KYxt)ixqa~i*hA5(h-oB-Z?jYdlGF=5pD z+0hx4oYVL|T%;xHDmlk#eG)?B5>Hxg)|XlAPIvY*cuE5{k65V+JkC?APBaKw`wM9ZGU%n*LN6_5(L4=;;lqP fL_|bHДефайны для работы с GPIO трассировкой More...

    +
    Collaboration diagram for GPIO trace defines:
    +
    +
    +

    Macros

    @@ -152,7 +162,7 @@ Macros
  • GPIO_TRACE_ENABLE определён - устанавливает бит сброса через BSRR ((pin)<<16)
  • -

    Definition at line 140 of file trace.h.

    +

    Definition at line 138 of file trace.h.

    @@ -189,7 +199,7 @@ Macros
  • GPIO_TRACE_ENABLE определён - устанавливает бит установки через BSRR (pin)
  • -

    Definition at line 139 of file trace.h.

    +

    Definition at line 137 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___g_p_i_o.map b/Doc/html/group___t_r_a_c_e___g_p_i_o.map new file mode 100644 index 0000000..341dbe4 --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___g_p_i_o.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___t_r_a_c_e___g_p_i_o.md5 b/Doc/html/group___t_r_a_c_e___g_p_i_o.md5 new file mode 100644 index 0000000..62f038a --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___g_p_i_o.md5 @@ -0,0 +1 @@ +ac4a0270cc0a294f6771b1d2273e0e9c \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e___g_p_i_o.png b/Doc/html/group___t_r_a_c_e___g_p_i_o.png new file mode 100644 index 0000000000000000000000000000000000000000..6413612f54d2468bf20cd245cc0b75148d824b31 GIT binary patch literal 1129 zcmV-v1eW`WP)(Z3{00006VoOIv0RI60 z0RN!9r;`8x1RhC5K~#90?cGmnBt;m<@o)DkEP+*s8}uM7a}%##GzWz&9>rzBEdJY5 zCVdlp8@>Qxn1Ck_tGRhLCvm;xCCnj21c{JCAgruA?V)E(ThrB3-BaCFll(p~kaW#d zKg~=%Q%`l%10o_KA|fIpA|mw?bHm==-kV91Y=;O&?D9PS_2A&(_t0^)F&qweL&qTT zNz?RnG#WiEZ+ppnQj#RwNs>J2FD!BN2>2m%5N+u5Bvq!<=^^k*dD}ulnj4Kqod+at zvMdW7!pa7N0h^nfp~H|!OePb~&(9aOrvYLS5vinvBqGsJLK2Z^C?SbRG?b7;BpOOc zA`%VjX@6HqvT$wXfATzEwR>-pByo;seoT3uH+o%!-T-!ikAM#Y$I_U2xr2EritTcU z^7FDRtGt9|S>Nlxc5JriLUEi;Ue~vk6HKkLOk3A@C*e0mUr%GH66C zR1KP{ZMI}nH{e|RZqgnzGxnH|LnYhwaGPQl^gZw=Fb3Y|>ixA(VW2%bXJdQ5ocGXKl0{bBM)wXPZwzl&BE^9{1lGUnl zJ9vj834IQ{2K>X-`*^LBQ7E=`7uz8B)n>9Kzq)>0){K@Vt5xG}qPK+9c3sBDY@$4? z@zGa^K8}u#?gQTd_lzc&_wY6lY%%QQX2lgW3$rxYdHUEn$Jvct=t179@WsV7@oTPxkA zpe_N$v_RW7LHJ56U95rCoylD5lC7+&gmLBTtXCIj&+7X0RI>dxdwdOSQ=HO&47@^7 zy4jM`3*g5#JM>{=V%hkp3FjF_Y4*bR4*O&)M|^zfyX?E%SKIb=nJsm7Ml#3@$vjhKmNT~Urb+2jw{GO4 zglf`f7yB#u8~ADVxC1<(D9`TC+Jk@Tv{98fe9k1=^j(*<%rjMHIb$ntnv_0u>qcFa zP`=`BVqwG%hr`_@NuI=1o8NR zj>qHw-7#`4zdgmtU%EZG5apysayEIKtL&wlop67=b v7Z;(!kjSKI`ZRP5A|fIpA|fIpvVQ&rFOgA1Gqv(y00000NkvXXu0mjf)|@F* literal 0 HcmV?d00001 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 7c9db9c..069857a 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 @@ -103,6 +103,16 @@ $(function(){initNavTree('group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html','',''); })

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

    +
    Collaboration diagram for Hardfault trace defines:
    +
    +
    +

    Macros

    @@ -144,9 +154,9 @@ Functions
    RTT_EraseFlash(); // erase rtt flash after message readed
    }
    }
    -
    __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    Проверка и вывод последнего HardFault-трейса из Flash.
    Definition trace.h:466
    -
    __STATIC_FORCEINLINE void HF_HandleFault(void)
    Обработчик HardFault.
    Definition trace.h:507
    -
    __STATIC_FORCEINLINE int RTT_EraseFlash(void)
    Стирание сектора Flash с RTT-буфером
    Definition trace.h:365
    +
    __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    Проверка и вывод последнего HardFault-трейса из Flash.
    Definition trace.h:464
    +
    __STATIC_FORCEINLINE void HF_HandleFault(void)
    Обработчик HardFault.
    Definition trace.h:505
    +
    __STATIC_FORCEINLINE int RTT_EraseFlash(void)
    Стирание сектора Flash с RTT-буфером
    Definition trace.h:363
    @@ -176,7 +186,7 @@ Functions
    Note
    Вызов рекомендуется при инициализации приложения для анализа предыдущего сбоя.
    -

    Definition at line 466 of file trace.h.

    +

    Definition at line 464 of file trace.h.

    @@ -206,7 +216,7 @@ Functions
    Note
    Функция защищена, так как вызывается в контексте сбоя — минимизирует использование вызовов HAL.
    -

    Definition at line 507 of file trace.h.

    +

    Definition at line 505 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.map b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.map new file mode 100644 index 0000000..ef66f03 --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.md5 b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.md5 new file mode 100644 index 0000000..fb94dce --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.md5 @@ -0,0 +1 @@ +d40611b9b3f8a89ea252c07ed3929315 \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.png b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.png new file mode 100644 index 0000000000000000000000000000000000000000..88cb0fd0ed40c089b08c88ddce2f2a81b1f1129a GIT binary patch literal 1124 zcmV-q1e^PbP)(^JhCUR9tEF6DfS|Gsa5K&NRdJXm5qn&YRKltOm=3I&3;}G+Rdbs zZ_?&VzLOyZ5fKp)5fKp)5edl@R~#Q7zhI0x>>?PcmZs_Vr>CdCbsa|=lkGC zqA0pflH_rI-IK+Qj4_ACm`CdiODsJEzV14RHuU!->oA+mrog-TbxR3uAxVy_ zCnAHja)L9)R4#qu5>GzEym|`nPOjY9IxE}rcdW_i9dh7 z`h46gC%80C|69sFZyICF((!DVr+~MBuYlj@U*DdumlAOtlO&1Pxt~oJeV>y;lj8a6 z^PJhriN3N?BH$1>0zL$u2mV37U)geN8G|b;_v%X7wry40*0mL5DvPtMJ!ISt_JPlU zUxDv{m@K)$mL#`DsZ>^S=D+5*ZQ9PJ->T1beKy5b6>rr(+O$<|Ti0e2XIXp5xNWWN zB3P7u#qWK!HSMpeE&n-9)7n1k;_(%?g$KZUz!-Q5_?!RB&!^jV+BdcrXTChD`&|5f zAxRRaer%NWY13X6udlYEs&i7;Pt&p0#p5e(7i&v!`3u_R;`T8Hwn$t)_=?BX#l^)d zz!~srp~-e^?FZ+bdUADj#b`8g`kAsn?&3w*bOAIa7}uW*Ex%vagz978zV4iS#p6R~ zWlYTx2&w`bHD3~!B=t!aVJ~XXNVHD^NGGq$*rz^Q|{&h&87R1>;c0A zvaIWQ=*#=gE89CXQp$G<`UkOkBpYo&nw@n-}*6@ERSJs3#{Usa|*~AGbaIuIn&l q;G!sc+;t2hA|fIpA|fIp+vZМакросы и функции для сохранения/чтения RTT буфера в Flash. More...

    +
    Collaboration diagram for Flash RTT Buffer:
    +
    +
    +

    Classes

    @@ -153,7 +163,7 @@ Functions

    Подготовка Flash к записи

    Сбрасывает ошибки Flash и ожидает готовности перед записью

    -

    Definition at line 181 of file trace.h.

    +

    Definition at line 179 of file trace.h.

    @@ -191,7 +201,7 @@ Functions
  • Если конкретный (младший байт != 0) — запись выполняется только с этим тегом, иначе ошибка.
  • -

    Definition at line 204 of file trace.h.

    +

    Definition at line 202 of file trace.h.

    @@ -240,7 +250,7 @@ Functions
  • Если конкретный (младший байт != 0) — прочитывается именно эта запись.
  • -

    Definition at line 301 of file trace.h.

    +

    Definition at line 299 of file trace.h.

    @@ -261,7 +271,7 @@ Functions

    Стирание сектора Flash с RTT-буфером

    -

    Definition at line 365 of file trace.h.

    +

    Definition at line 363 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.map b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.map new file mode 100644 index 0000000..4d68bb1 --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.md5 b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.md5 new file mode 100644 index 0000000..f21e11b --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.md5 @@ -0,0 +1 @@ +a2b22c2a478cecd42e57ff4616ed0a98 \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.png b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.png new file mode 100644 index 0000000000000000000000000000000000000000..e910965f8acf2002a5bdf87278b0e2d55a545f3e GIT binary patch literal 1102 zcmV-U1hM;xP)O001Qj1^@s6Xcn!;00006VoOIv0RI60 z0RN!9r;`8x1OrJ#K~#90?cGmnBt;m<@ozP{5tRrz$O@v)dA*325b)$h+=F;RK`l7q^Whe>C9d-`v6*HmWa_kku% zS55ab!}QbjRQF6kL_|bHL_|bH`eyPgwzs!mHO6d(2u8|TYaj0J?*0-w4j04W@J8qu z#IGodj*}#LlwJ2szLPO#%NTQSeql*NH-Ya%2jN1Wr{y=9O!k0}vg>A&ODahc?*U0O zaU6#Zp|inYz{bW#=rF{CqoX5EPEKalM*(6HkrkliA|hTWxrm4tN-iSeg_4Vic%kGX zB3_hUif+o7nfvfASZlj(zBk60#_^=D$y(d$d6&>jz=yys;8Wn&pwTo`cIiF6JtB_d z&bLam*+!Fi$|Olr+wQW@Cem$WW0>bHCY_T@_P|^40}+^g4GZ{so&&A}p8)RzSI*Zj z)F}0`-Dg!4Pnw{zZAD3|uH9vyb+Y~XNX9NYCl|RCB47)+1AGiT5Bvu_8!{+aZF4!B zrDaC8gfhllEJgiY+RFM?wdG?finFNQXWT8k4SWs!2K)fr1zuqKow1ckEO8uPEN$Ad z?TaWMcltQ{H@`01x9GK(^>;D1kxRDR$d?{{wAJmetS$Sv$s9{rJblI8z%{1d;kXOD z2K>X5(r0N#qWKSZ)!al`*-_P2*Y`3gI>4L6n9i}dybnc>UCr&o=sJ(l$DBu+H2Tn2 zJZC@+NU(2IkH=#MgF&n3beWfE+Sg@r)b;r;y3D!sy&UCH^ zdtXVS=kla-oB8DCl3X@7H-9`lJp7jFm7hDn>pVSbsq-1|XX_pJV10ev>$kb9uB>F+ zx*Rk<&g>!0qZAC1T#Cwsruw>iaI$y23O*AW~ zY;sbn`Ffv%j9jv1LQ%<3RzkEXFRJEQ`Y2P{Y}3d7GA6)-^W}5kJ*JnVKj6toCiqFj zm;4Q4`7)@lvZ!poK1Tp`^E`Do=#}yLzGTfDeZ%4KhB4;eA`khNO&rHqYj2K5qc(FF zFEULqw}E$oHwaV~?dgJb z literal 0 HcmV?d00001 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 f9f3cc9..8a13055 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 @@ -103,6 +103,16 @@ $(function(){initNavTree('group___t_r_a_c_e___s_e_r_i_a_l.html','',''); });

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

    +
    Collaboration diagram for Serial trace defines:
    +
    +
    +

    Classes

    @@ -129,9 +139,8 @@ Macros -
  • Если трассировка SERIAL_TRACE_ENABLE отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
  • +
  • Если трассировка SERIAL_TRACE_ENABLE отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
  • -

    Если трассировка отключена, все макросы пустые и не влияют на производительность

    Macro Definition Documentation

    ◆ my_printf

    @@ -156,7 +165,7 @@ Macros
  • NO_TRACE - пустой макрос
  • -

    Definition at line 69 of file trace.h.

    +

    Definition at line 67 of file trace.h.

    @@ -185,7 +194,7 @@ Macros
    Value:
    my_printf("\n[%lu] [%s] " fmt, \
    (unsigned long)uwTick, TAG, ##__VA_ARGS__)
    -
    #define my_printf(...)
    Универсальный макрос для вывода трассировки
    Definition trace.h:69
    +
    #define my_printf(...)
    Универсальный макрос для вывода трассировки
    Definition trace.h:67

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

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

    Definition at line 94 of file trace.h.

    +

    Definition at line 92 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.map b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.map new file mode 100644 index 0000000..4cee3ed --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.map @@ -0,0 +1,4 @@ + + + + diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.md5 b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.md5 new file mode 100644 index 0000000..29e1cb0 --- /dev/null +++ b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.md5 @@ -0,0 +1 @@ +4ef22f6ccdece7fed6e6f9586217d5a8 \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.png b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.png new file mode 100644 index 0000000000000000000000000000000000000000..daa3658383557bdcbf425ce8eae3f893d98ac6b7 GIT binary patch literal 1114 zcmV-g1f~0lP)(Z3{00006VoOIv0RI60 z0RN!9r;`8x1P@6>K~#90?cGmn6G0dT@MpG)rJzE!=s}R&#H$x6g3#hwQEdHxYPvVU zui*y}))YKfdl8RfPh!3FBjivjURvm(P?Xw?hfVEvGqahQ%w{I``9YxB+04G%B=62U zyWIjrL_|bHL_|bH)kJy0!otE8A;ffuU`S6&`E6-w=||`|Tr``_xzI6Ce3B&D%(85) zxa?GUB_YJL5Mp_FVUeME0PjNw;ewwhQt5O$D*zrAm-Qs1Ls^#99uS#H(=>Dl18X!I zn4Fvp9R@|B-EL!NXQyX*5+D{LA|)myB8mnR5)nm%35kfJ!GuIa(O^O%qG$}9kc1H0 zM@($uDaIe$eptE;;3a_1p#!m%rfJV(kiLAb7Ymzsi@(E|_fvZvk|`m?kDH}kGl^5xUT55esccDt1+pRrRBb-DE#}#cg9~3CVR{#>X7aVWRQDS3I^>S662NyasT!)MWA=jsplb z8Md*pfkvZY^_udBy}Zok^(M<*xX#P?h@qUc2kk3{K7fF8NUjOOS7NE-?3u35azb=T zNHa4tU)t^VI{=RXJOOYKz&?P}1~1ul#?szw1-{Z_?lvmaIQ)=@(FirYrdH@4Yq&Iuuw zW4?Imq)F2hQp)*Ot7S76a}h@+-F4(;T@Z_li;_2JqoVE&+E!Yv*0DQAj@;3cjBNvW z1K=irYk^}SGQxy(GW-l30FenMBqE9i6A}?cg9(XДефайны для работы с трекерами More...

    +
    Collaboration diagram for Trackers defines:
    +
    +
    +

    Macros

    @@ -149,7 +159,8 @@ Macros

    Macros

    Detailed Description

    Дефайны для работы с трекерами

    -

    Есть дефайн для объявления структуры трекера: TrackerTypeDef(num_user_vars). Структура состоит из следующих элементов: