STM32_ExtendedLibs/Doc/html/index.html
Razvalyaev 03a203fe2a evovle перенесен на float + добавлены некоторые опциональные параметры
т.к. нет особо смысла супер быстро рассчитывать параметры. это просто вспомогательный инструмент для их параметров
2025-10-20 18:57:00 +03:00

227 lines
20 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: MyLibs</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">MyLibs<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Расширенные библиотеки для STM32</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('index.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">MyLibs </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="overview"></a>
Обзор</h1>
<p>MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32.</p>
<h2><a class="anchor" id="features"></a>
Основные возможности</h2>
<h3><a class="anchor" id="utils_module"></a>
Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)</h3>
<ul>
<li>Макросы для задержек и утилит (<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html">Delays defines</a> и <a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html">Utils defines</a>)</li>
<li>Трекеры для статистики и отладки (<a class="el" href="group___t_r_a_c_k_e_r_s.html">Trackers defines</a> и <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>)</li>
<li>Эволюционный алгоритм для оптимизации параметров (<a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html">Evolve optimizer</a>)</li>
<li>Битовый доступ к регистрам через union (<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html">Bit access defines</a>)</li>
</ul>
<h3><a class="anchor" id="trace_module"></a>
Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></h3>
<ul>
<li>Serial трассировка через SWO и RTT (<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html">Serial trace defines</a>)</li>
<li>GPIO трассировка для отладки (<a class="el" href="group___t_r_a_c_e___g_p_i_o.html">GPIO trace defines</a>)</li>
<li>Сохранение логов в Flash память (<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html">Flash RTT Buffer</a>)</li>
<li>Обработка HardFault с сохранением контекста (<a class="el" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html">Hardfault trace defines</a>)</li>
</ul>
<h3><a class="anchor" id="gpio_module"></a>
Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a></h3>
<ul>
<li>Инициализация портов и тактирования (<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html">General tools</a>)</li>
<li>Управление светодиодами (включение/выключение, моргание, плавное затухание) (<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html">LED tools</a>)</li>
<li>Работа с кнопками (чтение состояния, фильтрация дребезга) (<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html">Switch tools</a>)</li>
</ul>
<h3><a class="anchor" id="tim_module"></a>
Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a></h3>
<ul>
<li>Базовая инициализация таймеров (<a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html">General tools</a>)</li>
<li>Формирование задержек (блокирующие и неблокирующие) (<a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html">Delay tools</a>)</li>
<li>Работа с энкодерами (чтение положения, обработка кнопок) (<a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html">Encoder tools</a>)</li>
<li>Настройка ШИМ и Output Compare (<a class="el" href="group___m_y_l_i_b_s___t_i_m___o_c.html">PWM/OC Channels tools</a>)</li>
</ul>
<h2><a class="anchor" id="structure"></a>
Структура проекта</h2>
<div class="fragment"><div class="line">├── inc/ # Заголовочные файлы</div>
<div class="line">│ ├── mylibs_include.h # Главный include файл</div>
<div class="line">│ ├── mylibs_config.h # Конфигурация библиотек</div>
<div class="line">│ ├── mylibs_defs.h # Общие определения и макросы</div>
<div class="line">│ ├── bit_access.h # Битовый доступ к регистрам</div>
<div class="line">│ ├── trackers.h # Трекеры для отладки</div>
<div class="line">│ ├── trace.h # Трассировка и логирование</div>
<div class="line">│ ├── general_gpio.h # Работа с GPIO</div>
<div class="line">│ └── general_tim.h # Работа с таймерами</div>
<div class="line">└── src/ # Исходные файлы</div>
<div class="line"> ├── general_gpio.c # Реализация GPIO</div>
<div class="line"> └── general_tim.c # Реализация TIM</div>
</div><!-- fragment --><h2><a class="anchor" id="usage_basic"></a>
Использование</h2>
<p>Инструкция по подключению:</p>
<ol type="1">
<li>Настройте конфигурацию <a class="el" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html">Configs</a> в <a class="el" href="mylibs__config_8h.html">mylibs_config.h</a></li>
<li>Подключите главный заголовочный файл: <div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="mylibs__include_8h.html">mylibs_include.h</a>&quot;</span></div>
<div class="ttc" id="amylibs__include_8h_html"><div class="ttname"><a href="mylibs__include_8h.html">mylibs_include.h</a></div><div class="ttdoc">Заголочный файл для всех библиотек</div></div>
</div><!-- fragment --></li>
<li>Используйте нужные модули в своем коде</li>
</ol>
<h3><a class="anchor" id="gpio_example"></a>
Пример работы с GPIO</h3>
<div class="fragment"><div class="line"><span class="comment">// Инициализация светодиода</span></div>
<div class="line">MX_GPIO_Init();</div>
<div class="line"><a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> led;</div>
<div class="line"><a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">GPIO_LED_Init</a>(&amp;led, GPIOA, GPIO_PIN_5, 1);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Включение светодиода</span></div>
<div class="line"><a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a>(&amp;led);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Запуск моргания</span></div>
<div class="line"><a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9">GPIO_LED_Blink_Start</a>(&amp;led, 500); <span class="comment">// Период 500 мс</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// В основном цикле</span></div>
<div class="line"><span class="keywordflow">while</span> (1) {</div>
<div class="line"><a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2">GPIO_LED_Dynamic_Handle</a>(&amp;led);</div>
<div class="line">}</div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_ga4b9572949326b050694cd55d0a7e5f6c"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)</div><div class="ttdoc">Включить светодиод</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00091">general_gpio.c:91</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gac936453c7a0841c0b17bcfdae4958084"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">GPIO_LED_Init</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)</div><div class="ttdoc">Инициализировать светодиод (структуру светодиода)</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00073">general_gpio.c:73</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gad6e6189824406c4d472b6340c7f19bb2"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2">GPIO_LED_Dynamic_Handle</a></div><div class="ttdeci">void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)</div><div class="ttdoc">Управление динамическими режимами свечения светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00184">general_gpio.c:184</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gaf22f44ecaf6a1932b47edc5a845b03a9"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9">GPIO_LED_Blink_Start</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)</div><div class="ttdoc">Активировать моргание светодиодом</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00146">general_gpio.c:146</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___l_e_d_type_def_html"><div class="ttname"><a href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a></div><div class="ttdoc">Структура светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00093">general_gpio.h:94</a></div></div>
</div><!-- fragment --><h3><a class="anchor" id="tim_example"></a>
Пример работы с таймером</h3>
<div class="fragment"><div class="line"><span class="comment">// Настройка таймера</span></div>
<div class="line"><a class="code hl_struct" href="struct_t_i_m___settings_type_def.html">TIM_SettingsTypeDef</a> tim_settings = {0};</div>
<div class="line">tim_settings.<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Instance = TIM2;</div>
<div class="line">tim_settings.<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">sTimAHBFreqMHz</a> = SystemCoreClock;</div>
<div class="line">tim_settings.<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> = <a class="code hl_enumvalue" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25">TIM_TickBase_1MS</a>;</div>
<div class="line">tim_settings.<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">sTimFreqHz</a> = 1000; <span class="comment">// 1 кГц</span></div>
<div class="line">tim_settings.<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0">sTimMode</a> = TIM_IT_CONF;</div>
<div class="line"> </div>
<div class="line"><a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec">TIM_Base_Init</a>(&amp;tim_settings);</div>
<div class="line">HAL_TIM_Base_Start(&amp;tim_settings.<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>);</div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_html_ga7044214f24a9868ba7e1650b55e639ec"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec">TIM_Base_Init</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)</div><div class="ttdoc">Инициализация таймера.</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8c_source.html#l00034">general_tim.c:34</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_html_ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25">TIM_TickBase_1MS</a></div><div class="ttdeci">@ TIM_TickBase_1MS</div><div class="ttdoc">Таймер тактируется с частотой 1 кГц</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00096">general_tim.h:96</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html">TIM_SettingsTypeDef</a></div><div class="ttdoc">Структура инициализации таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00112">general_tim.h:113</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_a58da1b4c0f6d12d7d9fb2f170b9b9e6e"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">TIM_SettingsTypeDef::sTickBaseUS</a></div><div class="ttdeci">TIM_MHzTickBaseTypeDef sTickBaseUS</div><div class="ttdoc">Длительность одного тика</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00121">general_tim.h:121</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_a7073358fd3a722687eb85238ab570014"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">TIM_SettingsTypeDef::sTimAHBFreqMHz</a></div><div class="ttdeci">float sTimAHBFreqMHz</div><div class="ttdoc">Частота шины тактирования таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00123">general_tim.h:123</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_ab90e370c3edda88e76583293c250d2b0"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0">TIM_SettingsTypeDef::sTimMode</a></div><div class="ttdeci">TIM_ITModeTypeDef sTimMode</div><div class="ttdoc">Настройки прерывания таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00120">general_tim.h:120</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_ada49efdbd35a8e442c3cff630d42f34c"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">TIM_SettingsTypeDef::htim</a></div><div class="ttdeci">TIM_HandleTypeDef htim</div><div class="ttdoc">HAL handle таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00114">general_tim.h:114</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_af6057ff3f60f5e01b41d4a347b79a5e4"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">TIM_SettingsTypeDef::sTimFreqHz</a></div><div class="ttdeci">float sTimFreqHz</div><div class="ttdoc">Желаемая частота таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00124">general_tim.h:124</a></div></div>
</div><!-- fragment --><h2><a class="anchor" id="dependencies"></a>
Зависимости</h2>
<ul>
<li>HAL библиотека STM32</li>
<li>SEGGER RTT (опционально, для RTT трассировки)</li>
<li>FreeRTOS (опционально, для FreeRTOS задержек) </li>
</ul>
</div></div><!-- PageDoc -->
<a href="doxygen_crawl.html"/>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>