STM32_ExtendedLibs/Doc/html/general__tim_8c_source.html
Razvalyaev 3fb3058a30 Добавлено:
- максимально убрана зависимость от HAL - можно использовать и без него, чисто на cmsis
- документирован uart
- документирован spi
- добавлены примеры использования в general_periph
- всякие фиксы документации
2025-10-21 03:29:10 +03:00

900 lines
137 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: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_tim.c Source File</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('general__tim_8c_source.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 class="header">
<div class="headertitle"><div class="title">general_tim.c</div></div>
</div><!--header-->
<div class="contents">
<a href="general__tim_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/** </span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">**************************************************************************</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* @file general_tim.c</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Модуль для инициализации таймеров и работы с ними.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">**************************************************************************</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">Реализация функций для работы с TIM:</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> - Инициализация таймера и его каналов</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> - Формирование задержек через таймеры</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> - Считывание энкодера</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">*************************************************************************/</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &quot;<a class="code" href="general__tim_8h.html">general_tim.h</a>&quot;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">//-------------------------TIM INIT FUNCTIONS------------------------ </span><span class="comment"></span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">/** </span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * @brief Инициализация таймера.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * @param stim Указатель на структуру с настройками таймера.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * @details </span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * Инициализирует таймер исходя из настроек верхнего уровня:</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * - Длительность одного тика @ref TIM_MHzTickBaseTypeDef</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * - Частота таймера (в Гц, float)</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> * - Частота тактирования таймера от шины (в Гц, float)</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * </span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * При невозможности выставления частоты при заданой длительности тика</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * длительность тика увеличивается до тех пор, пока частота не будет достигнута.</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> * </span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> * При выставлении дефайна @ref UPDATE_TIM_PARAMS_AFTER_INITIALIZATION</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"> * новая длительность тика записывается в структуру.</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment"> * </span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment"> * Также остается возможность низкоуровневой настройки по структурам @ref TIM_SettingsTypeDef.</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment"> * Для этого надо высокоуровневые настройки приравнять к нулю</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00034" data-start="{" data-end="}">
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec"> 34</a></span>HAL_StatusTypeDef <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>(<a class="code hl_struct" href="struct_t_i_m___settings_type_def.html">TIM_SettingsTypeDef</a> *stim)</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span>{ <span class="comment">// function takes structure for init</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// check that htim is defined</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(stim, stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Instance))</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">if</span>(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a>) <span class="comment">// if tickbase isnt disable</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> { </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">if</span>(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">sTimAHBFreqMHz</a> == NULL)</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler = (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">sTimAHBFreqMHz</a>*stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a>) - 1;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">if</span> ((stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">sTimFreqHz</a> != NULL))</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period = ((1000000/stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a>) / stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">sTimFreqHz</a>) - 1;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period == NULL)</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period = 0xFFFF;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">if</span>(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">sTickBasePrescaler</a>)</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler = (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler + 1)/stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">sTickBasePrescaler</a> - 1;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period = (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period + 1)*stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">sTickBasePrescaler</a> - 1;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> }</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">sTickBasePrescaler</a> = 1;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// fix overflow of presc and period if need</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler &gt; 0xFFFF) || (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period &gt; 0xFFFF); i++)</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> { </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (i&gt;10) <span class="comment">// if it isnt fixed after 10 itteration - return HAL_ERRPOR</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// if timbase is too big (prescaller too big for choosen base from MHZ)</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span>(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler &gt; 0xFFFF)</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> {</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// переносим часть пресскалера в период</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler = ((stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler + 1)/2) - 1;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period = ((stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period + 1)*2) - 1;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// обновляем TickBase, если есть куда обновлять</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">if</span>(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> &gt; 1)</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> /= 2;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// обновляем sTickBasePrescaler, если sTickBaseUS - уже в минимуме</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> == 1)</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">sTickBasePrescaler</a> *= 2;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">else</span> <span class="comment">// if TickBase = 0 - return error</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> }</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// if freq is too low (period too big for choosen base)</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span>(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period &gt; 0xFFFF)</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> { </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// переносим часть периода в прескалер</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period = ((stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Period + 1)/2) - 1;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler = ((stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Init.Prescaler + 1)*2) - 1;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// обновляем TickBase</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> *= 2;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> }</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">//-------------TIM BASE INIT----------------</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// tim base init </span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931">TIM_Base_MspInit</a>(&amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>, stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0">sTimMode</a>);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">if</span> (HAL_TIM_Base_Init(&amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>) != HAL_OK)</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> }</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="comment">//-------------CLOCK SRC INIT---------------</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// fill sClockSourceConfig if its NULL</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">if</span> (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">sClockSourceConfig</a>.ClockSource == NULL)</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">sClockSourceConfig</a>.ClockSource = TIM_CLOCKSOURCE_INTERNAL; </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// clock source init </span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">if</span> (HAL_TIM_ConfigClockSource(&amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>, &amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">sClockSourceConfig</a>) != HAL_OK)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> }</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="comment">//--------------SLAVE INIT------------------ </span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// if slave mode enables - config it</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">if</span> (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969">sSlaveConfig</a>.SlaveMode)</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> {</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// slave mode init </span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">if</span> (HAL_TIM_SlaveConfigSynchro(&amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>, &amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969">sSlaveConfig</a>) != HAL_OK)</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> {</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> } </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> }</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="comment">//--------------MASTER INIT----------------- </span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="comment">// master mode init </span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">if</span> (HAL_TIMEx_MasterConfigSynchronization(&amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>, &amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21">sMasterConfig</a>) != HAL_OK)</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> } </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="comment">//--------------BDTR INIT----------------- </span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">if</span> (HAL_TIMEx_ConfigBreakDeadTime(&amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>, &amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7">sBreakDeadTimeConfig</a>) != HAL_OK)</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> {</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> }</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="comment">//----------------IT CLEAR------------------- </span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> __HAL_TIM_CLEAR_IT(&amp;stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>, TIM_IT_UPDATE);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// обновляем TickBase</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="preprocessor"> #ifdef UPDATE_TIM_PARAMS_AFTER_INITIALIZATION</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> = (stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Instance-&gt;PSC+1)*stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">sTickBasePrescaler</a>/(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">sTimAHBFreqMHz</a>);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">if</span>(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> == 0) <span class="comment">// if prescaler is too high</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> { <span class="comment">// recalc what is prescaler irl</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">sTickBaseUS</a> = 1;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">sTickBasePrescaler</a> = stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">sTimAHBFreqMHz</a>/(stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Instance-&gt;PSC+1);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> stim-&gt;<a class="code hl_variable" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">htim</a>.Instance-&gt;CNT = 0;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span>}</div>
</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"></span> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment">/** </span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> * @brief Инициализация режима энкодер у таймера.</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment"> * @param henc Указатель на хендл энкодера.</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="comment"> * @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00168" data-start="{" data-end="}">
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc"> 168</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc">TIM_Encoder_Init</a>(<a class="code hl_struct" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a> *henc, TIM_HandleTypeDef *htim)</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span>{</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2">check_null_ptr_3</a>(henc, htim, htim-&gt;Instance))</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2">check_null_ptr_3</a>(henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">GPIOx</a>, henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e">GPIO_PIN_TI1</a>, henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5">GPIO_PIN_TI2</a>))</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> GPIO_InitTypeDef GPIO_InitStruct = {0};</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> HAL_StatusTypeDef RES = HAL_ERROR;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">htim</a> = htim;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="comment">// setup channel for pwm</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> RES = HAL_TIM_Encoder_Init(henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">htim</a>, &amp;henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5">sConfig</a>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">if</span> (RES != HAL_OK)</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> {</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">return</span> RES;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> }</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// choose port for enable clock</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> RES = <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6">GPIO_Clock_Enable</a>(henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">GPIOx</a>);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">if</span>(RES != HAL_OK)</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> RES;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> }</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> GPIO_InitStruct.Pin = henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e">GPIO_PIN_TI1</a>|henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5">GPIO_PIN_TI2</a>;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> GPIO_InitStruct.Pull = GPIO_PULLUP;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> GPIO_InitStruct.Alternate = GPIO_TIM_Alternate_Mapping(henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">htim</a>-&gt;Instance);</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordflow">if</span>(GPIO_InitStruct.Alternate)</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> HAL_GPIO_Init(henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">GPIOx</a>, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">if</span>(henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">GPIO_PIN_SW</a>)</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> {</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="comment">/*Configure switch pin */</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> GPIO_InitStruct.Pin = henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">GPIO_PIN_SW</a>;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> GPIO_InitStruct.Mode = GPIO_MODE_INPUT;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> GPIO_InitStruct.Pull = GPIO_PULLUP;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> HAL_GPIO_Init(henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">GPIOx</a>, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7">GPIO_Switch_Init</a>(&amp;henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45">Sw</a>, henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">GPIOx</a>, henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">GPIO_PIN_SW</a>, 0);</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> }</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span>}</div>
</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment"></span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment">/** </span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment"> * @brief Инициализация выхода ШИМ таймера.</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment"> * @param sConfigOC Указатель на настрйоки канала таймера.</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment"> * @param TIM_CHANNEL Канал таймера для настройки.</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment"> * @param GPIOx Порт для вывода ШИМ.</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"> * @param GPIO_PIN Пин для вывода ШИМ.</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> * @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00226" data-start="{" data-end="}">
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6"> 226</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6">TIM_Output_PWM_Init</a>(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span>{</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2">check_null_ptr_3</a>(htim, htim-&gt;Instance, sConfigOC))</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(GPIOx, GPIO_PIN))</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> GPIO_InitTypeDef GPIO_InitStruct = {0};</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> HAL_StatusTypeDef RES = HAL_ERROR;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// setup channel for pwm</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> RES = HAL_TIM_PWM_ConfigChannel(htim, sConfigOC, TIM_CHANNEL);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">if</span> (RES != HAL_OK)</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> {</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">return</span> RES;</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> }</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="comment">// choose port for enable clock</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> RES = <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6">GPIO_Clock_Enable</a>(GPIOx);</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">if</span>(RES != HAL_OK)</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> {</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keywordflow">return</span> RES;</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> }</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> GPIO_InitStruct.Pin = GPIO_PIN;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">if</span>(sConfigOC-&gt;OCPolarity == TIM_OCNPOLARITY_HIGH)</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> GPIO_InitStruct.Pull = GPIO_PULLDOWN;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> GPIO_InitStruct.Pull = GPIO_PULLUP;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> GPIO_InitStruct.Alternate = GPIO_TIM_Alternate_Mapping(htim-&gt;Instance);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">if</span>(GPIO_InitStruct.Alternate)</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> HAL_GPIO_Init(GPIOx, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span>}</div>
</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="comment"></span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span><span class="comment">/** </span></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="comment"> * @brief Инициализация OC компаратора таймера.</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><span class="comment"> * @param TIM_CHANNEL Канал таймера для настройки.</span></div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="comment"> * @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00272" data-start="{" data-end="}">
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889"> 272</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889">TIM_OC_Comparator_Init</a>(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span>{ </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(htim, htim-&gt;Instance))</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> </div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> TIM_OC_InitTypeDef sConfigOC = {0};</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> HAL_StatusTypeDef RES = HAL_ERROR;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> sConfigOC.OCMode = TIM_OCMODE_ACTIVE;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> sConfigOC.Pulse = 0;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> RES = HAL_TIM_OC_ConfigChannel(htim, &amp;sConfigOC, TIM_CHANNEL);</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordflow">if</span> (RES != HAL_OK)</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> {</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>();</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keywordflow">return</span> RES;</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> }</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">return</span> RES;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span>}</div>
</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span><span class="comment">//-------------------------TIM USER FUNCTIONS------------------------ </span><span class="comment"></span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="comment">/** </span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span><span class="comment"> * @brief Считать энкодер.</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="comment"> * @param henc Указатель на хендл энкодера.</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span><span class="comment"> * @details Читает разницу энкодера, которую он накопил после </span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="comment"> * предыдущего вызова этой функции.</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00303" data-start="{" data-end="}">
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501"> 303</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501">TIM_Encoder_Read</a>(<a class="code hl_struct" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a> *henc)</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span>{</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2">check_null_ptr_3</a>(henc, henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">htim</a>, henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">htim</a>-&gt;Instance))</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> </div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> uint16_t cnt_now = (uint16_t)henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">htim</a>-&gt;Instance-&gt;CNT;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> int16_t diff = (int16_t)(cnt_now - henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2">Encoder_Shdw</a>); <span class="comment">// переполнение корректно обрабатывается</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3">Encoder_Diff</a> = diff;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2">Encoder_Shdw</a> = cnt_now;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> </div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span>}<span class="comment"></span></div>
</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="comment">/** </span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="comment"> * @brief Считать кнопку энкодера.</span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="comment"> * @param henc Указатель на хендл энкодера.</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="comment"> * @return 1 - если кнопка нажата, </span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="comment"> * 0 - если отжата, </span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span><span class="comment"> * -1 - если ошибка</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00322" data-start="{" data-end="}">
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761"> 322</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761">TIM_Encoder_ReadSwitch</a>(<a class="code hl_struct" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a> *henc)</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span>{</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9">check_null_ptr_1</a>(henc))</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> </div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70">GPIO_Read_Switch</a>(&amp;henc-&gt;<a class="code hl_variable" href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45">Sw</a>);</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span>}</div>
</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="comment"></span> </div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="comment">/** </span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span><span class="comment"> * @brief Задержка в тиках таймера (блокирующая).</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span><span class="comment"> * @param delay Задержка в тиках таймера.</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span><span class="comment"> * @details Формирует задержку с блокировкой программы.</span></div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00337" data-start="{" data-end="}">
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e"> 337</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e">TIM_Delay</a>(TIM_HandleTypeDef *htim, uint16_t delay)</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span>{</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(htim, htim-&gt;Instance))</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> </div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keywordflow">if</span>(delay &gt;= htim-&gt;Instance-&gt;ARR)</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> {</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> }</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> htim-&gt;Instance-&gt;CNT = 0;</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keywordflow">while</span>(1)</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> {</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordflow">if</span>(htim-&gt;Instance-&gt;CNT &gt; delay)</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> {</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> }</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> }</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span>}</div>
</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span><span class="comment"></span> </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span><span class="comment">/** </span></div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span><span class="comment"> * @brief Начать отсчет неблокирующей задержки.</span></div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span><span class="comment"> * @details Сбрасывает счетчик для начала отсчета неблокирующей задержки.</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span><span class="comment"> * @ref TIM_Delay_NonBlocking для проверки статуса задержки</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00363" data-start="{" data-end="}">
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834"> 363</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834">TIM_Delay_Start</a>(TIM_HandleTypeDef *htim)</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span>{ </div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(htim, htim-&gt;Instance))</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> </div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> htim-&gt;Instance-&gt;CNT = 0;</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> </div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span>}</div>
</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span><span class="comment"></span> </div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span><span class="comment">/** </span></div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span><span class="comment"> * @brief Задержка в тиках таймера (неблокирующая).</span></div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span><span class="comment"> * @param delay Задержка в тиках таймера.</span></div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span><span class="comment"> * @details Формирует задержку с блокировкой программы.</span></div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span><span class="comment"> * Перед ожиданием задержки надо запутстить таймер @ref TIM_Delay_Start</span></div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span><span class="comment"> * @note Таймер не должен использоваться на время этой задержки</span></div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00382" data-start="{" data-end="}">
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b"> 382</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b">TIM_Delay_NonBlocking</a>(TIM_HandleTypeDef *htim, uint16_t delay)</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span>{ </div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(htim, htim-&gt;Instance))</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> </div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <span class="keywordflow">if</span>(delay &gt;= htim-&gt;Instance-&gt;ARR)</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> {</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> }</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> </div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keywordflow">if</span>(htim-&gt;Instance-&gt;CNT &lt;= delay)</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> {</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keywordflow">return</span> HAL_BUSY;</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> }</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> {</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> }</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span>}</div>
</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span><span class="comment"></span> </div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span><span class="comment">/** </span></div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span><span class="comment"> * @brief Инициализация CLK и NVIC таймеров.</span></div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span><span class="comment"> * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых таймеров,</span></div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span><span class="comment"> дефайнами @ref TIM_INIT в @ref general_tim.h определяются используемые таймеры.</span></div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00408" data-start="{" data-end="}">
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931"> 408</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931">TIM_Base_MspInit</a>(TIM_HandleTypeDef* htim, <a class="code hl_enumeration" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787">TIM_ITModeTypeDef</a> it_mode)</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span>{</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(htim, htim-&gt;Instance))</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> </div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> it_mode = it_mode&amp;TIM_IT_CONF;</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span><span class="preprocessor">#ifdef USE_TIM1</span></div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM1)</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> {</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="comment">/* TIM2 clock enable */</span></div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> __HAL_RCC_TIM1_CLK_ENABLE();</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> </div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <span class="comment">/* TIM2 interrupt Init */</span></div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> {</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0);</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> }</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> }</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span><span class="preprocessor">#ifdef USE_TIM2</span></div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM2)</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> {</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <span class="comment">/* TIM2 clock enable */</span></div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> __HAL_RCC_TIM2_CLK_ENABLE();</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> </div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="comment">/* TIM2 interrupt Init */</span></div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> {</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> HAL_NVIC_EnableIRQ(TIM2_IRQn);</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> }</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> }</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span><span class="preprocessor">#ifdef USE_TIM3</span></div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM3)</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> {</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="comment">/* TIM3 clock enable */</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> __HAL_RCC_TIM3_CLK_ENABLE();</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> </div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="comment">/* TIM3 interrupt Init */</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> {</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> HAL_NVIC_EnableIRQ(TIM3_IRQn);</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> }</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> }</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span><span class="preprocessor">#ifdef USE_TIM4</span></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM4)</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> {</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="comment">/* TIM4 clock enable */</span></div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> __HAL_RCC_TIM4_CLK_ENABLE();</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> </div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="comment">/* TIM4 interrupt Init */</span></div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> {</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0);</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> HAL_NVIC_EnableIRQ(TIM4_IRQn);</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> }</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> }</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="preprocessor">#ifdef USE_TIM5</span></div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM5)</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> {</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="comment">/* TIM5 clock enable */</span></div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> __HAL_RCC_TIM5_CLK_ENABLE();</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> </div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <span class="comment">/* TIM5 interrupt Init */</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> {</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> HAL_NVIC_SetPriority(TIM5_IRQn, 0, 0);</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> HAL_NVIC_EnableIRQ(TIM5_IRQn);</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> }</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> }</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span><span class="preprocessor">#ifdef USE_TIM6</span></div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM6)</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> {</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="comment">/* TIM6 clock enable */</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> __HAL_RCC_TIM6_CLK_ENABLE();</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> </div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="comment">/* TIM6 interrupt Init */</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> {</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> }</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> }</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span><span class="preprocessor">#ifdef USE_TIM7</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM7)</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> {</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="comment">/* TIM7 clock enable */</span></div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> __HAL_RCC_TIM7_CLK_ENABLE();</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> </div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <span class="comment">/* TIM7 interrupt Init */</span></div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> {</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0);</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> HAL_NVIC_EnableIRQ(TIM7_IRQn);</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> }</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> }</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span><span class="preprocessor">#ifdef USE_TIM8</span></div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM8)</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> {</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> <span class="comment">/* TIM8 clock enable */</span></div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> __HAL_RCC_TIM8_CLK_ENABLE();</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> </div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> <span class="comment">/* TIM8 interrupt Init */</span></div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> {</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0);</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn);</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> }</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> }</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span><span class="preprocessor">#ifdef USE_TIM9</span></div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM9)</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> {</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <span class="comment">/* TIM9 clock enable */</span></div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> __HAL_RCC_TIM9_CLK_ENABLE();</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> </div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="comment">/* TIM9 interrupt Init */</span></div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> {</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> HAL_NVIC_SetPriority(TIM1_BRK_TIM9_IRQn, 0, 0);</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> HAL_NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn);</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> }</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> }</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span><span class="preprocessor">#ifdef USE_TIM10</span></div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM10)</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> {</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="comment">/* TIM10 clock enable */</span></div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> __HAL_RCC_TIM10_CLK_ENABLE();</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> </div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> <span class="comment">/* TIM10 interrupt Init */</span></div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> {</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0);</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> }</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> } </div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span><span class="preprocessor">#ifdef USE_TIM11</span></div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM11)</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> {</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> <span class="comment">/* TIM11 clock enable */</span></div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> __HAL_RCC_TIM11_CLK_ENABLE();</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> </div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <span class="comment">/* TIM11 interrupt Init */</span></div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> {</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> HAL_NVIC_SetPriority(TIM1_TRG_COM_TIM11_IRQn, 0, 0);</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> HAL_NVIC_EnableIRQ(TIM1_TRG_COM_TIM11_IRQn);</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> }</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> }</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span><span class="preprocessor">#ifdef USE_TIM12</span></div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM12)</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> {</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <span class="comment">/* TIM12 clock enable */</span></div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> __HAL_RCC_TIM12_CLK_ENABLE();</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> </div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="comment">/* TIM12 interrupt Init */</span></div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> {</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> HAL_NVIC_SetPriority(TIM8_BRK_TIM12_IRQn, 0, 0);</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> HAL_NVIC_EnableIRQ(TIM8_BRK_TIM12_IRQn);</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> }</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> }</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span><span class="preprocessor">#ifdef USE_TIM13</span></div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM13)</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> {</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <span class="comment">/* TIM13 clock enable */</span></div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> __HAL_RCC_TIM13_CLK_ENABLE();</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> </div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> <span class="comment">/* TIM13 interrupt Init */</span></div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> {</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0);</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn);</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> }</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> }</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span><span class="preprocessor">#ifdef USE_TIM14</span></div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM14)</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> {</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <span class="comment">/* TIM14 clock enable */</span></div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> __HAL_RCC_TIM14_CLK_ENABLE();</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> </div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <span class="comment">/* TIM14 interrupt Init */</span></div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <span class="keywordflow">if</span>(it_mode)</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> {</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> HAL_NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 0, 0);</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> HAL_NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn);</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> }</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> }</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span>}<span class="comment"></span></div>
</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span><span class="comment">/** </span></div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span><span class="comment"> * @brief Деинициализация CLK и NVIC таймеров.</span></div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span><span class="comment"> * @param htim Указатель на хендл таймера.</span></div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span><span class="comment"> * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых таймеров,</span></div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span><span class="comment"> дефайнами @ref TIM_INIT в @ref general_tim.h определяются используемые таймеры.</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00617" data-start="{" data-end="}">
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115"> 617</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115">TIM_Base_MspDeInit</a>(TIM_HandleTypeDef* htim)</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span>{</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(htim, htim-&gt;Instance))</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> </div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span><span class="preprocessor">#ifdef USE_TIM1</span></div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM1)</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> {</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> __HAL_RCC_TIM1_FORCE_RESET();</div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> __HAL_RCC_TIM1_RELEASE_RESET();</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> }</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span><span class="preprocessor">#ifdef USE_TIM2</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM2)</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> {</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> __HAL_RCC_TIM2_FORCE_RESET();</div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> __HAL_RCC_TIM2_RELEASE_RESET();</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> }</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span><span class="preprocessor">#ifdef USE_TIM3</span></div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM3)</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> {</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> __HAL_RCC_TIM3_FORCE_RESET();</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> __HAL_RCC_TIM3_RELEASE_RESET();</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> }</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span><span class="preprocessor">#ifdef USE_TIM4</span></div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM4)</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> {</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> __HAL_RCC_TIM4_FORCE_RESET();</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> __HAL_RCC_TIM4_RELEASE_RESET();</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> }</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span><span class="preprocessor">#ifdef USE_TIM5</span></div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM5)</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> {</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> __HAL_RCC_TIM5_FORCE_RESET();</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> __HAL_RCC_TIM5_RELEASE_RESET();</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> }</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span><span class="preprocessor">#ifdef USE_TIM6</span></div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM6)</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> {</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> __HAL_RCC_TIM6_FORCE_RESET();</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> __HAL_RCC_TIM6_RELEASE_RESET();</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> }</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span><span class="preprocessor">#ifdef USE_TIM7</span></div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM7)</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> {</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> __HAL_RCC_TIM7_FORCE_RESET();</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> __HAL_RCC_TIM7_RELEASE_RESET();</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> }</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span><span class="preprocessor">#ifdef USE_TIM8</span></div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM8)</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> {</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> __HAL_RCC_TIM8_FORCE_RESET();</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> __HAL_RCC_TIM8_RELEASE_RESET();</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> }</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span><span class="preprocessor">#ifdef USE_TIM9</span></div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM9)</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> {</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> __HAL_RCC_TIM9_FORCE_RESET();</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> __HAL_RCC_TIM9_RELEASE_RESET();</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> }</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span><span class="preprocessor">#ifdef USE_TIM10</span></div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM10)</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> {</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> __HAL_RCC_TIM10_FORCE_RESET();</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> __HAL_RCC_TIM10_RELEASE_RESET();</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> } </div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span><span class="preprocessor">#ifdef USE_TIM11</span></div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM11)</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> {</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> __HAL_RCC_TIM11_FORCE_RESET();</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> __HAL_RCC_TIM11_RELEASE_RESET();</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> }</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span><span class="preprocessor">#ifdef USE_TIM12</span></div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM12)</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> {</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> __HAL_RCC_TIM12_FORCE_RESET();</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> __HAL_RCC_TIM12_RELEASE_RESET();</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> }</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span><span class="preprocessor">#ifdef USE_TIM13</span></div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM13)</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> {</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> __HAL_RCC_TIM13_FORCE_RESET();</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> __HAL_RCC_TIM13_RELEASE_RESET();</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> }</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span><span class="preprocessor">#ifdef USE_TIM14</span></div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> <span class="keywordflow">if</span>(htim-&gt;Instance==TIM14)</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> {</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> __HAL_RCC_TIM14_FORCE_RESET();</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> __HAL_RCC_TIM14_RELEASE_RESET();</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> }</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span>}</div>
</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span><span class="comment">//-------------------------TIM INIT FUNCTIONS------------------------</span></div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="ttc" id="ageneral__tim_8h_html"><div class="ttname"><a href="general__tim_8h.html">general_tim.h</a></div><div class="ttdoc">Заголовочный файл для модуля инициализации таймеров и работы с ними.</div></div>
<div class="ttc" id="agroup___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_html_ga27b363f333cacdccc15f5174e096b5b3"><div class="ttname"><a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a></div><div class="ttdeci">#define check_null_ptr_2(p1, p2)</div><div class="ttdoc">Проверить два указателя на NULL.</div><div class="ttdef"><b>Definition</b> <a href="mylibs__defs_8h_source.html#l00041">mylibs_defs.h:41</a></div></div>
<div class="ttc" id="agroup___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_html_ga5d066a5b9781f9437e75d98677489eb9"><div class="ttname"><a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9">check_null_ptr_1</a></div><div class="ttdeci">#define check_null_ptr_1(p1)</div><div class="ttdoc">Проверить один указатель на NULL.</div><div class="ttdef"><b>Definition</b> <a href="mylibs__defs_8h_source.html#l00038">mylibs_defs.h:38</a></div></div>
<div class="ttc" id="agroup___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_html_ga838b40542faa9aa273d18f921b21fda2"><div class="ttname"><a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2">check_null_ptr_3</a></div><div class="ttdeci">#define check_null_ptr_3(p1, p2, p3)</div><div class="ttdoc">Проверить три указателя на NULL.</div><div class="ttdef"><b>Definition</b> <a href="mylibs__defs_8h_source.html#l00044">mylibs_defs.h:44</a></div></div>
<div class="ttc" id="agroup___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_html_gae110df81afd885a390bbeb152d7b709f"><div class="ttname"><a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a></div><div class="ttdeci">#define MyLibs_Error_Handler(params)</div><div class="ttdoc">Error_Handler который будет вызыватся в библиотеке</div><div class="ttdef"><b>Definition</b> <a href="mylibs__defs_8h_source.html#l00031">mylibs_defs.h:31</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_html_ga962f010f783b81fcdd27eb6b53db28e6"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6">GPIO_Clock_Enable</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)</div><div class="ttdoc">Включить тактирование порта GPIO.</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00022">general_gpio.c:22</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_html_ga960b24335b2026abcad126ab8c422d70"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70">GPIO_Read_Switch</a></div><div class="ttdeci">int GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart)</div><div class="ttdoc">Считать состоянии кнопки</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00278">general_gpio.c:278</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_html_gacafee0e68877f2b25df843356871d1f7"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7">GPIO_Switch_Init</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)</div><div class="ttdoc">Инициализировать кнопку (структуру кнопки)</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00258">general_gpio.c:258</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___d_e_l_a_y_html_ga108637af414bff3373059273b815ce9b"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b">TIM_Delay_NonBlocking</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)</div><div class="ttdoc">Задержка в тиках таймера (неблокирующая).</div><div class="ttdef"><b>Definition</b> <a href="#l00382">general_tim.c:382</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___d_e_l_a_y_html_ga4c0dfde4e15f677600605348b4e97834"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834">TIM_Delay_Start</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim)</div><div class="ttdoc">Начать отсчет неблокирующей задержки.</div><div class="ttdef"><b>Definition</b> <a href="#l00363">general_tim.c:363</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___d_e_l_a_y_html_ga88c552a133cb6e3015453cccab74c07e"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e">TIM_Delay</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)</div><div class="ttdoc">Задержка в тиках таймера (блокирующая).</div><div class="ttdef"><b>Definition</b> <a href="#l00337">general_tim.c:337</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_html_ga117b795017e9e3a357ddefe323412761"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761">TIM_Encoder_ReadSwitch</a></div><div class="ttdeci">int TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc)</div><div class="ttdoc">Считать кнопку энкодера.</div><div class="ttdef"><b>Definition</b> <a href="#l00322">general_tim.c:322</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_html_ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc">TIM_Encoder_Init</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim)</div><div class="ttdoc">Инициализация режима энкодер у таймера.</div><div class="ttdef"><b>Definition</b> <a href="#l00168">general_tim.c:168</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_html_gac3bc6525f88c275e47eb864e6d567501"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501">TIM_Encoder_Read</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc)</div><div class="ttdoc">Считать энкодер.</div><div class="ttdef"><b>Definition</b> <a href="#l00303">general_tim.c:303</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_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="#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_ga879e3f1c919c02990736730275367115"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115">TIM_Base_MspDeInit</a></div><div class="ttdeci">void TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)</div><div class="ttdoc">Деинициализация CLK и NVIC таймеров.</div><div class="ttdef"><b>Definition</b> <a href="#l00617">general_tim.c:617</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_gaad47337be7ba2f6c0777c40d7278c931"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931">TIM_Base_MspInit</a></div><div class="ttdeci">void TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)</div><div class="ttdoc">Инициализация CLK и NVIC таймеров.</div><div class="ttdef"><b>Definition</b> <a href="#l00408">general_tim.c:408</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_gaeb611874216a4661fb83366b99b9e787"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787">TIM_ITModeTypeDef</a></div><div class="ttdeci">TIM_ITModeTypeDef</div><div class="ttdoc">Режим прерываний таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00077">general_tim.h:78</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___o_c_html_gadb2f465d89f609e035867e980c3a29c6"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6">TIM_Output_PWM_Init</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)</div><div class="ttdoc">Инициализация выхода ШИМ таймера.</div><div class="ttdef"><b>Definition</b> <a href="#l00226">general_tim.c:226</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___t_i_m___o_c_html_gae2608ca8023e9a0713af0b4fbfbc1889"><div class="ttname"><a href="group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889">TIM_OC_Comparator_Init</a></div><div class="ttdeci">HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)</div><div class="ttdoc">Инициализация OC компаратора таймера.</div><div class="ttdef"><b>Definition</b> <a href="#l00272">general_tim.c:272</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a></div><div class="ttdoc">Структура инициализации енкодера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00141">general_tim.h:142</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_a021f0c585e9e62d68a4b09f630d8b6e5"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5">TIM_EncoderTypeDef::sConfig</a></div><div class="ttdeci">TIM_Encoder_InitTypeDef sConfig</div><div class="ttdoc">Указатель на структуру настройки энкодера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00147">general_tim.h:147</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_a0dacce3dde7df3122583869d96a372a2"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2">TIM_EncoderTypeDef::Encoder_Shdw</a></div><div class="ttdeci">uint16_t Encoder_Shdw</div><div class="ttdoc">Последние считанные тики</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00144">general_tim.h:144</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_a4fc05ef011205a6702cb3d006bab677e"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e">TIM_EncoderTypeDef::GPIO_PIN_TI1</a></div><div class="ttdeci">uint32_t GPIO_PIN_TI1</div><div class="ttdoc">Пин, куда подключается канал TI1.</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00150">general_tim.h:150</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_a67ad037b92162546763fc9c425b5e3c5"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5">TIM_EncoderTypeDef::GPIO_PIN_TI2</a></div><div class="ttdeci">uint32_t GPIO_PIN_TI2</div><div class="ttdoc">Пин, куда подключается канал TI2.</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00151">general_tim.h:151</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_a6973108a83d2a3ea4fc3e0e8a501af80"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">TIM_EncoderTypeDef::GPIO_PIN_SW</a></div><div class="ttdeci">uint32_t GPIO_PIN_SW</div><div class="ttdoc">Пин, куда кнопка энкодера (если есть)</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00152">general_tim.h:152</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_a6f769f027b760a4b496e2b2b77bf54a3"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3">TIM_EncoderTypeDef::Encoder_Diff</a></div><div class="ttdeci">int16_t Encoder_Diff</div><div class="ttdoc">Считанная разница</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00143">general_tim.h:143</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_a99295760ff8b27d1e6f1710f29383a45"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45">TIM_EncoderTypeDef::Sw</a></div><div class="ttdeci">GPIO_SwitchTypeDef Sw</div><div class="ttdoc">Структура кнопки</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00154">general_tim.h:154</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_ad29873fc8cdc71462e6d8744621120e9"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">TIM_EncoderTypeDef::GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * GPIOx</div><div class="ttdoc">Порт, куда подключается энкодер</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00149">general_tim.h:149</a></div></div>
<div class="ttc" id="astruct_t_i_m___encoder_type_def_html_adc80bd5a90444c31d84157f35c59b95c"><div class="ttname"><a href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">TIM_EncoderTypeDef::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#l00146">general_tim.h:146</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#l00113">general_tim.h:114</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_a11151fe125960cb8e61328ffd06b7718"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">TIM_SettingsTypeDef::sTickBasePrescaler</a></div><div class="ttdeci">uint8_t sTickBasePrescaler</div><div class="ttdoc">Дополнительный делитель, для удобного деления sTickBaseUS.</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_a2d9d277dd395424b964445ec1bc65b21"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21">TIM_SettingsTypeDef::sMasterConfig</a></div><div class="ttdeci">TIM_MasterConfigTypeDef sMasterConfig</div><div class="ttdoc">Настройки мастер режима таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00118">general_tim.h:118</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_a3805f627567798c3cd1d79a0da42bea0"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">TIM_SettingsTypeDef::sClockSourceConfig</a></div><div class="ttdeci">TIM_ClockConfigTypeDef sClockSourceConfig</div><div class="ttdoc">Настройки тактирования таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00116">general_tim.h:116</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#l00122">general_tim.h:122</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#l00124">general_tim.h:124</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_a961f19f0e1672715c27bc94d7871dbb7"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7">TIM_SettingsTypeDef::sBreakDeadTimeConfig</a></div><div class="ttdeci">TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig</div><div class="ttdoc">Настройки дедтаймов таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00119">general_tim.h:119</a></div></div>
<div class="ttc" id="astruct_t_i_m___settings_type_def_html_a9694cf0910a69d48ff94f8aeac106969"><div class="ttname"><a href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969">TIM_SettingsTypeDef::sSlaveConfig</a></div><div class="ttdeci">TIM_SlaveConfigTypeDef sSlaveConfig</div><div class="ttdoc">Настройки слейв режима таймера</div><div class="ttdef"><b>Definition</b> <a href="general__tim_8h_source.html#l00117">general_tim.h:117</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#l00121">general_tim.h:121</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#l00115">general_tim.h:115</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#l00125">general_tim.h:125</a></div></div>
</div><!-- fragment --></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="navelem"><a href="dir_9e11e9a41112194af3eee6cc728f9515.html">MyLibsGeneral</a></li><li class="navelem"><a href="dir_9c80311a018e1f8cfb6659b73d634be4.html">Src</a></li><li class="navelem"><a href="general__tim_8c.html">general_tim.c</a></li>
<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>