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

492 lines
78 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_gpio.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__gpio_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_gpio.c</div></div>
</div><!--header-->
<div class="contents">
<a href="general__gpio_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_gpio.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">* @details </span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">Реализация функций для работы с GPIO:</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="comment"> - Чтение состояния кнопок с фильтром от дребезга</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">***************************************************************************/</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &quot;<a class="code" href="general__gpio_8h.html">general_gpio.h</a>&quot;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</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">//------------------------GPIO INIT FUNCTIONS------------------------</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"></span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">/**</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * @brief Включить тактирование порта GPIO</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00022" data-start="{" data-end="}">
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6"> 22</a></span>HAL_StatusTypeDef <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>(GPIO_TypeDef *GPIOx)</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>{ </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</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>(GPIOx))</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> HAL_StatusTypeDef status = HAL_OK;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// choose port for enable clock</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">if</span> (GPIOx==GPIOA)</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> __HAL_RCC_GPIOA_CLK_ENABLE();</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GPIOx==GPIOB)</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> __HAL_RCC_GPIOB_CLK_ENABLE();</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#ifdef GPIOC</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GPIOx==GPIOC)</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> __HAL_RCC_GPIOC_CLK_ENABLE();</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#ifdef GPIOD</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GPIOx==GPIOD)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> __HAL_RCC_GPIOD_CLK_ENABLE();</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#ifdef GPIOE</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GPIOx==GPIOE)</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> __HAL_RCC_GPIOE_CLK_ENABLE();</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#ifdef GPIOF</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GPIOx==GPIOF)</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> __HAL_RCC_GPIOF_CLK_ENABLE();</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor">#ifdef GPIOH</span></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> (GPIOx==GPIOF)</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> __HAL_RCC_GPIOH_CLK_ENABLE();</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> status = HAL_ERROR;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">return</span> status;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span>}</div>
</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">//------------------------GPIO INIT FUNCTIONS------------------------</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">//-------------------------------------------------------------------</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> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment">//------------------------GPIO LED FUNCTIONS-------------------------</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"></span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment">/**</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> * @brief Инициализировать светодиод (структуру светодиода)</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> * @param led Указатель на структуру светодиода</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> * @param GPIOx Указатель на структуру порта для светодиода</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * @param GPIO_PIN_X Пин для светодиода</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @param LED_ActiveLevel Состояния пина, при котором светодиод будет включен</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00073" data-start="{" data-end="}">
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084"> 73</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">GPIO_LED_Init</a>(<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>{</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</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>(led, GPIOx, GPIO_PIN_X))</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a> = GPIOx;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a> = GPIO_PIN_X;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">LED_ActiveLvl</a> = LED_ActiveLevel;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">GPIO_LED_Off</a>(led);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span>}</div>
</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"></span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment">/**</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> * @brief Включить светодиод </span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> * @param led Указатель на структуру светодиода</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"> * @return HAL Status</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00091" data-start="{" data-end="}">
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c"> 91</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a>(<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span>{</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</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>(led, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>))</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> HAL_ERROR; </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> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">state</a> = <a class="code hl_enumvalue" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea">LED_IS_ON</a>;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> HAL_GPIO_WritePin(led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">LED_ActiveLvl</a>);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span>}<span class="comment"></span></div>
</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment">/**</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> * @brief Выключить светодиод </span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> * @param led Указатель на структуру светодиода</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> * @return HAL Status</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00107" data-start="{" data-end="}">
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357"> 107</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">GPIO_LED_Off</a>(<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span>{</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</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>(led, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>))</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">return</span> HAL_ERROR; </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> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">state</a> = <a class="code hl_enumvalue" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae">LED_IS_OFF</a>;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> HAL_GPIO_WritePin(led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>, !led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">LED_ActiveLvl</a>);</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> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>}<span class="comment"></span></div>
</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment">/**</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"> * @brief Выставить светодиод по переменной</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"> * @param led Указатель на структуру светодиода</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"> * @param led_state Состояние светодиода</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"> * @return HAL Status</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00125" data-start="{" data-end="}">
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2"> 125</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2">GPIO_LED_Set</a>(<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint8_t led_state)</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="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>(led, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>))</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">if</span>(led_state)</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> {</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a>(led);</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> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">GPIO_LED_Off</a>(led);</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>}<span class="comment"></span></div>
</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment">/**</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment"> * @brief Активировать моргание светодиодом</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"> * @param led Указатель на структуру светодиода</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> * @param period Период плавного моргания светодиода</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * @return HAL Status</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> * @details Функция ставит режим моргания, который после управляется в @ref GPIO_LED_Dynamic_Handle</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00146" data-start="{" data-end="}">
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9"> 146</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9">GPIO_LED_Blink_Start</a>(<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint32_t period)</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span>{</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</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>(led, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>))</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">state</a> = <a class="code hl_enumvalue" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb">LED_IS_BLINKING</a>;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">LED_Period</a> = period;</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="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span>}</div>
</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="comment"></span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="comment">/**</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="comment"> * @brief Активировать моргание светодиодом</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"> * @param led Указатель на структуру светодиода</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"> * @param period Период плавного моргания светодиода</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"> * @return HAL Status</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> * @details Функция ставит режим моргания, который после управляется в @ref GPIO_LED_Dynamic_Handle</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00164" data-start="{" data-end="}">
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a"> 164</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a">GPIO_LED_Fading_Start</a>(<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint32_t period)</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>{</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</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>(led, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>))</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">state</a> = <a class="code hl_enumvalue" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b">LED_IS_FADING</a>;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">LED_Period</a> = period;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span>}</div>
</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment">//uint8_t LED_PWM_FADING_DUTYS[LED_PWM_TICKS] = {0 1 2 3 4 5 6 7 8 9 10 11 12 }</span><span class="comment"></span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="comment">/**</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="comment"> * @brief Управление динамическими режимами свечения светодиода</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="comment"> * @param Указатель на структуру светодиода</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="comment"> * @details Функция моргает/плавно моргает светодиодом в неблокирующем режиме</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="comment"> * Т.е. функцию надо вызывать постоянно, чтобы она мониторила тики </span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="comment"> * и в нужный момент переключала светодиод</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00184" data-start="{" data-end="}">
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2"> 184</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2">GPIO_LED_Dynamic_Handle</a>(<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</div>
<div class="line"><a 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="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>(led, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>))</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="comment">/* Режим моргания светодиода */</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">if</span>(led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">state</a> == <a class="code hl_enumvalue" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb">LED_IS_BLINKING</a>)</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> {</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> uint32_t tickcurrent = <a class="code hl_define" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>();</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="comment">/* Ожидание истечения периода моргания */</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">if</span>((tickcurrent - led-&gt;tickprev) &gt; led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">LED_Period</a>)</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> {</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="comment">/* Моргание */</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> HAL_GPIO_TogglePin(led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> led-&gt;tickprev = tickcurrent;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> }</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="comment">/* Режим плавного моргания светодиода */</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">state</a> == <a class="code hl_enumvalue" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b">LED_IS_FADING</a>)</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> {</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> direction = 0;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keyword">static</span> <span class="keywordtype">int</span> duty = 0;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> uint32_t tickcurrent = <a class="code hl_define" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>();</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="comment">/* Ожидание момента изменения яркости */</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="comment">/* Период ШИМ 20 мс, поэтому менять яроксть надо 40 раз за период (туда обратно) */</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">if</span>((tickcurrent - led-&gt;tickprev) &gt; led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">LED_Period</a>/(<a class="code hl_define" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">LED_PWM_TICKS</a>*2))</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> <span class="comment">/* Формирование разтухания */</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">if</span>(direction == 0)</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> {</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">if</span>(++duty &gt;= <a class="code hl_define" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">LED_PWM_TICKS</a>)</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> {</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> direction = 1;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> duty = <a class="code hl_define" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">LED_PWM_TICKS</a>;</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> }</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> }</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="comment">/* Формирование затухания */</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> {</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keywordflow">if</span>(--duty &lt;= 0)</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> {</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> direction = 0;</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> duty = 0;</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> }</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> }</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> led-&gt;tickprev = tickcurrent;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> }</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="comment">/* Формирование ШИМ для изменения яркости */</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordtype">int</span> duty_crt = (duty*duty/<a class="code hl_define" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">LED_PWM_TICKS</a>);</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">if</span>(tickcurrent%<a class="code hl_define" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">LED_PWM_TICKS</a> &lt; duty_crt)</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> HAL_GPIO_WritePin(led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">LED_ActiveLvl</a>);</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> }</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">else</span></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> HAL_GPIO_WritePin(led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>, led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>, !led-&gt;<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">LED_ActiveLvl</a>);</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> }</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>}</div>
</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="comment">//------------------------GPIO LED FUNCTIONS-------------------------</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="comment">//-------------------------------------------------------------------</span></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><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="comment">//------------------------GPIO SW FUNCTIONS-------------------------</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="comment"></span> </div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="comment">/**</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="comment">* @brief Инициализировать кнопку (структуру кнопки)</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="comment"> * @param sw Указатель на структуру кнопки</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"> * @param GPIOx Указатель на структуру порта для кнопки</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment"> * @param GPIO_PIN_X Пин для кнопки</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="comment"> * @param SW_ActiveLevel Состояния пина, когда кнопка нажата</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="comment"> * @return HAL Status</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00258" data-start="{" data-end="}">
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7"> 258</a></span>HAL_StatusTypeDef <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>(<a class="code hl_struct" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a> *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span>{</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</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>(sw, GPIOx, GPIO_PIN_X))</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">Sw_Port</a> = GPIOx;</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">Sw_Pin</a> = GPIO_PIN_X;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">Sw_ActiveLvl</a> = SW_ActiveLevel;</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span>}</div>
</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><span class="comment"></span> </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="comment">/**</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="comment"> * @brief Считать состоянии кнопки </span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="comment"> * @param sw Указатель на структуру кнопки</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span><span class="comment"> * @return 1 - если кнопка нажата, </span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="comment"> * 0 - если отжата, </span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="comment"> * -1 - если ошибка</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="comment"> * @details Функция включает в себя неблокирующую проверку на дребезг</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="comment"> * Т.е. функцию надо вызывать постоянно, чтобы она мониторила состояние кнопки</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00278" data-start="{" data-end="}">
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70"> 278</a></span><span class="keywordtype">int</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>(<a class="code hl_struct" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a> *sw)</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> <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>(sw, sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">Sw_Port</a>, sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">Sw_Pin</a>))</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordflow">if</span>(HAL_GPIO_ReadPin(sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">Sw_Port</a>, sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">Sw_Pin</a>) == sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">Sw_ActiveLvl</a>)</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> {</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">Sw_PrevState</a> = 1;</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> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keywordflow">if</span>(sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">Sw_FilterDelay</a>) <span class="comment">// если включена защита от дребезга</span></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">if</span>(sw-&gt;tickprev == 0)</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> sw-&gt;tickprev = <a class="code hl_define" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>();</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> <span class="keywordflow">if</span>((<a class="code hl_define" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>() - sw-&gt;tickprev) &gt;= sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">Sw_FilterDelay</a>)</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> {</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="keywordflow">if</span>(HAL_GPIO_ReadPin(sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">Sw_Port</a>, sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">Sw_Pin</a>) == sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">Sw_ActiveLvl</a>)</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> {</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> }</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> {</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> sw-&gt;tickprev = 0;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> }</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> }</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordflow">else</span> <span class="comment">// если нет защиты от дребезга</span></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> <span class="keywordflow">if</span>(HAL_GPIO_ReadPin(sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">Sw_Port</a>, sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">Sw_Pin</a>) == sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">Sw_ActiveLvl</a>)</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> {</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> }</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> {</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> sw-&gt;tickprev = 0;</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> }</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> }</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> }</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> {</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> sw-&gt;<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">Sw_PrevState</a> = 0;</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> }</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span>}</div>
</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span><span class="comment">//------------------------GPIO SW FUNCTIONS-------------------------</span></div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="ttc" id="ageneral__gpio_8h_html"><div class="ttname"><a href="general__gpio_8h.html">general_gpio.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_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___g_p_i_o___i_n_i_t_html_ga1d42e219765ec526d99e306638ac0023"><div class="ttname"><a href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">LED_PWM_TICKS</a></div><div class="ttdeci">#define LED_PWM_TICKS</div><div class="ttdoc">Количество тиков в периоде ШИМ</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00035">general_gpio.h:35</a></div></div>
<div class="ttc" id="agroup___l_i_b_s___c_o_n_f_i_g_html_ga9c853b02c22f26023c34d1d404b6d653"><div class="ttname"><a href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a></div><div class="ttdeci">#define local_time()</div><div class="ttdoc">Локальное время</div><div class="ttdef"><b>Definition</b> <a href="mylibs__config_8h_source.html#l00080">mylibs_config.h:80</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="#l00022">general_gpio.c:22</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_ga4b9572949326b050694cd55d0a7e5f6c"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)</div><div class="ttdoc">Включить светодиод</div><div class="ttdef"><b>Definition</b> <a href="#l00091">general_gpio.c:91</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gaa00f20021781464af3dfe74aa3e59a0a"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a">GPIO_LED_Fading_Start</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)</div><div class="ttdoc">Активировать моргание светодиодом</div><div class="ttdef"><b>Definition</b> <a href="#l00164">general_gpio.c:164</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gaadda2d4f021390a4e392210a5ace5357"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">GPIO_LED_Off</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)</div><div class="ttdoc">Выключить светодиод</div><div class="ttdef"><b>Definition</b> <a href="#l00107">general_gpio.c:107</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gac936453c7a0841c0b17bcfdae4958084"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">GPIO_LED_Init</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)</div><div class="ttdoc">Инициализировать светодиод (структуру светодиода)</div><div class="ttdef"><b>Definition</b> <a href="#l00073">general_gpio.c:73</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gad6e6189824406c4d472b6340c7f19bb2"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2">GPIO_LED_Dynamic_Handle</a></div><div class="ttdeci">void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)</div><div class="ttdoc">Управление динамическими режимами свечения светодиода</div><div class="ttdef"><b>Definition</b> <a href="#l00184">general_gpio.c:184</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gae78b570447d55a462a679a89dbaa8ea2"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2">GPIO_LED_Set</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)</div><div class="ttdoc">Выставить светодиод по переменной</div><div class="ttdef"><b>Definition</b> <a href="#l00125">general_gpio.c:125</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gaf22f44ecaf6a1932b47edc5a845b03a9"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9">GPIO_LED_Blink_Start</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)</div><div class="ttdoc">Активировать моргание светодиодом</div><div class="ttdef"><b>Definition</b> <a href="#l00146">general_gpio.c:146</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb">LED_IS_BLINKING</a></div><div class="ttdeci">@ LED_IS_BLINKING</div><div class="ttdoc">Моргание светодиодом</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00065">general_gpio.h:65</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae">LED_IS_OFF</a></div><div class="ttdeci">@ LED_IS_OFF</div><div class="ttdoc">Светодиод выключен</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00063">general_gpio.h:63</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b">LED_IS_FADING</a></div><div class="ttdeci">@ LED_IS_FADING</div><div class="ttdoc">Плавное моргание светодиодом</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00066">general_gpio.h:66</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea">LED_IS_ON</a></div><div class="ttdeci">@ LED_IS_ON</div><div class="ttdoc">Светодиод включен</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00064">general_gpio.h:64</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 *sw)</div><div class="ttdoc">Считать состоянии кнопки</div><div class="ttdef"><b>Definition</b> <a href="#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_ActiveLevel)</div><div class="ttdoc">Инициализировать кнопку (структуру кнопки)</div><div class="ttdef"><b>Definition</b> <a href="#l00258">general_gpio.c:258</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___l_e_d_type_def_html"><div class="ttname"><a href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a></div><div class="ttdoc">Структура светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00073">general_gpio.h:74</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___l_e_d_type_def_html_a684ff60e4c94daf2221524cdc6fcc978"><div class="ttname"><a href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">GPIO_LEDTypeDef::LED_Pin</a></div><div class="ttdeci">uint32_t LED_Pin</div><div class="ttdoc">GPIO пин ножки светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00078">general_gpio.h:78</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___l_e_d_type_def_html_a6cc026931a4681732f9a329ae03098ec"><div class="ttname"><a href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">GPIO_LEDTypeDef::LED_Period</a></div><div class="ttdeci">uint32_t LED_Period</div><div class="ttdoc">Период моргания светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00081">general_gpio.h:81</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___l_e_d_type_def_html_a831923d4d157267ecc2f1add1c49adcf"><div class="ttname"><a href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">GPIO_LEDTypeDef::LED_Port</a></div><div class="ttdeci">GPIO_TypeDef * LED_Port</div><div class="ttdoc">GPIO порт ножки светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00077">general_gpio.h:77</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___l_e_d_type_def_html_abe9aadc0b28d042267f7155e187a1816"><div class="ttname"><a href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">GPIO_LEDTypeDef::LED_ActiveLvl</a></div><div class="ttdeci">uint8_t LED_ActiveLvl</div><div class="ttdoc">Активный уровень ножки (при котором светодиод горит)</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00080">general_gpio.h:80</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___l_e_d_type_def_html_ad28d93023a00e3c5669bd3deda122435"><div class="ttname"><a href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">GPIO_LEDTypeDef::state</a></div><div class="ttdeci">GPIO_LEDStateTypeDef state</div><div class="ttdoc">Текущий режим работы светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00075">general_gpio.h:75</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___switch_type_def_html"><div class="ttname"><a href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a></div><div class="ttdoc">Структура кнопки</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00090">general_gpio.h:91</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___switch_type_def_html_a245f1dc811279ce5d4598582db979a89"><div class="ttname"><a href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">GPIO_SwitchTypeDef::Sw_PrevState</a></div><div class="ttdeci">uint32_t Sw_PrevState</div><div class="ttdoc">Предыдущее состояние кнопки</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00096">general_gpio.h:96</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___switch_type_def_html_a2600e599a961af2e280c721894df4c06"><div class="ttname"><a href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">GPIO_SwitchTypeDef::Sw_FilterDelay</a></div><div class="ttdeci">uint32_t Sw_FilterDelay</div><div class="ttdoc">Фильтр от дребезга (в мс)</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00097">general_gpio.h:97</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___switch_type_def_html_a4fadf5ead3ebccad521a52c064eeb405"><div class="ttname"><a href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">GPIO_SwitchTypeDef::Sw_ActiveLvl</a></div><div class="ttdeci">uint8_t Sw_ActiveLvl</div><div class="ttdoc">Активный уровень ножки (при котором кнопка нажата)</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00095">general_gpio.h:95</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___switch_type_def_html_a63d58d9cba49a5823175585ef2996032"><div class="ttname"><a href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">GPIO_SwitchTypeDef::Sw_Pin</a></div><div class="ttdeci">uint32_t Sw_Pin</div><div class="ttdoc">GPIO пин ножки кнопки</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00093">general_gpio.h:93</a></div></div>
<div class="ttc" id="astruct_g_p_i_o___switch_type_def_html_afb369df75a6065fd89ac4ba97d98ab1a"><div class="ttname"><a href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">GPIO_SwitchTypeDef::Sw_Port</a></div><div class="ttdeci">GPIO_TypeDef * Sw_Port</div><div class="ttdoc">GPIO порт ножки кнопки</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8h_source.html#l00092">general_gpio.h:92</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__gpio_8c.html">general_gpio.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>