STM32_ExtendedLibs/Doc/html/index.html
Razvalyaev 9d720767b0 Доработал модуль TIM (с точки зрения документции. Код не проверен)
Доработна документация в целом
	- добавелн main page
	- исправлены ошибки в шапках и коментах
	- добавлен граф инклюдов
2025-10-19 11:55:12 +03:00

227 lines
18 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.14.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="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.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</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">
$(function(){initNavTree('index.html','',''); });
</script>
<div id="container">
<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 class="doxsection"><a class="anchor" id="overview"></a>
Обзор</h1>
<p>MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32.</p>
<h2 class="doxsection"><a class="anchor" id="features"></a>
Основные возможности</h2>
<h3 class="doxsection"><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 Defines</a></h3>
<ul>
<li>Битовый доступ к регистрам через union</li>
<li>Трекеры для статистики и отладки</li>
<li>Макросы для задержек и утилит</li>
<li>Поддержка FreeRTOS</li>
</ul>
<h3 class="doxsection"><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</li>
<li>GPIO трассировка для отладки</li>
<li>Сохранение логов в Flash память</li>
<li>Обработка HardFault с сохранением контекста</li>
</ul>
<h3 class="doxsection"><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>Управление светодиодами (включение/выключение, моргание, плавное затухание)</li>
<li>Работа с кнопками (чтение состояния, фильтрация дребезга)</li>
<li>Инициализация портов и тактирования</li>
<li>Поддержка альтернативных функций</li>
</ul>
<h3 class="doxsection"><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>Базовая инициализация таймеров</li>
<li>Режимы прерываний</li>
<li>Формирование задержек (блокирующие и неблокирующие)</li>
<li>Работа с энкодерами (чтение положения, обработка кнопок)</li>
<li>Настройка ШИМ и Output Compare</li>
</ul>
<h2 class="doxsection"><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 class="doxsection"><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 class="doxsection"><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 class="doxsection"><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 class="doxsection"><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"></a>
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- 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.14.0 </li>
</ul>
</div>
</body>
</html>