Compare commits

...

5 Commits

Author SHA1 Message Date
f46fa9b4ac Обновить README.md 2025-10-21 05:32:05 +03:00
bc705ab3b3 Обновить README.md 2025-10-21 05:18:41 +03:00
51dc03fcbc Переструктурирование:
- MyLibs - максимально платформонезависимые библиотеки (кроме разве что RTT)
- RTT
- STM32_General - библиотеки для периферии stm32
2025-10-21 05:08:27 +03:00
17bace0c3d pre-release 0.01 post fix 2025-10-21 04:39:17 +03:00
2b4c00ea92 pre-release 0.01 2025-10-21 04:30:41 +03:00
764 changed files with 127 additions and 65039 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
/MyLibsGeneral/.vscode/

View File

@ -1,2 +0,0 @@
@echo off
start "" "%~dp0.\html\index.html"

File diff suppressed because it is too large Load Diff

View File

@ -1,306 +0,0 @@
<!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_flash.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__flash_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_flash.c</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#include &quot;__general_flash.h&quot;</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span>FLASH_EraseInitTypeDef EraseInitStruct;</div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="keyword">extern</span> HAL_StatusTypeDef res_hal;</div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="keywordtype">unsigned</span> CRC_Update;</div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">//uint32_t PAGE_OFFSET = ((uint32_t)((4-1) * 0x0400));</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span>uint32_t PAGE_NUMB = 127;</div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</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>HAL_StatusTypeDef FLASH_Write_Data(uint32_t* Address, uint8_t* Data, <span class="keywordtype">int</span> Data_size)</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span>{</div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> HAL_StatusTypeDef res_hal;</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> <span class="keywordtype">int</span> data_cnt = 0;</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> uint32_t adr;</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> uint32_t word_data;</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> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> res_hal = HAL_FLASH_Unlock();</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keywordflow">for</span> (adr = *Address; adr &lt; *Address + Data_size; adr = adr + 4)</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> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> word_data = (</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> Data[data_cnt] |</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> Data[data_cnt + 1] &lt;&lt; 8 |</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> Data[data_cnt + 2] &lt;&lt; 16 |</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> Data[data_cnt + 3] &lt;&lt; 24);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, adr, word_data);</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> data_cnt += 4;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> }</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> *Address += Data_size;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> res_hal = HAL_FLASH_Lock();</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">return</span> res_hal;</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> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>HAL_StatusTypeDef FLASH_Enable_DualBankMode(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>{</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> HAL_StatusTypeDef res_hal;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> FLASH_AdvOBProgramInitTypeDef OB_DualBank;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </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> res_hal = HAL_FLASH_Unlock();</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> res_hal = HAL_FLASH_OB_Unlock();</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">return</span> res_hal;</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> FLASH-&gt;OPTCR |= FLASH_OPTCR_DB1M;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> res_hal = HAL_FLASH_OB_Launch();</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> res_hal = HAL_FLASH_OB_Lock();</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> res_hal = HAL_FLASH_Lock();</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>}</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </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><span class="comment">/* Убрать защиту */</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span>HAL_StatusTypeDef FLASH_WriteProtection(uint32_t BankN, uint32_t WriteProtection)</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> HAL_StatusTypeDef res_hal;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> FLASH_OBProgramInitTypeDef OBInit;</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> FLASH-&gt;SR |= FLASH_FLAG_WRPERR <span class="comment">// Write Protection Error</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> | FLASH_FLAG_PGSERR <span class="comment">// Programming Sequence Error</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> | FLASH_FLAG_PGAERR <span class="comment">// Programming Alignment Error</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> | FLASH_FLAG_OPERR; <span class="comment">// Operation Error</span></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> res_hal = HAL_FLASH_Unlock();</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> res_hal = HAL_FLASH_OB_Unlock(); <span class="comment">// Разблокировка Option Bytes</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// Считываем текущую конфигурацию Option Bytes</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> HAL_FLASHEx_OBGetConfig(&amp;OBInit);</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">// Отключаем защиту на всех секторах второго банка</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> OBInit.OptionType = OPTIONBYTE_WRP;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> OBInit.WRPState = WriteProtection; <span class="comment">// Снять защиту</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> OBInit.WRPSector = OB_WRP_SECTOR_12; <span class="comment">// Снять защиту</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> OBInit.Banks = BankN; <span class="comment">// Указываем второй банк</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> res_hal = HAL_FLASHEx_OBProgram(&amp;OBInit);</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Записываем изменения и перезагружаем чип</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> res_hal = HAL_FLASH_OB_Launch();</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// Считываем текущую конфигурацию Option Bytes</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> HAL_FLASHEx_OBGetConfig(&amp;OBInit);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment">// Блокировка Option Bytes</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> res_hal = HAL_FLASH_OB_Lock(); </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">return</span> res_hal;</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> res_hal = HAL_FLASH_Lock();</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">return</span> res_hal;</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> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span>}</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">//-----------------ELEMENTARY FUNCTIONS---------------------</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment">/* functions for reading bytes/halswords/words */</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span>uint8_t FLASH_Read_Byte(uint32_t add)</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span>{</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">return</span> (*(__IO uint8_t*)(add));</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span>}</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span>uint16_t FLASH_Read_HalfWord(uint32_t add)</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> <span class="keywordflow">return</span> (*(__IO uint16_t*)(add));</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span>}</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span>uint32_t FLASH_Read_Word(uint32_t add)</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> <span class="keywordflow">return</span> (*(__IO uint32_t*)(add));</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span>}</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment">/* functions for writing bytes/halswords/words */</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span>HAL_StatusTypeDef FLASH_Write_Byte(uint32_t Address, uint8_t Data)</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span>{ </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> HAL_StatusTypeDef res_hal;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> res_hal = HAL_FLASH_Unlock();</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">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, (uint8_t)(Data));</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</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> res_hal = HAL_FLASH_Lock(); </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span>}</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span>HAL_StatusTypeDef FLASH_Write_HalfWord(uint32_t Address, uint16_t Data)</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span>{</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> HAL_StatusTypeDef res_hal;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> res_hal = HAL_FLASH_Unlock();</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> <span class="keywordflow">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, Address, (uint16_t)(Data));</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">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</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> res_hal = HAL_FLASH_Lock(); </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span>}</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span>HAL_StatusTypeDef FLASH_Write_Word(uint32_t Address, uint32_t Data)</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span>{</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> HAL_StatusTypeDef res_hal;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> res_hal = HAL_FLASH_Unlock();</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, (uint32_t)(Data)); </div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">if</span> (res_hal != HAL_OK) <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> res_hal = HAL_FLASH_Lock(); </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">return</span> res_hal;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span>}</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span><span class="comment">//----------------------------------------------------------</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </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"><b>__general_flash.c</b></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>

View File

@ -1,159 +0,0 @@
<!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/Inc/__general_flash.h 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__flash_8h_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_flash.h</div></div>
</div><!--header-->
<div class="contents">
<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">* @file general_flash.h</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* @brief Заголовочны файл модуля работы с FLASH.</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">*************************************************************************/</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#ifndef __FLASH_GENERAL_H_</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#define __FLASH_GENERAL_H_</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">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</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">/////////////////////////---USER SETTINGS---/////////////////////////</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="mylibs__defs_8h.html">mylibs_defs.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> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"></span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">////////////////////////////---DEFINES---////////////////////////////</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">////////////////////////////---DEFINES---////////////////////////////</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"></span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</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">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"></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">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span>HAL_StatusTypeDef FLASH_Enable_DualBankMode(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span>HAL_StatusTypeDef FLASH_WriteProtection(uint32_t BankN, uint32_t WriteProtection);</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">/* functions for reading bytes/halswords/words */</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span>uint8_t FLASH_Read_Byte(uint32_t add);</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span>uint16_t FLASH_Read_HalfWord(uint32_t add);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span>uint32_t FLASH_Read_Word(uint32_t add);</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">/* functions for writing bytes/halswords/words */</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>HAL_StatusTypeDef FLASH_Write_Byte(uint32_t Address, uint8_t Data);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span>HAL_StatusTypeDef FLASH_Write_HalfWord(uint32_t Address, uint16_t Data);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>HAL_StatusTypeDef FLASH_Write_Word(uint32_t Address, uint32_t Data);<span class="comment"></span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</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="preprocessor">#endif </span><span class="comment">// __FLASH_GENERAL_H_</span></div>
<div class="ttc" id="amylibs__defs_8h_html"><div class="ttname"><a href="mylibs__defs_8h.html">mylibs_defs.h</a></div><div class="ttdoc">Заголочный файл для дефайнов библиотеки MyLibsGeneral.</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><b>__general_flash.h</b></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>

View File

@ -1,417 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_spi.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="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">MyLibs<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Расширенные библиотеки для STM32</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('____general__spi_8c_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">__general_spi.c</div></div>
</div><!--header-->
<div class="contents">
<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_spi.c</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Модуль для инициализации SPI.</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">*</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">* - SPI_Base_Init Инициализация SPI </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">* Functions: spi initialize</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">* - SPI_GPIO_Init Инициализация GPIO для SPI</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">* - SPI_DMA_Init Инициализация DMA для SPI</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">* - SPI_MspInit Аналог HAL_MspInit для SPI</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">* - SPI_MspDeInit Аналог HAL_MspDeInit для SPI</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">*</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">*************************************************************************/</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;general_spi.h&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</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="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">//------------------------SPI INIT FUNCTIONS------------------------</span><span class="comment"></span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/** </span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * @brief Initialize SPI with SPI_SettingsTypeDef structure.</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * @param sspi - указатель на структуру с настройками SPI.</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> * @note SPI_SettingsTypeDef структура содержит хендл SPI и настройки перефирии (GPIO)</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> */</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span>HAL_StatusTypeDef SPI_Base_Init(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span>{ <span class="comment">// function takes setting structure for init</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// check is settings are valid</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">if</span>(Check_SPI_Init_Struct(sspi) != HAL_OK)</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> SPI_MspInit(&amp;sspi-&gt;hspi); </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">if</span> (HAL_SPI_Init(&amp;sspi-&gt;hspi) != HAL_OK)</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> <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="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</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="comment">// init gpio from SPISettings structure</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> SPI_GPIO_Init(sspi);</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">// // init dma from SPISettings structure if need</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">// if (sspi-&gt;DMAChannel != 0)</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">// SPI_DMA_Init(&amp;sspi-&gt;hspi, sspi-&gt;hspi.hdmarx, sspi-&gt;DMAChannel, sspi-&gt;DMA_CHANNEL_X);</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">return</span> HAL_OK;</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> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment"></span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">/** </span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"> * @brief Initialize GPIO for SPI.</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> * @param GPIOx - порт для настройки.</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> * @param GPIO_PIN_RX - пин для настройки на прием.</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> * @param GPIO_PIN_TX - пин для настройки на передачу.</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><span class="keywordtype">void</span> SPI_GPIO_Init(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</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> GPIO_InitTypeDef GPIO_InitStruct = {0}; </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// GPIO INIT </span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <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>(sspi-&gt;CLK_GPIOx);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <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>(sspi-&gt;MISO_GPIOx);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <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>(sspi-&gt;MOSI_GPIOx); </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// CLK PIN INIT</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> GPIO_InitStruct.Pin = sspi-&gt;CLK_PIN;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> GPIO_InitStruct.Alternate = sspi-&gt;CLK_GPIO_AlternageFunc;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> HAL_GPIO_Init(sspi-&gt;CLK_GPIOx, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// MISO PIN INIT</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> GPIO_InitStruct.Pin = sspi-&gt;MISO_PIN;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> GPIO_InitStruct.Alternate = sspi-&gt;MISO_GPIO_AlternageFunc;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> HAL_GPIO_Init(sspi-&gt;MISO_GPIOx, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// MOSI PIN INIT</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> GPIO_InitStruct.Pin = sspi-&gt;MOSI_PIN;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> GPIO_InitStruct.Alternate = sspi-&gt;MOSI_GPIO_AlternageFunc;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> HAL_GPIO_Init(sspi-&gt;MOSI_GPIOx, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span>}</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"></span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment">/** </span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> * @brief Initialize DMA for SPI.</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> * @param hspi - указатель на хендл SPI для настройки DMA.</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> * @param hdma_rx - указатель на хендл DMA для линии приема SPI.</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"> * @param DMAChannel - указатель на канал DMA/поток DMA в STM32F407.</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> * @param DMA_CHANNEL_X - канал DMA.</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> */</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="keywordtype">void</span> SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span>{ <span class="comment">// function takes spi and dma handlers and dmachannel for spi</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment">// // for now only dma rx is supported, tx maybe later if needed</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment">// // calc defines on boot_project_setup.h</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment">// /* SPI3 DMA Init */</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment">// /* SPI3_RX Init */</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment">// </span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment">// hdma_rx-&gt;Instance = DMAChannel;</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment">//#if defined(STM32F407xx) // dma channel choose for 407</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment">// hdma_rx-&gt;Init.Channel = DMA_CHANNEL_X;</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment">//#endif</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment">// hdma_rx-&gt;Init.Direction = DMA_PERIPH_TO_MEMORY;</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment">// hdma_rx-&gt;Init.PeriphInc = DMA_PINC_DISABLE;</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="comment">// hdma_rx-&gt;Init.MemInc = DMA_MINC_ENABLE;</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment">// hdma_rx-&gt;Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment">// hdma_rx-&gt;Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment">// hdma_rx-&gt;Init.Mode = DMA_CIRCULAR;</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment">// hdma_rx-&gt;Init.Priority = DMA_PRIORITY_LOW;</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment">// if (HAL_DMA_Init(hdma_rx) != HAL_OK)</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment">// {</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment">// MyLibs_Error_Handler();</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment">// }</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment">// __USER_LINKDMA(hspi,hdmarx,hdma_rx); </span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment">// </span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment">// // __USER_LINKDMA is need because __HAL_LINKDMA is written for global defined hdma_rx</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment">// // so you get error because hal uses . insted of -&gt;</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span>}</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"></span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment">/** </span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> * @brief Initialize SPI &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> * @param hspi - указатель на хендл SPI для инициализации.</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI,</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment"> дефайнами в general_spi.h определяются используемые SPI.</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"> */</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="keywordtype">void</span> SPI_MspInit(SPI_HandleTypeDef *hspi) <span class="comment">// analog for hal function</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span>{ </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// rcc, dma and interrupt init for SPIs</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// GPIO init was moved to own functions SPI_GPIO_Init </span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">if</span>(0);</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="preprocessor">#ifdef USE_SPI1</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI1)</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">// /* DMA2 clock enable */</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment">// __HAL_RCC_DMA2_CLK_ENABLE();</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment">// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="comment">/* SPI1 clock enable */</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> __HAL_RCC_SPI1_CLK_ENABLE();</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="comment">/* SPI1 interrupt Init */</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0);</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> HAL_NVIC_EnableIRQ(SPI1_IRQn);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="preprocessor">#endif </span><span class="comment">// USE_SPI1</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="preprocessor">#ifdef USE_SPI2</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI2)</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> {</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="comment">/* SPI2 clock enable */</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> __HAL_RCC_SPI2_CLK_ENABLE();</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="comment">/* SPI2 interrupt Init */</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> HAL_NVIC_SetPriority(SPI2_IRQn, 0, 0);</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> HAL_NVIC_EnableIRQ(SPI2_IRQn);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> }</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor">#endif </span><span class="comment">// USE_SPI2</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="preprocessor">#ifdef USE_SPI3</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI3)</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> { </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="comment">/* SPI3 clock enable */</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> __HAL_RCC_SPI3_CLK_ENABLE(); </div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="comment">/* SPI3 interrupt Init */</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> HAL_NVIC_SetPriority(SPI3_IRQn, 0, 0);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> HAL_NVIC_EnableIRQ(SPI3_IRQn);</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><span class="preprocessor">#endif </span><span class="comment">// USE_SPI3</span></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><span class="comment"></span> </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="comment"> * @brief Deinitialize SPI &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="comment"> * @param hspi - указатель на хендл SPI для деинициализации.</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="comment"> * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых SPI,</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="comment"> дефайнами определяются используемые SPI.</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="comment"> */</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="keywordtype">void</span> SPI_MspDeInit(SPI_HandleTypeDef *hspi) <span class="comment">// analog for hal function</span></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> <span class="comment">// rcc, dma and interrupt init for SPIs</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="comment">// GPIO init was moved to own functions SPI_GPIO_Init </span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">if</span>(0);</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="preprocessor">#ifdef USE_SPI1</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI1)</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> {</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="comment">// /* DMA2 clock enable */</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment">// __HAL_RCC_DMA2_CLK_ENABLE();</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment">// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="comment">/* SPI1 clock reset */</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> __HAL_RCC_SPI1_FORCE_RESET();</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> __HAL_RCC_SPI1_RELEASE_RESET();</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> }</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="preprocessor">#endif </span><span class="comment">// USE_SPI1</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor">#ifdef USE_SPI2</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI2)</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> {</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);</span></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="comment">/* SPI2 clock reset */</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> __HAL_RCC_SPI2_FORCE_RESET();</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> __HAL_RCC_SPI2_RELEASE_RESET();</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="preprocessor">#endif </span><span class="comment">// USE_SPI2</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="preprocessor">#ifdef USE_SPI3</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI3)</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">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);</span></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> <span class="comment">/* SPI3 clock reset */</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> __HAL_RCC_SPI3_FORCE_RESET();</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> __HAL_RCC_SPI3_RELEASE_RESET();</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> }</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="preprocessor">#endif </span><span class="comment">// USE_SPI3</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span>}</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="comment"></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"> * @brief Check that spi init structure have correct values.</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="comment"> * @param sspi - указатель на структуру с настройками SPI.</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"> */</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span>HAL_StatusTypeDef Check_SPI_Init_Struct(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span>{</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="comment">// check is settings are valid</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="keywordflow">if</span> (!IS_SPI_ALL_INSTANCE(sspi-&gt;hspi.Instance))</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keywordflow">return</span> HAL_ERROR;</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="comment">// check init settings</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordflow">if</span> (!IS_SPI_MODE(sspi-&gt;hspi.Init.Mode))</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">if</span> (!IS_SPI_DIRECTION(sspi-&gt;hspi.Init.Direction))</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordflow">if</span> (!IS_SPI_DATASIZE(sspi-&gt;hspi.Init.DataSize))</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keywordflow">if</span> (!IS_SPI_BAUDRATE_PRESCALER(sspi-&gt;hspi.Init.BaudRatePrescaler))</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordflow">if</span> (!IS_SPI_CPOL(sspi-&gt;hspi.Init.CLKPolarity))</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keywordflow">if</span> (!IS_SPI_CPHA(sspi-&gt;hspi.Init.CLKPhase))</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordflow">if</span> (!IS_SPI_NSS(sspi-&gt;hspi.Init.NSS))</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">if</span> (!IS_SPI_FIRST_BIT(sspi-&gt;hspi.Init.FirstBit))</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordflow">if</span> (!IS_SPI_CRC_CALCULATION(sspi-&gt;hspi.Init.CRCCalculation))</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">if</span> (!IS_SPI_CRC_POLYNOMIAL(sspi-&gt;hspi.Init.NSS) &amp;&amp; </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> (sspi-&gt;hspi.Init.CRCCalculation != SPI_CRCCALCULATION_DISABLE))</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">if</span> (!IS_SPI_TIMODE(sspi-&gt;hspi.Init.TIMode))</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordflow">return</span> HAL_ERROR;</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> <span class="comment">// check gpio</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">if</span> (!IS_GPIO_ALL_INSTANCE(sspi-&gt;CLK_GPIOx) || !IS_GPIO_ALL_INSTANCE(sspi-&gt;MISO_GPIOx) || !IS_GPIO_ALL_INSTANCE(sspi-&gt;MOSI_GPIOx))</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keywordflow">if</span> (!IS_GPIO_PIN(sspi-&gt;CLK_PIN) &amp;&amp; !IS_GPIO_PIN(sspi-&gt;MISO_PIN) &amp;&amp; !IS_GPIO_PIN(sspi-&gt;MOSI_PIN)) <span class="comment">// if both pins arent set up</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> </div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</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_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="astruct_s_p_i___settings_type_def_html"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="____general__spi_8h_source.html#l00033">__general_spi.h:34</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_9e11e9a41112194af3eee6cc728f9515.html">MyLibsGeneral</a></li><li class="navelem"><a class="el" href="dir_9c80311a018e1f8cfb6659b73d634be4.html">Src</a></li><li class="navelem"><b>__general_spi.c</b></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.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,225 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_spi.h 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="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">MyLibs<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Расширенные библиотеки для STM32</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('____general__spi_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">__general_spi.h</div></div>
</div><!--header-->
<div class="contents">
<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_spi.h</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Заголовочны файл модуля инициализации SPI.</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="preprocessor">#ifndef __SPI_GENERAL_H_</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#define __SPI_GENERAL_H_</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">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"></span><span class="preprocessor">#define HAL_SPI_MODULE_ENABLED </span><span class="comment">// need to uncomment these defines in stm32f4xx_hal_conf.h</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// also need to add hal_spi.c (source code)</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#define USE_SPI1</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#define USE_SPI2</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#define USE_SPI3</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"></span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"></span><span class="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"></span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">////////////////////////////---DEFINES---////////////////////////////</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> </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">////////////////////////////---DEFINES---////////////////////////////</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">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="foldopen" id="foldopen00033" data-start="{" data-end="};">
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html"> 33</a></span><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span><span class="comment">// struct with settings for custom function</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>{</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> SPI_HandleTypeDef hspi;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> GPIO_TypeDef *CLK_GPIOx;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> uint32_t CLK_PIN;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> uint32_t CLK_GPIO_AlternageFunc;</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> GPIO_TypeDef *MISO_GPIOx;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> uint32_t MISO_PIN;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> uint32_t MISO_GPIO_AlternageFunc;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> GPIO_TypeDef *MOSI_GPIOx;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> uint32_t MOSI_PIN; </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> uint32_t MOSI_GPIO_AlternageFunc;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>}<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a>;<span class="comment"></span></div>
</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"></span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment"></span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"></span><span class="comment">/** </span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"> * @brief Initialize SPI with SPI_SettingsTypeDef structure.</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> * @param sspi - указатель на структуру с настройками SPI.</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> * @note Данная структура содержит хендл ЮАРТ и настройки перефирии (GPIO)</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>HAL_StatusTypeDef SPI_Base_Init(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi);<span class="comment"></span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">/** </span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> * @brief Initialize GPIO for SPI.</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> * @param GPIOx - порт для настройки.</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> * @param GPIO_PIN_RX - пин для настройки на прием.</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> * @param GPIO_PIN_TX - пин для настройки на передачу.</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> */</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="keywordtype">void</span> SPI_GPIO_Init(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi);<span class="comment"></span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">/** </span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * @brief Initialize DMA for SPI.</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @param hspi - указатель на хендл SPI для настройки DMA.</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> * @param hdma_rx - указатель на хендл DMA для линии приема SPI.</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> * @param DMAChannel - указатель на канал DMA/поток DMA в STM32F407.</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> * @param DMA_CHANNEL_X - канал DMA.</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> */</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="keywordtype">void</span> SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);<span class="comment"></span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment">/** </span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> * @brief Initialize SPI &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> * @param hspi - указатель на хендл SPI для инициализации.</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI,</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> дефайнами определяются используемые SPI.</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"> */</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="keywordtype">void</span> SPI_MspInit(SPI_HandleTypeDef *hspi);<span class="comment"></span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment">/** </span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> * @brief Deinitialize SPI &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> * @param hspi - указатель на хендл SPI для деинициализации.</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых SPI,</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> дефайнами в rs_message.h определяются используемые SPI.</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"> */</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="keywordtype">void</span> SPI_MspDeInit(SPI_HandleTypeDef *hspi);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"></span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment">/** </span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> * @brief Check that spi init structure have correct values.</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> * @param sspi - указатель на структуру с настройками SPI.</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> */</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>HAL_StatusTypeDef Check_SPI_Init_Struct(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi);<span class="comment"></span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"></span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor">#endif </span><span class="comment">// __SPI_GENERAL_H_</span></div>
<div class="ttc" id="amylibs__defs_8h_html"><div class="ttname"><a href="mylibs__defs_8h.html">mylibs_defs.h</a></div><div class="ttdoc">Заголочный файл для дефайнов библиотеки MyLibsGeneral.</div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="#l00033">__general_spi.h:34</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_9e11e9a41112194af3eee6cc728f9515.html">MyLibsGeneral</a></li><li class="navelem"><a class="el" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><b>__general_spi.h</b></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.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,505 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_uart.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="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">MyLibs<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Расширенные библиотеки для STM32</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('____general__uart_8c_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">__general_uart.c</div></div>
</div><!--header-->
<div class="contents">
<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_uart.c</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * @brief Модуль для инициализации UART.</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"> * //-------------------Функции-------------------//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * @verbatim</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * Functions: users</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * - UART_Base_Init Инициализация UART </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"> * Functions: uart initialize</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * - UART_GPIO_Init Инициализация GPIO для UART</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * - UART_DMA_Init Инициализация DMA для UART</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * - UART_MspInit Аналог HAL_MspInit для UART</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * - UART_MspDeInit Аналог HAL_MspDeInit для UART</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * @endverbatim</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">***************************************************************************/</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;general_uart.h&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</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="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">//------------------------UART INIT FUNCTIONS------------------------</span><span class="comment"></span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/** </span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * @brief Initialize UART with UART_SettingsTypeDef structure.</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * @param suart - указатель на структуру с настройками UART.</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> * @note Данная структура содержит хендл ЮАРТ и настройки перефирии (GPIO)</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> */</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span>HAL_StatusTypeDef UART_Base_Init(<a class="code hl_struct" href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a> *suart)</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span>{ <span class="comment">// function takes setting structure for init</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// check is settings are valid</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">if</span>(Check_UART_Init_Struct(suart) != HAL_OK)</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> suart-&gt;huart.Init.Mode = UART_MODE_TX_RX;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> UART_MspInit(&amp;suart-&gt;huart);</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> <span class="keywordflow">if</span> (HAL_UART_Init(&amp;suart-&gt;huart) != HAL_OK)</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</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="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// init gpio from UARTSettings structure</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> UART_GPIO_Init(suart-&gt;GPIOx, suart-&gt;GPIO_PIN_RX, suart-&gt;GPIO_PIN_TX);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> __HAL_UART_ENABLE_IT(&amp;suart-&gt;huart, UART_IT_IDLE);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// init dma from UARTSettings structure if need</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span> (suart-&gt;DMAChannel != 0)</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> UART_DMA_Init(&amp;suart-&gt;huart, suart-&gt;huart.hdmarx, suart-&gt;DMAChannel, suart-&gt;DMA_CHANNEL_X);</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> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">return</span> HAL_OK;</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> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"></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><span class="comment"> * @brief Initialize GPIO for UART.</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"> * @param GPIOx - порт для настройки.</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> * @param GPIO_PIN_RX - пин для настройки на прием.</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> * @param GPIO_PIN_TX - пин для настройки на передачу.</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="keywordtype">void</span> UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX)</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span>{ <span class="comment">// function takes port and pins (for rx and tx)</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> GPIO_InitTypeDef GPIO_InitStruct = {0};</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">// choose port for enable clock</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <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="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">//USART3 GPIO Configuration</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">//GPIO_PIN_TX ------&gt; USART_TX</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">//GPIO_PIN_RX ------&gt; USART_RX </span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor">#if defined(STM32F407xx) </span><span class="comment">// gpio init for 407</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> GPIO_InitStruct.Pin = GPIO_PIN_TX|GPIO_PIN_RX;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> GPIO_InitStruct.Alternate = GPIO_AF7_USART3;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> HAL_GPIO_Init(GPIOx, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#elif defined(STM32F103xG) </span><span class="comment">// gpio init for atm403/stm103</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">//GPIO_PIN_TX ------&gt; USART_TX</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> GPIO_InitStruct.Pin = GPIO_PIN_TX;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> HAL_GPIO_Init(GPIOx, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment">// GPIO_PIN_RX ------&gt; USART_RX </span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> GPIO_InitStruct.Pin = GPIO_PIN_RX;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> GPIO_InitStruct.Mode = GPIO_MODE_INPUT;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> HAL_GPIO_Init(GPIOx, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>}</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"></span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">/** </span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * @brief Initialize DMA for UART.</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * @param huart - указатель на хендл UART для настройки DMA.</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> * @param hdma_rx - указатель на хендл DMA для линии приема UART.</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> * @param DMAChannel - указатель на канал DMA/поток DMA в STM32F407.</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> * @param DMA_CHANNEL_X - канал DMA.</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> */</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="keywordtype">void</span> UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span>{ <span class="comment">// function takes uart and dma handlers and dmachannel for uart</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// for now only dma rx is supported, tx maybe later if needed</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// calc defines on boot_project_setup.h</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="comment">/* USART3 DMA Init */</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="comment">/* USART3_RX Init */</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> hdma_rx-&gt;Instance = DMAChannel;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor">#if defined(STM32F407xx) </span><span class="comment">// dma channel choose for 407</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> hdma_rx-&gt;Init.Channel = DMA_CHANNEL_X;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> hdma_rx-&gt;Init.Direction = DMA_PERIPH_TO_MEMORY;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> hdma_rx-&gt;Init.PeriphInc = DMA_PINC_DISABLE;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> hdma_rx-&gt;Init.MemInc = DMA_MINC_ENABLE;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> hdma_rx-&gt;Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> hdma_rx-&gt;Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> hdma_rx-&gt;Init.Mode = DMA_CIRCULAR;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> hdma_rx-&gt;Init.Priority = DMA_PRIORITY_LOW;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">if</span> (HAL_DMA_Init(hdma_rx) != HAL_OK)</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> <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="l00128" name="l00128"></a><span class="lineno"> 128</span> }</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> __USER_LINKDMA(huart,hdmarx,hdma_rx); </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> </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="comment">// __USER_LINKDMA is need because __HAL_LINKDMA is written for global defined hdma_rx</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// so you get error because hal uses . insted of -&gt;</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="comment"></span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment">/** </span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment"> * @brief Initialize UART &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment"> * @param huart - указатель на хендл UART для инициализации.</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment"> * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых UART,</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"> дефайнами в rs_message.h определяются используемые UART.</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> */</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="keywordtype">void</span> UART_MspInit(UART_HandleTypeDef *huart) <span class="comment">// analog for hal function</span></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><span class="comment">// __RCC_DMA_UART_CLK_ENABLE();</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment">// /* DMA1_Stream1_IRQn interrupt configuration */</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment">// HAL_NVIC_SetPriority(DMA_UART_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA_UART_IRQn);</span></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> <span class="comment">// rcc, dma and interrupt init for USARTs</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// GPIO init was moved to own functions UART_GPIO_Init </span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">if</span>(0);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="preprocessor">#ifdef USE_USART1</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART1)</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="comment">/* DMA2 clock enable */</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> __HAL_RCC_DMA2_CLK_ENABLE();</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="comment">/* DMA interrupt init */</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="comment">/* USART1 clock enable */</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> __HAL_RCC_USART1_CLK_ENABLE();</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="comment">/* USART1 interrupt Init */</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> HAL_NVIC_EnableIRQ(USART1_IRQn);</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> }</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="preprocessor">#endif </span><span class="comment">// USE_USART1</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="preprocessor">#ifdef USE_USART2</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART2)</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> <span class="comment">/* DMA1 clock enable */</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> __HAL_RCC_DMA1_CLK_ENABLE();</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="comment">/* DMA interrupt init */</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="comment">/* USART2 clock enable */</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> __HAL_RCC_USART2_CLK_ENABLE();</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="comment">/* USART2 interrupt Init */</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> HAL_NVIC_EnableIRQ(USART2_IRQn);</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> }</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="preprocessor">#endif </span><span class="comment">// USE_USART2</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="preprocessor">#ifdef USE_USART3</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART3)</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> <span class="comment">/* DMA1 clock enable */</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> __HAL_RCC_DMA1_CLK_ENABLE();</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="comment">/* DMA interrupt init */</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="comment">/* USART3 clock enable */</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> __HAL_RCC_USART3_CLK_ENABLE(); </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="comment">/* USART3 interrupt Init */</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> HAL_NVIC_EnableIRQ(USART3_IRQn);</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="preprocessor">#endif </span><span class="comment">// USE_USART3</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="preprocessor">#ifdef USE_UART4</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==UART4)</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> {</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="comment">/* DMA1 clock enable */</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> __HAL_RCC_DMA1_CLK_ENABLE();</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="comment">/* DMA interrupt init */</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 0, 0);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="comment">/* UART4 clock enable */</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> __HAL_RCC_UART4_CLK_ENABLE();</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> <span class="comment">/* UART4 interrupt Init */</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> HAL_NVIC_SetPriority(UART4_IRQn, 0, 0);</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> HAL_NVIC_EnableIRQ(UART4_IRQn);</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="preprocessor">#endif </span><span class="comment">// USE_UART4</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="preprocessor">#ifdef USE_UART5</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==UART5)</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> {</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="comment">/* DMA1 clock enable */</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> __HAL_RCC_DMA1_CLK_ENABLE();</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="comment">/* DMA interrupt init */</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 0, 0);</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> </div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">/* UART5 clock enable */</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> __HAL_RCC_DMA1_CLK_ENABLE();</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="comment">/* UART5 interrupt Init */</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> HAL_NVIC_SetPriority(UART5_IRQn, 0, 0);</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> HAL_NVIC_EnableIRQ(UART5_IRQn);</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="preprocessor">#endif </span><span class="comment">// USE_UART5</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="preprocessor">#ifdef USE_USART6</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART6)</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> <span class="comment">/* DMA2 clock enable */</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> __HAL_RCC_DMA2_CLK_ENABLE();</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="comment">/* DMA interrupt init */</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="comment">/* USART6 clock enable */</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> __HAL_RCC_USART6_CLK_ENABLE();</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> <span class="comment">/* USART6 interrupt Init */</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> HAL_NVIC_SetPriority(USART6_IRQn, 0, 0);</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> HAL_NVIC_EnableIRQ(USART6_IRQn);</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> }</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="preprocessor">#endif </span><span class="comment">// USE_USART6</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span>}</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="comment"></span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="comment">/** </span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="comment"> * @brief Deinitialize UART &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment"> * @param huart - указатель на хендл UART для деинициализации.</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment"> * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых UART,</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="comment"> дефайнами определяются используемые UART.</span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span><span class="comment"> */</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="keywordtype">void</span> UART_MspDeInit(UART_HandleTypeDef *huart) <span class="comment">// analog for hal function</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span>{ </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="comment">// rcc, dma and interrupt init for USARTs</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="comment">// GPIO init was moved to own functions UART_GPIO_Init </span></div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">if</span>(0);</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="preprocessor">#ifdef USE_USART1</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART1)</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> {</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="comment">// /* DMA2 clock enable */</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="comment">// __HAL_RCC_DMA2_CLK_ENABLE();</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="comment">// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="comment">/* USART1 clock reset */</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> __HAL_RCC_USART1_FORCE_RESET();</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> __HAL_RCC_USART1_RELEASE_RESET();</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="preprocessor">#endif </span><span class="comment">// USE_USART1</span></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span><span class="preprocessor">#ifdef USE_USART2</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART2)</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><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);</span></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="comment">/* USART2 clock reset */</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> __HAL_RCC_USART2_FORCE_RESET();</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> __HAL_RCC_USART2_RELEASE_RESET();</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="preprocessor">#endif </span><span class="comment">// USE_USART2</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="preprocessor">#ifdef USE_USART3</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART3)</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><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);</span></div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> </div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="comment">/* USART3 clock reset */</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> __HAL_RCC_USART3_FORCE_RESET();</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> __HAL_RCC_USART3_RELEASE_RESET();</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> }</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="preprocessor">#endif </span><span class="comment">// USE_USART3</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="preprocessor">#ifdef USE_UART4</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==UART4)</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> {</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);</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> <span class="comment">/* UART4 clock reset */</span></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> __HAL_RCC_UART4_FORCE_RESET();</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> __HAL_RCC_UART4_RELEASE_RESET();</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> }</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span><span class="preprocessor">#endif </span><span class="comment">// USE_UART4</span></div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="preprocessor">#ifdef USE_UART5</span></div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==UART5)</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> {</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> </div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <span class="comment">/* UART5 clock reset */</span></div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> __HAL_RCC_UART5_FORCE_RESET();</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> __HAL_RCC_UART5_RELEASE_RESET();</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="preprocessor">#endif </span><span class="comment">// USE_UART5</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span><span class="preprocessor">#ifdef USE_USART6</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(huart-&gt;Instance==USART6)</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> {</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span><span class="comment">// /* DMA2 clock enable */</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span><span class="comment">// __HAL_RCC_DMA2_CLK_ENABLE();</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span><span class="comment">// HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);</span></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="comment">/* USART6 clock reset */</span></div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> __HAL_RCC_USART6_FORCE_RESET();</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> __HAL_RCC_USART6_RELEASE_RESET();</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><span class="preprocessor">#endif </span><span class="comment">// USE_USART6</span></div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span>}</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 Check that uart init structure have correct values.</span></div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span><span class="comment"> * @param suart - указатель на структуру с настройками UART.</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"> */</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span>HAL_StatusTypeDef Check_UART_Init_Struct(<a class="code hl_struct" href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a> *suart)</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span>{</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="comment">// check is settings are valid</span></div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="keywordflow">if</span> (!IS_UART_INSTANCE(suart-&gt;huart.Instance))</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> </div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keywordflow">if</span> (!IS_UART_BAUDRATE(suart-&gt;huart.Init.BaudRate) || (suart-&gt;huart.Init.BaudRate == NULL))</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keywordflow">return</span> HAL_ERROR;</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">if</span> (!IS_GPIO_ALL_INSTANCE(suart-&gt;GPIOx))</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> </div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="keywordflow">if</span> (!IS_GPIO_PIN(suart-&gt;GPIO_PIN_RX) &amp;&amp; !IS_GPIO_PIN(suart-&gt;GPIO_PIN_TX)) <span class="comment">// if both pins arent set up</span></div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> </div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span>}</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> </div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span><span class="comment">//------------------------UART INIT FUNCTIONS------------------------</span></div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</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_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="astruct_u_a_r_t___settings_type_def_html"><div class="ttname"><a href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="____general__uart_8h_source.html#l00045">__general_uart.h:46</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_9e11e9a41112194af3eee6cc728f9515.html">MyLibsGeneral</a></li><li class="navelem"><a class="el" href="dir_9c80311a018e1f8cfb6659b73d634be4.html">Src</a></li><li class="navelem"><b>__general_uart.c</b></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.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,233 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_uart.h 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="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">MyLibs<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Расширенные библиотеки для STM32</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('____general__uart_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">__general_uart.h</div></div>
</div><!--header-->
<div class="contents">
<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_uart.h</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Заголовочный файл для модуля инициализации UART.</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="preprocessor">#ifndef __UART_GENERAL_H_</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#define __UART_GENERAL_H_</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">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"></span><span class="preprocessor">#define HAL_UART_MODULE_ENABLED </span><span class="comment">// need to uncomment these defines in stm32f4xx_hal_conf.h</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">//#define HAL_USART_MODULE_ENABLED // maybe also need to add hal_uart.h/.c (source code)</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">//#define USE_USART1</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">//#define USE_USART2</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">//#define USE_USART3</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//#define USE_UART4</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">//#define USE_UART5</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">//#define USE_USART6</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">/* note: used uart defines in modbus.h */</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"></span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"></span><span class="preprocessor">#include &quot;interface_config.h&quot;</span> <span class="comment">/* used uart defines in modbus.h */</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</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">////////////////////////////---DEFINES---////////////////////////////</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"></span><span class="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</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"> * @brief Analog for HAL define. Remade with pointer to structure.</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment"> * @note @ref __HAL_LINKDMA.</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment"> */</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">do{ \</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">(__HANDLE__)-&gt;__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">(__DMA_HANDLE__)-&gt;Parent = (__HANDLE__);} while(0U)</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="comment"></span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">////////////////////////////---DEFINES---////////////////////////////</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment"></span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"></span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="foldopen" id="foldopen00045" data-start="{" data-end="};">
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="struct_u_a_r_t___settings_type_def.html"> 45</a></span><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span><span class="comment">// struct with settings for custom function</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>{</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> UART_HandleTypeDef huart;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> GPIO_TypeDef *GPIOx;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> uint16_t GPIO_PIN_RX;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> uint16_t GPIO_PIN_TX;</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> DMA_Stream_TypeDef *DMAChannel; <span class="comment">// DMAChannel = 0 if doesnt need</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> uint32_t DMA_CHANNEL_X; <span class="comment">// DMAChannel = 0 if doesnt need</span></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> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span>}<a class="code hl_struct" href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a>;<span class="comment"></span></div>
</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"></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><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"></span><span class="comment">/** </span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> * @brief Initialize UART with UART_SettingsTypeDef structure.</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> * @param suart - указатель на структуру с настройками UART.</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> * @note Данная структура содержит хендл ЮАРТ и настройки перефирии (GPIO)</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> */</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>HAL_StatusTypeDef UART_Base_Init(<a class="code hl_struct" href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a> *suart);<span class="comment"></span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment">/** </span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @brief Initialize GPIO for UART.</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> * @param GPIOx - порт для настройки.</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> * @param GPIO_PIN_RX - пин для настройки на прием.</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> * @param GPIO_PIN_TX - пин для настройки на передачу.</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> */</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="keywordtype">void</span> UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX);<span class="comment"></span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment">/** </span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> * @brief Initialize DMA for UART.</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> * @param huart - указатель на хендл UART для настройки DMA.</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> * @param hdma_rx - указатель на хендл DMA для линии приема UART.</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> * @param DMAChannel - указатель на канал DMA/поток DMA в STM32F407.</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"> * @param DMA_CHANNEL_X - канал DMA.</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"> */</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="keywordtype">void</span> UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);<span class="comment"></span></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"> * @brief Initialize UART &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> * @param huart - указатель на хендл UART для инициализации.</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых UART,</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"> дефайнами определяются используемые UART.</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> */</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="keywordtype">void</span> UART_MspInit(UART_HandleTypeDef *huart);<span class="comment"></span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment">/** </span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> * @brief Deinitialize UART &amp; DMA clock and interrupt.</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> * @param huart - указатель на хендл UART для деинициализации.</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"> * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых UART,</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> дефайнами в rs_message.h определяются используемые UART.</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> */</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="keywordtype">void</span> UART_MspDeInit(UART_HandleTypeDef *huart);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"></span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment">/** </span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * @brief Check that uart init structure have correct values.</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> * @param suart - указатель на структуру с настройками UART.</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> */</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>HAL_StatusTypeDef Check_UART_Init_Struct(<a class="code hl_struct" href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a> *suart);<span class="comment"></span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"></span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor">#endif </span><span class="comment">// __UART_GENERAL_H_</span></div>
<div class="ttc" id="amylibs__defs_8h_html"><div class="ttname"><a href="mylibs__defs_8h.html">mylibs_defs.h</a></div><div class="ttdoc">Заголочный файл для дефайнов библиотеки MyLibsGeneral.</div></div>
<div class="ttc" id="astruct_u_a_r_t___settings_type_def_html"><div class="ttname"><a href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="#l00045">__general_uart.h:46</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_9e11e9a41112194af3eee6cc728f9515.html">MyLibsGeneral</a></li><li class="navelem"><a class="el" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><b>__general_uart.h</b></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.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,165 +0,0 @@
<!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: SPI_Usage_Example</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('_s_p_i__usage__example-example.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">SPI_Usage_Example</div></div>
</div><!--header-->
<div class="contents">
<p>Пример использования SPI_Base_Init.</p>
<p>Пример использования SPI_Base_Init. Инициализация SPI1 с базовыми настройками: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="general__spi_8h.html">general_spi.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><a id="_a0" name="_a0"></a><a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> mySPI;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> SPI1_Init(<span class="keywordtype">void</span>)</div>
<div class="line">{</div>
<div class="line"> <span class="comment">// Настройка SPI1</span></div>
<div class="line"> mySPI.<a id="a1" name="a1"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Instance = SPI1;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.Mode = SPI_MODE_MASTER;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.Direction = SPI_DIRECTION_2LINES;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.DataSize = SPI_DATASIZE_8BIT;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.CLKPolarity = SPI_POLARITY_LOW;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.CLKPhase = SPI_PHASE_1EDGE;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.NSS = SPI_NSS_SOFT;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.FirstBit = SPI_FIRSTBIT_MSB;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.TIMode = SPI_TIMODE_DISABLE;</div>
<div class="line"> mySPI.<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Настройка GPIO для SPI</span></div>
<div class="line"> mySPI.<a id="a2" name="a2"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">CLK_GPIOx</a> = GPIOA;</div>
<div class="line"> mySPI.<a id="a3" name="a3"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">CLK_PIN</a> = GPIO_PIN_5;</div>
<div class="line"> mySPI.<a id="a4" name="a4"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">CLK_GPIO_AlternageFunc</a> = GPIO_AF5_SPI1;</div>
<div class="line"> </div>
<div class="line"> mySPI.<a id="a5" name="a5"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">MISO_GPIOx</a> = GPIOA;</div>
<div class="line"> mySPI.<a id="a6" name="a6"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">MISO_PIN</a> = GPIO_PIN_6;</div>
<div class="line"> mySPI.<a id="a7" name="a7"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">MISO_GPIO_AlternageFunc</a> = GPIO_AF5_SPI1;</div>
<div class="line"> </div>
<div class="line"> mySPI.<a id="a8" name="a8"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">MOSI_GPIOx</a> = GPIOA;</div>
<div class="line"> mySPI.<a id="a9" name="a9"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">MOSI_PIN</a> = GPIO_PIN_7;</div>
<div class="line"> mySPI.<a id="a10" name="a10"></a><a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">MOSI_GPIO_AlternageFunc</a> = GPIO_AF5_SPI1;</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Инициализация SPI</span></div>
<div class="line"> <span class="keywordflow">if</span>(<a id="a11" name="a11"></a><a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a>(&amp;mySPI) != HAL_OK)</div>
<div class="line"> {</div>
<div class="line"> <span class="comment">// Обработка ошибки</span></div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="ttc" id="ageneral__spi_8h_html"><div class="ttname"><a href="general__spi_8h.html">general_spi.h</a></div><div class="ttdoc">Заголовочный файл для модуля инициализации SPI.</div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_ga0e177e3c57a8fcdc73b5602e72ec66ba"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a></div><div class="ttdeci">HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)</div><div class="ttdoc">Инициализация SPI с помощью структуры SPI_SettingsTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8c_source.html#l00023">general_spi.c:23</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></div><div class="ttdoc">Структура настроек SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00106">general_spi.h:107</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a0af3bdb273818ff97eb4ff3cff918820"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">SPI_SettingsTypeDef::MOSI_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * MOSI_GPIOx</div><div class="ttdoc">Порт MOSI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00118">general_spi.h:118</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a0d55a2941854f61934487f3d209cfa95"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">SPI_SettingsTypeDef::MISO_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * MISO_GPIOx</div><div class="ttdoc">Порт MISO.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00114">general_spi.h:114</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3366c654d7ec6dd41c6a0b504dc8509a"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">SPI_SettingsTypeDef::MISO_PIN</a></div><div class="ttdeci">uint32_t MISO_PIN</div><div class="ttdoc">Пин MISO.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00115">general_spi.h:115</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3bcb1ed12da3544e02e6d36493669bdc"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">SPI_SettingsTypeDef::CLK_PIN</a></div><div class="ttdeci">uint32_t CLK_PIN</div><div class="ttdoc">Пин CLK.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00111">general_spi.h:111</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3f3748103a0b7861f6700042fd691ba1"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">SPI_SettingsTypeDef::CLK_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t CLK_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для CLK.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00112">general_spi.h:112</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a6a15d48eccf92959de3a086031fdc979"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">SPI_SettingsTypeDef::CLK_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * CLK_GPIOx</div><div class="ttdoc">Порт CLK.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00110">general_spi.h:110</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a961208869faf4a7369aaf4edde75f176"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">SPI_SettingsTypeDef::MOSI_PIN</a></div><div class="ttdeci">uint32_t MOSI_PIN</div><div class="ttdoc">Пин MOSI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00119">general_spi.h:119</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_ad203d8b8d67e4f477d002d15b03ba422"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">SPI_SettingsTypeDef::hspi</a></div><div class="ttdeci">SPI_HandleTypeDef hspi</div><div class="ttdoc">HAL handle SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00108">general_spi.h:108</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_aecd7a5c6e205335b8ed229d74cd35d14"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">SPI_SettingsTypeDef::MISO_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t MISO_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для MISO.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00116">general_spi.h:116</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_afbe75a1c36650a4a9b41fa706a4c7eab"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">SPI_SettingsTypeDef::MOSI_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t MOSI_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для MOSI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00120">general_spi.h:120</a></div></div>
</div><!-- fragment --><div class="fragment"></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="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>

View File

@ -1,130 +0,0 @@
<!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: Class List</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('annotated.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">Class List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_evolve_optimizer__t.html" target="_self">EvolveOptimizer_t</a></td><td class="desc">Структура эволюционного оптимизатора </td></tr>
<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_g_p_i_o___l_e_d_type_def.html" target="_self">GPIO_LEDTypeDef</a></td><td class="desc">Структура светодиода </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_g_p_i_o___switch_type_def.html" target="_self">GPIO_SwitchTypeDef</a></td><td class="desc">Структура кнопки </td></tr>
<tr id="row_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_h_f___stack_frame__t.html" target="_self">HF_StackFrame_t</a></td><td class="desc">Контекст стек-фрейма процессора при HardFault </td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_r_t_t___flash_header__t.html" target="_self">RTT_FlashHeader_t</a></td><td class="desc">Структура RTT, которая будет положена в Flash </td></tr>
<tr id="row_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_s_p_i___settings_type_def.html" target="_self">SPI_SettingsTypeDef</a></td><td class="desc">Структура настроек SPI </td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_t_i_m___encoder_type_def.html" target="_self">TIM_EncoderTypeDef</a></td><td class="desc">Структура инициализации енкодера </td></tr>
<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_t_i_m___settings_type_def.html" target="_self">TIM_SettingsTypeDef</a></td><td class="desc">Структура инициализации таймера </td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_u_a_r_t___settings_type_def.html" target="_self">UART_SettingsTypeDef</a></td><td class="desc">Структура настроек UART </td></tr>
<tr id="row_9_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint16___bit_type_def.html" target="_self">uint16_BitTypeDef</a></td><td class="desc"></td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint32___bit_type_def.html" target="_self">uint32_BitTypeDef</a></td><td class="desc"></td></tr>
<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint64___bit_type_def.html" target="_self">uint64_BitTypeDef</a></td><td class="desc"></td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint8___bit_type_def.html" target="_self">uint8_BitTypeDef</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,16 +0,0 @@
var annotated_dup =
[
[ "EvolveOptimizer_t", "struct_evolve_optimizer__t.html", "struct_evolve_optimizer__t" ],
[ "GPIO_LEDTypeDef", "struct_g_p_i_o___l_e_d_type_def.html", "struct_g_p_i_o___l_e_d_type_def" ],
[ "GPIO_SwitchTypeDef", "struct_g_p_i_o___switch_type_def.html", "struct_g_p_i_o___switch_type_def" ],
[ "HF_StackFrame_t", "struct_h_f___stack_frame__t.html", "struct_h_f___stack_frame__t" ],
[ "RTT_FlashHeader_t", "struct_r_t_t___flash_header__t.html", "struct_r_t_t___flash_header__t" ],
[ "SPI_SettingsTypeDef", "struct_s_p_i___settings_type_def.html", "struct_s_p_i___settings_type_def" ],
[ "TIM_EncoderTypeDef", "struct_t_i_m___encoder_type_def.html", "struct_t_i_m___encoder_type_def" ],
[ "TIM_SettingsTypeDef", "struct_t_i_m___settings_type_def.html", "struct_t_i_m___settings_type_def" ],
[ "UART_SettingsTypeDef", "struct_u_a_r_t___settings_type_def.html", "struct_u_a_r_t___settings_type_def" ],
[ "uint16_BitTypeDef", "unionuint16___bit_type_def.html", null ],
[ "uint32_BitTypeDef", "unionuint32___bit_type_def.html", null ],
[ "uint64_BitTypeDef", "unionuint64___bit_type_def.html", null ],
[ "uint8_BitTypeDef", "unionuint8___bit_type_def.html", null ]
];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 635 B

View File

@ -1,176 +0,0 @@
<!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/Inc/bit_access.h File Reference</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('bit__access_8h.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">bit_access.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Заголочный файл для дефайнов битового доступа.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>&quot;</code><br />
</div><div class="textblock"><div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Include dependency graph for bit_access.h:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="bit__access_8h__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2bit__access_8h" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2bit__access_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2bit__access_8h">
<area shape="rect" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,204,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,112,156,139"/>
<area shape="poly" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,187,161,213"/>
<area shape="poly" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" title=" " alt="" coords="46,261,163,288"/>
<area shape="poly" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
</map>
</div>
</div><div class="textblock"><div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>This graph shows which files directly or indirectly include this file:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="bit__access_8h__dep__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2bit__access_8hdep" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2bit__access_8hdep" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2bit__access_8hdep">
<area shape="rect" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,204,64"/>
<area shape="rect" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,204,171"/>
<area shape="poly" title=" " alt="" coords="107,80,107,112,102,112,102,80"/>
</map>
</div>
</div>
<p><a href="bit__access_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:uint8_5FBitTypeDef" id="r_uint8_5FBitTypeDef"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionuint8___bit_type_def.html">uint8_BitTypeDef</a></td></tr>
<tr class="memitem:uint16_5FBitTypeDef" id="r_uint16_5FBitTypeDef"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionuint16___bit_type_def.html">uint16_BitTypeDef</a></td></tr>
<tr class="memitem:uint32_5FBitTypeDef" id="r_uint32_5FBitTypeDef"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionuint32___bit_type_def.html">uint32_BitTypeDef</a></td></tr>
<tr class="memitem:uint64_5FBitTypeDef" id="r_uint64_5FBitTypeDef"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionuint64___bit_type_def.html">uint64_BitTypeDef</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-define-members" class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga57dc3bb3472a66fc92312f89d42d2396" id="r_ga57dc3bb3472a66fc92312f89d42d2396"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396">uint8_bit</a>(_uint8_, _bit_)</td></tr>
<tr class="memdesc:ga57dc3bb3472a66fc92312f89d42d2396"><td class="mdescLeft">&#160;</td><td class="mdescRight">Получить n-й бит из uint8_t. <br /></td></tr>
<tr class="memitem:ga6a122b536ad99ae611c8cf01437af086" id="r_ga6a122b536ad99ae611c8cf01437af086"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086">uint16_bit</a>(_uint8_, _bit_)</td></tr>
<tr class="memdesc:ga6a122b536ad99ae611c8cf01437af086"><td class="mdescLeft">&#160;</td><td class="mdescRight">Получить n-й бит из uint16_t. <br /></td></tr>
<tr class="memitem:gafaa2080168b1b6f7281e8bfabab022d1" id="r_gafaa2080168b1b6f7281e8bfabab022d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1">uint32_bit</a>(_uint8_, _bit_)</td></tr>
<tr class="memdesc:gafaa2080168b1b6f7281e8bfabab022d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Получить n-й бит из uint32_t. <br /></td></tr>
<tr class="memitem:ga47eb69ce9330a1c73fe8031240f02f0a" id="r_ga47eb69ce9330a1c73fe8031240f02f0a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a">uint64_bit</a>(_uint8_, _bit_)</td></tr>
<tr class="memdesc:ga47eb69ce9330a1c73fe8031240f02f0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Получить n-й бит из uint64_t. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Заголочный файл для дефайнов битового доступа. </p>
<p class="definition">Definition in file <a class="el" href="bit__access_8h_source.html">bit_access.h</a>.</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="bit__access_8h.html">bit_access.h</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>

View File

@ -1,7 +0,0 @@
var bit__access_8h =
[
[ "uint8_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396", null ],
[ "uint16_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086", null ],
[ "uint32_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1", null ],
[ "uint64_bit", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a", null ]
];

View File

@ -1,5 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h">
<area shape="rect" id="Node000001" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,204,64"/>
<area shape="rect" id="Node000002" href="$mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,204,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="107,80,107,112,102,112,102,80"/>
</map>

View File

@ -1 +0,0 @@
9d0f52ae67584f7f09caa88b8c7ab4e9

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,9 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h">
<area shape="rect" id="Node000001" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,204,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,112,156,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" id="Node000003" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,187,161,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="46,261,163,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
</map>

View File

@ -1 +0,0 @@
4b8c2556090cdbb9271b9fbe97d7cf5b

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,286 +0,0 @@
<!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/Inc/bit_access.h 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('bit__access_8h_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">bit_access.h</div></div>
</div><!--header-->
<div class="contents">
<a href="bit__access_8h.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 bit_access.h</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">* @defgroup BIT_ACCESS_DEFINES Bit access defines</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @ingroup MYLIBS_DEFINES</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @brief Макросы и typedef&#39;ы для работы с битами в unsigned типах.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* @details</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">- @ref uint8_bit</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">- @ref uint16_bit</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">- @ref uint32_bit</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">- @ref uint64_bit</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">Особенности использования:</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">- Индекс бита должен быть **константой на этапе компиляции**.</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"> @code</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> uint8_t val = 0x05;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> uint8_t b2 = uint8_bit(val, 2); // Получить бит 2</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> uint8_bit(val, 6) = 1; // Записать бит 6</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> @endcode</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"> @code</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> uint8_t i = 2;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> uint8_bit(val, i); // Не сработает!</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> @endcode</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">- Макросы возвращают 0 или 1.</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">- Доступ реализован через приведение к `union` с битовыми полями, поэтому это</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment"> безопасный способ работы с отдельными битами без ручного сдвига и маскирования.</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="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#ifndef __BIT_ACCESS_H_</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#define __BIT_ACCESS_H_</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="foldopen" id="foldopen00039" data-start="{" data-end="};">
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="unionuint8___bit_type_def.html"> 39</a></span><span class="keyword">typedef</span> <span class="keyword">union</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> uint8_t all;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">struct</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="keywordtype">unsigned</span> bit0:1;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">unsigned</span> bit1:1;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">unsigned</span> bit2:1;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">unsigned</span> bit3:1;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">unsigned</span> bit4:1;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">unsigned</span> bit5:1;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">unsigned</span> bit6:1;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">unsigned</span> bit7:1;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> }bit;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span>}<a class="code hl_union" href="unionuint8___bit_type_def.html">uint8_BitTypeDef</a>;</div>
</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="foldopen" id="foldopen00055" data-start="{" data-end="};">
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="unionuint16___bit_type_def.html"> 55</a></span><span class="keyword">typedef</span> <span class="keyword">union</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span>{</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> uint16_t all;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">struct</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordtype">unsigned</span> bit0:1;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordtype">unsigned</span> bit1:1;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">unsigned</span> bit2:1;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">unsigned</span> bit3:1;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">unsigned</span> bit4:1;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordtype">unsigned</span> bit5:1;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">unsigned</span> bit6:1;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordtype">unsigned</span> bit7:1;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordtype">unsigned</span> bit8:1;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">unsigned</span> bit9:1;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">unsigned</span> bit10:1;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">unsigned</span> bit11:1;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordtype">unsigned</span> bit12:1;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordtype">unsigned</span> bit13:1;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">unsigned</span> bit14:1;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">unsigned</span> bit15:1;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }bit;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span>}<a class="code hl_union" href="unionuint16___bit_type_def.html">uint16_BitTypeDef</a>;</div>
</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="foldopen" id="foldopen00080" data-start="{" data-end="};">
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="unionuint32___bit_type_def.html"> 80</a></span><span class="keyword">typedef</span> <span class="keyword">union</span></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> uint32_t all;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">struct</span></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="keywordtype">unsigned</span> bit0:1; <span class="keywordtype">unsigned</span> bit1:1; <span class="keywordtype">unsigned</span> bit2:1; <span class="keywordtype">unsigned</span> bit3:1;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">unsigned</span> bit4:1; <span class="keywordtype">unsigned</span> bit5:1; <span class="keywordtype">unsigned</span> bit6:1; <span class="keywordtype">unsigned</span> bit7:1;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">unsigned</span> bit8:1; <span class="keywordtype">unsigned</span> bit9:1; <span class="keywordtype">unsigned</span> bit10:1; <span class="keywordtype">unsigned</span> bit11:1;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">unsigned</span> bit12:1; <span class="keywordtype">unsigned</span> bit13:1; <span class="keywordtype">unsigned</span> bit14:1; <span class="keywordtype">unsigned</span> bit15:1;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">unsigned</span> bit16:1; <span class="keywordtype">unsigned</span> bit17:1; <span class="keywordtype">unsigned</span> bit18:1; <span class="keywordtype">unsigned</span> bit19:1;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordtype">unsigned</span> bit20:1; <span class="keywordtype">unsigned</span> bit21:1; <span class="keywordtype">unsigned</span> bit22:1; <span class="keywordtype">unsigned</span> bit23:1;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordtype">unsigned</span> bit24:1; <span class="keywordtype">unsigned</span> bit25:1; <span class="keywordtype">unsigned</span> bit26:1; <span class="keywordtype">unsigned</span> bit27:1;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">unsigned</span> bit28:1; <span class="keywordtype">unsigned</span> bit29:1; <span class="keywordtype">unsigned</span> bit30:1; <span class="keywordtype">unsigned</span> bit31:1;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }bit;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span>}<a class="code hl_union" href="unionuint32___bit_type_def.html">uint32_BitTypeDef</a>;</div>
</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> </div>
<div class="foldopen" id="foldopen00097" data-start="{" data-end="};">
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="unionuint64___bit_type_def.html"> 97</a></span><span class="keyword">typedef</span> <span class="keyword">union</span></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> uint64_t all;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">struct</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> {</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">unsigned</span> bit0:1; <span class="keywordtype">unsigned</span> bit1:1; <span class="keywordtype">unsigned</span> bit2:1; <span class="keywordtype">unsigned</span> bit3:1;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">unsigned</span> bit4:1; <span class="keywordtype">unsigned</span> bit5:1; <span class="keywordtype">unsigned</span> bit6:1; <span class="keywordtype">unsigned</span> bit7:1;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">unsigned</span> bit8:1; <span class="keywordtype">unsigned</span> bit9:1; <span class="keywordtype">unsigned</span> bit10:1; <span class="keywordtype">unsigned</span> bit11:1;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">unsigned</span> bit12:1; <span class="keywordtype">unsigned</span> bit13:1; <span class="keywordtype">unsigned</span> bit14:1; <span class="keywordtype">unsigned</span> bit15:1;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">unsigned</span> bit16:1; <span class="keywordtype">unsigned</span> bit17:1; <span class="keywordtype">unsigned</span> bit18:1; <span class="keywordtype">unsigned</span> bit19:1;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordtype">unsigned</span> bit20:1; <span class="keywordtype">unsigned</span> bit21:1; <span class="keywordtype">unsigned</span> bit22:1; <span class="keywordtype">unsigned</span> bit23:1;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">unsigned</span> bit24:1; <span class="keywordtype">unsigned</span> bit25:1; <span class="keywordtype">unsigned</span> bit26:1; <span class="keywordtype">unsigned</span> bit27:1;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">unsigned</span> bit28:1; <span class="keywordtype">unsigned</span> bit29:1; <span class="keywordtype">unsigned</span> bit30:1; <span class="keywordtype">unsigned</span> bit31:1;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">unsigned</span> bit32:1; <span class="keywordtype">unsigned</span> bit33:1; <span class="keywordtype">unsigned</span> bit34:1; <span class="keywordtype">unsigned</span> bit35:1;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">unsigned</span> bit36:1; <span class="keywordtype">unsigned</span> bit37:1; <span class="keywordtype">unsigned</span> bit38:1; <span class="keywordtype">unsigned</span> bit39:1;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordtype">unsigned</span> bit40:1; <span class="keywordtype">unsigned</span> bit41:1; <span class="keywordtype">unsigned</span> bit42:1; <span class="keywordtype">unsigned</span> bit43:1;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">unsigned</span> bit44:1; <span class="keywordtype">unsigned</span> bit45:1; <span class="keywordtype">unsigned</span> bit46:1; <span class="keywordtype">unsigned</span> bit47:1;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">unsigned</span> bit48:1; <span class="keywordtype">unsigned</span> bit49:1; <span class="keywordtype">unsigned</span> bit50:1; <span class="keywordtype">unsigned</span> bit51:1;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">unsigned</span> bit52:1; <span class="keywordtype">unsigned</span> bit53:1; <span class="keywordtype">unsigned</span> bit54:1; <span class="keywordtype">unsigned</span> bit55:1;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">unsigned</span> bit56:1; <span class="keywordtype">unsigned</span> bit57:1; <span class="keywordtype">unsigned</span> bit58:1; <span class="keywordtype">unsigned</span> bit59:1;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">unsigned</span> bit60:1; <span class="keywordtype">unsigned</span> bit61:1; <span class="keywordtype">unsigned</span> bit62:1; <span class="keywordtype">unsigned</span> bit63:1;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }bit;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>}<a class="code hl_union" href="unionuint64___bit_type_def.html">uint64_BitTypeDef</a>;</div>
</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"></span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment">/**</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"> * @brief Получить n-й бит из uint8_t</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> * @param _uint8_ Переменная типа uint8_t</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> * @param _bit_ Константный номер бита (0..7)</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> * @return Значение выбранного бита (0 или 1)</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"> * @note Индекс бита должен быть известен на этапе компиляции!</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> */</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396"> 129</a></span><span class="preprocessor">#define uint8_bit(_uint8_, _bit_) (*(uint8_BitTypeDef *)(&amp;(_uint8_))).bit.bit##_bit_</span><span class="comment"></span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">/**</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> * @brief Получить n-й бит из uint16_t</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> * @param _uint16_ Переменная типа uint16_t</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment"> * @param _bit_ Константный номер бита (0..15)</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"> * @return Значение выбранного бита (0 или 1)</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"> * @note Индекс бита должен быть известен на этапе компиляции!</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086"> 137</a></span><span class="preprocessor">#define uint16_bit(_uint8_, _bit_) (*(uint16_BitTypeDef *)(&amp;(_uint8_))).bit.bit##_bit_</span><span class="comment"></span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment">/**</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment"> * @brief Получить n-й бит из uint32_t</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment"> * @param _uint32_ Переменная типа uint32_t</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"> * @param _bit_ Константный номер бита (0..31)</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> * @return Значение выбранного бита (0 или 1)</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * @note Индекс бита должен быть известен на этапе компиляции!</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1"> 145</a></span><span class="preprocessor">#define uint32_bit(_uint8_, _bit_) (*(uint32_BitTypeDef *)(&amp;(_uint8_))).bit.bit##_bit_</span><span class="comment"></span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment">/**</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> * @brief Получить n-й бит из uint64_t</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> * @param _uint64_ Переменная типа uint64_t</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment"> * @param _bit_ Константный номер бита (0..63)</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="comment"> * @return Значение выбранного бита (0 или 1)</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> * @note Индекс бита должен быть известен на этапе компиляции!</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"><a class="line" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a"> 153</a></span><span class="preprocessor">#define uint64_bit(_uint8_, _bit_) (*(uint64_BitTypeDef *)(&amp;(_uint8_))).bit.bit##_bit_</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="preprocessor">#endif </span><span class="comment">//__BIT_ACCESS_H_ </span></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">/** BIT_ACCESS_DEFINES</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"> */</span></div>
<div class="ttc" id="amylibs__defs_8h_html"><div class="ttname"><a href="mylibs__defs_8h.html">mylibs_defs.h</a></div><div class="ttdoc">Заголочный файл для дефайнов библиотеки MyLibsGeneral.</div></div>
<div class="ttc" id="aunionuint16___bit_type_def_html"><div class="ttname"><a href="unionuint16___bit_type_def.html">uint16_BitTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="#l00055">bit_access.h:56</a></div></div>
<div class="ttc" id="aunionuint32___bit_type_def_html"><div class="ttname"><a href="unionuint32___bit_type_def.html">uint32_BitTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="#l00080">bit_access.h:81</a></div></div>
<div class="ttc" id="aunionuint64___bit_type_def_html"><div class="ttname"><a href="unionuint64___bit_type_def.html">uint64_BitTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="#l00097">bit_access.h:98</a></div></div>
<div class="ttc" id="aunionuint8___bit_type_def_html"><div class="ttname"><a href="unionuint8___bit_type_def.html">uint8_BitTypeDef</a></div><div class="ttdef"><b>Definition</b> <a href="#l00039">bit_access.h:40</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="bit__access_8h.html">bit_access.h</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>

View File

@ -1,137 +0,0 @@
<!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: Class Index</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('classes.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">Class Index</div></div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_E" name="letter_E">E</a></dt>
<dd><a class="el" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_G" name="letter_G">G</a></dt>
<dd><a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a></dd><dd><a class="el" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_H" name="letter_H">H</a></dt>
<dd><a class="el" href="struct_h_f___stack_frame__t.html">HF_StackFrame_t</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_R" name="letter_R">R</a></dt>
<dd><a class="el" href="struct_r_t_t___flash_header__t.html">RTT_FlashHeader_t</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
<dd><a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
<dd><a class="el" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a></dd><dd><a class="el" href="struct_t_i_m___settings_type_def.html">TIM_SettingsTypeDef</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_U" name="letter_U">U</a></dt>
<dd><a class="el" href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a></dd><dd><a class="el" href="unionuint16___bit_type_def.html">uint16_BitTypeDef</a></dd><dd><a class="el" href="unionuint32___bit_type_def.html">uint32_BitTypeDef</a></dd><dd><a class="el" href="unionuint64___bit_type_def.html">uint64_BitTypeDef</a></dd><dd><a class="el" href="unionuint8___bit_type_def.html">uint8_BitTypeDef</a></dd></dl>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,61 +0,0 @@
/**
The code below is based on the Doxygen Awesome project, see
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2022 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
let clipboard_title = "Copy to clipboard"
let clipboard_icon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#888" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
let clipboard_successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
let clipboard_successDuration = 1000
$(function() {
if(navigator.clipboard) {
const fragments = document.getElementsByClassName("fragment")
for(const fragment of fragments) {
const clipboard_div = document.createElement("div")
clipboard_div.classList.add("clipboard")
clipboard_div.innerHTML = clipboard_icon
clipboard_div.title = clipboard_title
$(clipboard_div).click(function() {
const content = this.parentNode.cloneNode(true)
// filter out line number and folded fragments from file listings
content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() })
let text = content.textContent
// remove trailing newlines and trailing spaces from empty lines
text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'')
navigator.clipboard.writeText(text);
this.classList.add("success")
this.innerHTML = clipboard_successIcon
window.setTimeout(() => { // switch back to normal icon after timeout
this.classList.remove("success")
this.innerHTML = clipboard_icon
}, clipboard_successDuration);
})
fragment.insertBefore(clipboard_div, fragment.firstChild)
}
}
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

View File

@ -1,58 +0,0 @@
/*!
Cookie helper functions
Copyright (c) 2023 Dimitri van Heesch
Released under MIT license.
*/
let Cookie = {
cookie_namespace: 'doxygen_',
readSetting(cookie,defVal) {
if (window.chrome) {
const val = localStorage.getItem(this.cookie_namespace+cookie) ||
sessionStorage.getItem(this.cookie_namespace+cookie);
if (val) return val;
} else {
let myCookie = this.cookie_namespace+cookie+"=";
if (document.cookie) {
const index = document.cookie.indexOf(myCookie);
if (index != -1) {
const valStart = index + myCookie.length;
let valEnd = document.cookie.indexOf(";", valStart);
if (valEnd == -1) {
valEnd = document.cookie.length;
}
return document.cookie.substring(valStart, valEnd);
}
}
}
return defVal;
},
writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
if (window.chrome) {
if (days==0) {
sessionStorage.setItem(this.cookie_namespace+cookie,val);
} else {
localStorage.setItem(this.cookie_namespace+cookie,val);
}
} else {
let date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
document.cookie = this.cookie_namespace + cookie + "=" +
val + "; SameSite=Lax;" + expiration + "path=/";
}
},
eraseSetting(cookie) {
if (window.chrome) {
if (localStorage.getItem(this.cookie_namespace+cookie)) {
localStorage.removeItem(this.cookie_namespace+cookie);
} else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
sessionStorage.removeItem(this.cookie_namespace+cookie);
}
} else {
this.writeSetting(cookie,'',-1);
}
},
}

View File

@ -1,228 +0,0 @@
/**
The code below is based on the Doxygen Awesome project with some minor modifications
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2022 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
class DarkModeToggle extends HTMLElement {
static darkmode_cookie_name = ''+'prefers-dark';
static lightmode_cookie_name = ''+'prefers-light';
static icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="1em" width="1em"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"></path><rect width="1" height="3" x="12" fill="currentColor" rx=".5"></rect><rect width="1" height="3" x="12" y="21" fill="currentColor" rx=".5"></rect><rect width="1" height="3" x="22" y="10.5" fill="currentColor" rx=".5" transform="rotate(90 22.5 12)"></rect><rect width="1" height="3" x="1" y="10.5" fill="currentColor" rx=".5" transform="rotate(90 1.5 12)"></rect><rect width="1" height="3" x="19" y="3" fill="currentColor" rx=".5" transform="rotate(-135 19.5 4.5)"></rect><rect width="1" height="3" x="19" y="18" fill="currentColor" rx=".5" transform="rotate(135 19.5 19.5)"></rect><rect width="1" height="3" x="4" y="3" fill="currentColor" rx=".5" transform="scale(1 -1) rotate(45 15.37 0)"></rect><rect width="1" height="3" x="4" y="18" fill="currentColor" rx=".5" transform="scale(1 -1) rotate(-45 -42.57 0)"></rect><circle cx="12" cy="12" r="6.5" stroke="currentColor"></circle><path fill="currentColor" stroke="currentColor" d="M12.5 18.48V5.52a6.5 6.5 0 010 12.96z"></path></g></svg>';
static title = "Toggle Light/Dark Mode"
static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode"
static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode"
static _staticConstructor = function() {
DarkModeToggle.enableDarkMode(DarkModeToggle.userPreference)
// Update the color scheme when the browsers preference changes
// without user interaction on the website.
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
DarkModeToggle.onSystemPreferenceChanged()
})
// Update the color scheme when the tab is made visible again.
// It is possible that the appearance was changed in another tab
// while this tab was in the background.
document.addEventListener("visibilitychange", visibilityState => {
if (document.visibilityState === 'visible') {
DarkModeToggle.onSystemPreferenceChanged()
}
});
}()
static init() {
$(function() {
$(document).ready(function() {
const toggleButton = document.createElement('dark-mode-toggle')
toggleButton.title = DarkModeToggle.title
toggleButton.innerHTML = DarkModeToggle.icon
toggleButton.tabIndex = 0;
function addButton() {
const titleArea = document.getElementById("titlearea");
const searchBox = document.getElementById("MSearchBox");
const mainMenu = document.getElementById("main-menu");
const navRow1 = document.getElementById("navrow1");
let mainMenuVisible = false;
if (mainMenu) {
const menuStyle = window.getComputedStyle(mainMenu);
mainMenuVisible = menuStyle.display!=='none'
}
const searchBoxPos1 = document.getElementById("searchBoxPos1");
const buttonLi = document.getElementById('toggle-dark-mode');
if (buttonLi) {
buttonLi.parentNode.removeChild(buttonLi);
}
if (searchBox) { // (1) search box visible
searchBox.parentNode.appendChild(toggleButton)
} else if (navRow1) { // (2) no search box, static menu bar
const li = document.createElement('li');
li.id = 'toggle-dark-mode';
li.style = 'float: right;'
li.appendChild(toggleButton);
toggleButton.style = 'width: 24px; height: 25px; padding-top: 11px; float: right;';
const row = document.querySelector('#navrow1 > ul:first-of-type');
row.appendChild(li)
} else if (mainMenu && mainMenuVisible) { // (3) no search box + dynamic menu bar expanded
const li = document.createElement('li');
li.id = 'toggle-dark-mode';
li.style = 'float: right;'
li.appendChild(toggleButton);
toggleButton.style = 'width: 14px; height: 36px; padding-top: 10px; float: right;';
mainMenu.appendChild(li)
} else if (searchBoxPos1) { // (4) no search box + dynamic menu bar collapsed
toggleButton.style = 'width: 24px; height: 36px; padding-top: 10px; float: right;';
searchBoxPos1.style = 'top: 0px;'
searchBoxPos1.appendChild(toggleButton);
} else if (titleArea) { // (5) no search box and no navigation tabs
toggleButton.style = 'width: 24px; height: 24px; position: absolute; right: 0px; top: 34px;';
titleArea.append(toggleButton);
}
}
$(document).ready(() => addButton());
$(window).resize(() => addButton());
let inFocus = false;
$(document).focusin(() => inFocus = true);
$(document).focusout(() => inFocus = false);
$(document).keyup(function(e) {
if (e.keyCode==27 && !inFocus) { // escape key maps to keycode `27`
e.stopPropagation();
DarkModeToggle.userPreference = !DarkModeToggle.userPreference
}
})
DarkModeToggle.setDarkModeVisibility(DarkModeToggle.darkModeEnabled)
})
})
}
constructor() {
super();
this.onclick=this.toggleDarkMode
this.onkeypress=function(e){if (e.keyCode==13) { this.toggleDarkMode(); }};
}
/**
* @returns `true` for dark-mode, `false` for light-mode system preference
*/
static get systemPreference() {
return window.matchMedia('(prefers-color-scheme: dark)').matches
}
static get prefersDarkModeInLightMode() {
return Cookie.readSetting(DarkModeToggle.darkmode_cookie_name,'0')=='1';
}
static set prefersDarkModeInLightMode(preference) {
if (preference) {
Cookie.writeSetting(DarkModeToggle.darkmode_cookie_name,'1');
} else {
Cookie.eraseSetting(DarkModeToggle.darkmode_cookie_name);
}
}
static get prefersLightModeInDarkMode() {
return Cookie.readSetting(DarkModeToggle.lightmode_cookie_name,'0')=='1'
}
static set prefersLightModeInDarkMode(preference) {
if (preference) {
Cookie.writeSetting(DarkModeToggle.lightmode_cookie_name,'1');
} else {
Cookie.eraseSetting(DarkModeToggle.lightmode_cookie_name);
}
}
/**
* @returns `true` for dark-mode, `false` for light-mode user preference
*/
static get userPreference() {
return (!DarkModeToggle.systemPreference && DarkModeToggle.prefersDarkModeInLightMode) ||
(DarkModeToggle.systemPreference && !DarkModeToggle.prefersLightModeInDarkMode)
}
static set userPreference(userPreference) {
DarkModeToggle.darkModeEnabled = userPreference
if (!userPreference) {
if (DarkModeToggle.systemPreference) {
DarkModeToggle.prefersLightModeInDarkMode = true
} else {
DarkModeToggle.prefersDarkModeInLightMode = false
}
} else {
if (!DarkModeToggle.systemPreference) {
DarkModeToggle.prefersDarkModeInLightMode = true
} else {
DarkModeToggle.prefersLightModeInDarkMode = false
}
}
DarkModeToggle.onUserPreferenceChanged()
}
static setDarkModeVisibility(enable) {
let darkModeStyle, lightModeStyle;
if(enable) {
darkModeStyle = 'inline-block';
lightModeStyle = 'none'
} else {
darkModeStyle = 'none';
lightModeStyle = 'inline-block'
}
document.querySelectorAll('.dark-mode-visible' ).forEach(el => el.style.display = darkModeStyle);
document.querySelectorAll('.light-mode-visible').forEach(el => el.style.display = lightModeStyle);
}
static enableDarkMode(enable) {
if(enable) {
DarkModeToggle.darkModeEnabled = true
document.documentElement.classList.add("dark-mode")
document.documentElement.classList.remove("light-mode")
} else {
DarkModeToggle.darkModeEnabled = false
document.documentElement.classList.remove("dark-mode")
document.documentElement.classList.add("light-mode")
}
DarkModeToggle.setDarkModeVisibility(enable)
}
static onSystemPreferenceChanged() {
DarkModeToggle.darkModeEnabled = DarkModeToggle.userPreference
DarkModeToggle.enableDarkMode(DarkModeToggle.darkModeEnabled)
}
static onUserPreferenceChanged() {
DarkModeToggle.enableDarkMode(DarkModeToggle.darkModeEnabled)
}
toggleDarkMode() {
DarkModeToggle.userPreference = !DarkModeToggle.userPreference
}
}
customElements.define("dark-mode-toggle", DarkModeToggle);
DarkModeToggle.init();

View File

@ -1,118 +0,0 @@
<!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 -&gt; Inc Relation</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('dir_9c80311a018e1f8cfb6659b73d634be4.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="contents">
<h3>Src &rarr; Inc Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in MyLibsGeneral/Src</th><th class="dirtab">Includes file in MyLibsGeneral/Inc</th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="general__gpio_8c.html">general_gpio.c</a></td><td class="dirtab"><a class="el" href="general__gpio_8h.html">general_gpio.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="general__spi_8c.html">general_spi.c</a></td><td class="dirtab"><a class="el" href="general__gpio_8h.html">general_gpio.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="general__spi_8c.html">general_spi.c</a></td><td class="dirtab"><a class="el" href="general__spi_8h.html">general_spi.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="general__tim_8c.html">general_tim.c</a></td><td class="dirtab"><a class="el" href="general__tim_8h.html">general_tim.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="general__uart_8c.html">general_uart.c</a></td><td class="dirtab"><a class="el" href="general__gpio_8h.html">general_gpio.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="general__uart_8c.html">general_uart.c</a></td><td class="dirtab"><a class="el" href="general__uart_8h.html">general_uart.h</a></td></tr></table></div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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="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>

View File

@ -1,147 +0,0 @@
<!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 Directory Reference</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('dir_9c80311a018e1f8cfb6659b73d634be4.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">Src Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Directory dependency graph for Src:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="dir_9c80311a018e1f8cfb6659b73d634be4_dep.png" border="0" usemap="#adir__9c80311a018e1f8cfb6659b73d634be4__dep" loading="lazy" alt="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src"/></div>
<map name="adir__9c80311a018e1f8cfb6659b73d634be4__dep" id="adir__9c80311a018e1f8cfb6659b73d634be4__dep">
<area shape="rect" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html" title="Inc" alt="" coords="50,128,89,155"/>
<area shape="rect" href="dir_9c80311a018e1f8cfb6659b73d634be4.html" title="Src" alt="" coords="49,53,90,80"/>
<area shape="poly" href="dir_000002_000000.html" alt="" coords="72,81,72,112,67,112,67,81"/>
<area shape="rect" href="dir_000002_000000.html" title="6" alt="" coords="74,101,81,117"/>
<area shape="rect" href="dir_9e11e9a41112194af3eee6cc728f9515.html" title="MyLibsGeneral" alt="" coords="16,16,124,165"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:_5F_5Fgeneral_5Fflash_2Ec" id="r__5F_5Fgeneral_5Fflash_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="____general__flash_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__general_flash.c</b></td></tr>
<tr class="memitem:general_5Fgpio_2Ec" id="r_general_5Fgpio_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="general__gpio_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__gpio_8c.html">general_gpio.c</a></td></tr>
<tr class="memdesc:general__gpio_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Модуль для инициализации портов и работы с ними. <br /></td></tr>
<tr class="memitem:general_5Fspi_2Ec" id="r_general_5Fspi_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="general__spi_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__spi_8c.html">general_spi.c</a></td></tr>
<tr class="memdesc:general__spi_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Модуль для инициализации SPI. <br /></td></tr>
<tr class="memitem:general_5Ftim_2Ec" id="r_general_5Ftim_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="general__tim_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__tim_8c.html">general_tim.c</a></td></tr>
<tr class="memdesc:general__tim_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Модуль для инициализации таймеров и работы с ними. <br /></td></tr>
<tr class="memitem:general_5Fuart_2Ec" id="r_general_5Fuart_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="general__uart_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__uart_8c.html">general_uart.c</a></td></tr>
<tr class="memdesc:general__uart_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Модуль для инициализации UART. <br /></td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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="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>

View File

@ -1,8 +0,0 @@
var dir_9c80311a018e1f8cfb6659b73d634be4 =
[
[ "__general_flash.c", "____general__flash_8c_source.html", null ],
[ "general_gpio.c", "general__gpio_8c.html", "general__gpio_8c" ],
[ "general_spi.c", "general__spi_8c.html", "general__spi_8c" ],
[ "general_tim.c", "general__tim_8c.html", "general__tim_8c" ],
[ "general_uart.c", "general__uart_8c.html", "general__uart_8c" ]
];

View File

@ -1,7 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src">
<area shape="rect" id="node1" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html" title="Inc" alt="" coords="50,128,89,155"/>
<area shape="rect" id="node2" href="dir_9c80311a018e1f8cfb6659b73d634be4.html" title="Src" alt="" coords="49,53,90,80"/>
<area shape="poly" id="edge1" href="dir_000002_000000.html" alt="" coords="72,81,72,112,67,112,67,81"/>
<area shape="rect" id="edge1-headlabel" href="dir_000002_000000.html" title="6" alt="" coords="74,101,81,117"/>
<area shape="rect" id="clust1" href="dir_9e11e9a41112194af3eee6cc728f9515.html" title="MyLibsGeneral" alt="" coords="16,16,124,165"/>
</map>

View File

@ -1 +0,0 @@
ffa428a4e7938b24bbf734d10d788ade

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,144 +0,0 @@
<!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 Directory Reference</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('dir_9e11e9a41112194af3eee6cc728f9515.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">MyLibsGeneral Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Directory dependency graph for MyLibsGeneral:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="dir_9e11e9a41112194af3eee6cc728f9515_dep.png" border="0" usemap="#adir__9e11e9a41112194af3eee6cc728f9515__dep" loading="lazy" alt="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral"/></div>
<map name="adir__9e11e9a41112194af3eee6cc728f9515__dep" id="adir__9e11e9a41112194af3eee6cc728f9515__dep">
<area shape="rect" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html" title="Inc" alt="" coords="160,101,200,128"/>
<area shape="rect" href="dir_9c80311a018e1f8cfb6659b73d634be4.html" title="Src" alt="" coords="159,27,201,53"/>
<area shape="poly" href="dir_000002_000000.html" alt="" coords="183,54,183,86,177,86,177,54"/>
<area shape="rect" href="dir_000002_000000.html" title="6" alt="" coords="185,75,192,91"/>
<area shape="rect" href="dir_9e11e9a41112194af3eee6cc728f9515.html" alt="" coords="16,16,212,139"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-subdirs" class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:Inc" id="r_Inc"><td class="memItemLeft" align="right" valign="top"><span class="iconfolder"><div class="folder-icon"></div></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></td></tr>
<tr class="memitem:Src" id="r_Src"><td class="memItemLeft" align="right" valign="top"><span class="iconfolder"><div class="folder-icon"></div></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_9c80311a018e1f8cfb6659b73d634be4.html">Src</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:mainpage_2Eh" id="r_mainpage_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="mainpage_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>mainpage.h</b></td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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="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>

View File

@ -1,6 +0,0 @@
var dir_9e11e9a41112194af3eee6cc728f9515 =
[
[ "Inc", "dir_eb423fea8a9c4b9b32b922020ec391e1.html", "dir_eb423fea8a9c4b9b32b922020ec391e1" ],
[ "Src", "dir_9c80311a018e1f8cfb6659b73d634be4.html", "dir_9c80311a018e1f8cfb6659b73d634be4" ],
[ "mainpage.h", "mainpage_8h_source.html", null ]
];

View File

@ -1,7 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral">
<area shape="rect" id="node2" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html" title="Inc" alt="" coords="160,101,200,128"/>
<area shape="rect" id="node3" href="dir_9c80311a018e1f8cfb6659b73d634be4.html" title="Src" alt="" coords="159,27,201,53"/>
<area shape="poly" id="edge1" href="dir_000002_000000.html" alt="" coords="183,54,183,86,177,86,177,54"/>
<area shape="rect" id="edge1-headlabel" href="dir_000002_000000.html" title="6" alt="" coords="185,75,192,91"/>
<area shape="rect" id="clust1" href="dir_9e11e9a41112194af3eee6cc728f9515.html" alt="" coords="16,16,212,139"/>
</map>

View File

@ -1 +0,0 @@
8443f86a129039a222fea0f68a874d48

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,158 +0,0 @@
<!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/Inc Directory Reference</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('dir_eb423fea8a9c4b9b32b922020ec391e1.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">Inc Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Directory dependency graph for Inc:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="dir_eb423fea8a9c4b9b32b922020ec391e1_dep.png" border="0" usemap="#adir__eb423fea8a9c4b9b32b922020ec391e1__dep" loading="lazy" alt="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc"/></div>
<map name="adir__eb423fea8a9c4b9b32b922020ec391e1__dep" id="adir__eb423fea8a9c4b9b32b922020ec391e1__dep">
<area shape="rect" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html" title="Inc" alt="" coords="50,53,89,80"/>
<area shape="rect" href="dir_9e11e9a41112194af3eee6cc728f9515.html" title="MyLibsGeneral" alt="" coords="16,16,124,91"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:_5F_5Fgeneral_5Fflash_2Eh" id="r__5F_5Fgeneral_5Fflash_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="____general__flash_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__general_flash.h</b></td></tr>
<tr class="memitem:bit_5Faccess_2Eh" id="r_bit_5Faccess_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="bit__access_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit__access_8h.html">bit_access.h</a></td></tr>
<tr class="memdesc:bit__access_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголочный файл для дефайнов битового доступа. <br /></td></tr>
<tr class="memitem:evolve_5Foptimizer_2Eh" id="r_evolve_5Foptimizer_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="evolve__optimizer_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="evolve__optimizer_8h.html">evolve_optimizer.h</a></td></tr>
<tr class="memdesc:evolve__optimizer_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголовочный файл для адаптивного подбора параметров <br /></td></tr>
<tr class="memitem:general_5Fgpio_2Eh" id="r_general_5Fgpio_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="general__gpio_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__gpio_8h.html">general_gpio.h</a></td></tr>
<tr class="memdesc:general__gpio_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголовочный файл для модуля инициализации портов и работы с ними. <br /></td></tr>
<tr class="memitem:general_5Fspi_2Eh" id="r_general_5Fspi_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="general__spi_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__spi_8h.html">general_spi.h</a></td></tr>
<tr class="memdesc:general__spi_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголовочный файл для модуля инициализации SPI. <br /></td></tr>
<tr class="memitem:general_5Ftim_2Eh" id="r_general_5Ftim_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="general__tim_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__tim_8h.html">general_tim.h</a></td></tr>
<tr class="memdesc:general__tim_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголовочный файл для модуля инициализации таймеров и работы с ними. <br /></td></tr>
<tr class="memitem:general_5Fuart_2Eh" id="r_general_5Fuart_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="general__uart_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="general__uart_8h.html">general_uart.h</a></td></tr>
<tr class="memdesc:general__uart_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголовочный файл для модуля инициализации UART. <br /></td></tr>
<tr class="memitem:mylibs_5Fconfig_2Eh" id="r_mylibs_5Fconfig_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="mylibs__config_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mylibs__config_8h.html">mylibs_config.h</a></td></tr>
<tr class="memdesc:mylibs__config_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Конфигурации для библиотек MyLibs. <br /></td></tr>
<tr class="memitem:mylibs_5Fdefs_2Eh" id="r_mylibs_5Fdefs_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="mylibs__defs_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mylibs__defs_8h.html">mylibs_defs.h</a></td></tr>
<tr class="memdesc:mylibs__defs_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголочный файл для дефайнов библиотеки MyLibsGeneral. <br /></td></tr>
<tr class="memitem:mylibs_5Finclude_2Eh" id="r_mylibs_5Finclude_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="mylibs__include_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mylibs__include_8h.html">mylibs_include.h</a></td></tr>
<tr class="memdesc:mylibs__include_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголочный файл для всех библиотек <br /></td></tr>
<tr class="memitem:trace_2Eh" id="r_trace_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="trace_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trace_8h.html">trace.h</a></td></tr>
<tr class="memdesc:trace_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголочный файл для работы с трассировкой. <br /></td></tr>
<tr class="memitem:trackers_2Eh" id="r_trackers_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="trackers_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trackers_8h.html">trackers.h</a></td></tr>
<tr class="memdesc:trackers_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголочный файл для работы с трекерами <a class="el" href="group___t_r_a_c_k_e_r_s.html">Trackers defines</a>. <br /></td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</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>

View File

@ -1,15 +0,0 @@
var dir_eb423fea8a9c4b9b32b922020ec391e1 =
[
[ "__general_flash.h", "____general__flash_8h_source.html", null ],
[ "bit_access.h", "bit__access_8h.html", "bit__access_8h" ],
[ "evolve_optimizer.h", "evolve__optimizer_8h.html", "evolve__optimizer_8h" ],
[ "general_gpio.h", "general__gpio_8h.html", "general__gpio_8h" ],
[ "general_spi.h", "general__spi_8h.html", "general__spi_8h" ],
[ "general_tim.h", "general__tim_8h.html", "general__tim_8h" ],
[ "general_uart.h", "general__uart_8h.html", "general__uart_8h" ],
[ "mylibs_config.h", "mylibs__config_8h.html", "mylibs__config_8h" ],
[ "mylibs_defs.h", "mylibs__defs_8h.html", "mylibs__defs_8h" ],
[ "mylibs_include.h", "mylibs__include_8h.html", null ],
[ "trace.h", "trace_8h.html", "trace_8h" ],
[ "trackers.h", "trackers_8h.html", "trackers_8h" ]
];

View File

@ -1,4 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc">
<area shape="rect" id="node1" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html" title="Inc" alt="" coords="50,53,89,80"/>
<area shape="rect" id="clust1" href="dir_9e11e9a41112194af3eee6cc728f9515.html" title="MyLibsGeneral" alt="" coords="16,16,124,91"/>
</map>

View File

@ -1 +0,0 @@
51bda8bf2e3b4eafeabf6cf3520068b7

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#D8DFEE;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,360 +0,0 @@
<!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>
<title>Validator / crawler helper</title>
<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"/>
</head>
<body>
<a href="____general__flash_8c_source.html"/>
<a href="____general__flash_8h_source.html"/>
<a href="annotated.html"/>
<a href="bit__access_8h.html"/>
<a href="bit__access_8h_source.html"/>
<a href="classes.html"/>
<a href="dir_000002_000000.html"/>
<a href="dir_9c80311a018e1f8cfb6659b73d634be4.html"/>
<a href="dir_9e11e9a41112194af3eee6cc728f9515.html"/>
<a href="dir_eb423fea8a9c4b9b32b922020ec391e1.html"/>
<a href="doxygen_crawl.html"/>
<a href="evolve__optimizer_8h.html"/>
<a href="evolve__optimizer_8h_source.html"/>
<a href="files.html"/>
<a href="functions.html"/>
<a href="functions_vars.html"/>
<a href="general__gpio_8c.html"/>
<a href="general__gpio_8c_source.html"/>
<a href="general__gpio_8h.html"/>
<a href="general__gpio_8h_source.html"/>
<a href="general__spi_8c.html"/>
<a href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5"/>
<a href="general__spi_8c_source.html"/>
<a href="general__spi_8h.html"/>
<a href="general__spi_8h_source.html"/>
<a href="general__tim_8c.html"/>
<a href="general__tim_8c_source.html"/>
<a href="general__tim_8h.html"/>
<a href="general__tim_8h_source.html"/>
<a href="general__uart_8c.html"/>
<a href="general__uart_8c.html#a3abae05bbde5f3b402bf18ca13dc6a0b"/>
<a href="general__uart_8c.html#ad82d0cbd19151675135fd75dad315d05"/>
<a href="general__uart_8c_source.html"/>
<a href="general__uart_8h.html"/>
<a href="general__uart_8h_source.html"/>
<a href="globals.html"/>
<a href="globals_defs.html"/>
<a href="globals_enum.html"/>
<a href="globals_eval.html"/>
<a href="globals_func.html"/>
<a href="graph_legend.html"/>
<a href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html"/>
<a href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a"/>
<a href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396"/>
<a href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086"/>
<a href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1"/>
<a href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html"/>
<a href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85"/>
<a href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25"/>
<a href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479"/>
<a href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518"/>
<a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html"/>
<a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3"/>
<a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254"/>
<a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9"/>
<a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2"/>
<a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490"/>
<a href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f"/>
<a href="group___e_v_o_l_v_e___c_o_n_f_i_g.html"/>
<a href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47"/>
<a href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971"/>
<a href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3"/>
<a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef"/>
<a href="group___g_p_i_o___i_n_i_t.html"/>
<a href="group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9"/>
<a href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023"/>
<a href="group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29"/>
<a href="group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067"/>
<a href="group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be"/>
<a href="group___m_y___l_i_b_s___g_p_i_o.html"/>
<a href="group___m_y___l_i_b_s___s_p_i.html"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4"/>
<a href="group___m_y___l_i_b_s___t_i_m.html"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154"/>
<a href="group___m_y_l_i_b_s___a_l_l.html"/>
<a href="group___m_y_l_i_b_s___c_o_n_f_i_g.html"/>
<a href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7"/>
<a href="group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8"/>
<a href="group___m_y_l_i_b_s___t_i_m___o_c.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6"/>
<a href="group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889"/>
<a href="group___s_p_i___i_n_i_t.html"/>
<a href="group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf"/>
<a href="group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b"/>
<a href="group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc"/>
<a href="group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c"/>
<a href="group___t_i_m___i_n_i_t.html"/>
<a href="group___t_i_m___i_n_i_t.html#ga1493b39c9214501180b81b4c892f9be0"/>
<a href="group___t_i_m___i_n_i_t.html#ga176c97f06ebcf14e06e5c5bdbfac44c2"/>
<a href="group___t_i_m___i_n_i_t.html#ga252f4fba93fc265110e83760e0590af3"/>
<a href="group___t_i_m___i_n_i_t.html#ga28ba33d7c6bf22821dafa5bcee4854be"/>
<a href="group___t_i_m___i_n_i_t.html#ga4e2b0e6cdf9eed74581b575c3fd9516b"/>
<a href="group___t_i_m___i_n_i_t.html#ga54a98c21365e0bc45b81555d2b101f2b"/>
<a href="group___t_i_m___i_n_i_t.html#ga5b5685a43273b6e37242a4aba3ee0617"/>
<a href="group___t_i_m___i_n_i_t.html#ga72535a44955b43cbcd56e25039ab32eb"/>
<a href="group___t_i_m___i_n_i_t.html#ga7cdc54cc8cbbb6e9f60001f1e3e6ec67"/>
<a href="group___t_i_m___i_n_i_t.html#ga8fe31b98160627d19038222910be3f46"/>
<a href="group___t_i_m___i_n_i_t.html#ga98c0691052d1da2c4053dd3586ff7ce9"/>
<a href="group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c"/>
<a href="group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a"/>
<a href="group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac"/>
<a href="group___t_r_a_c_e.html"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga3bc1b76864e1d32cbdd174d4caae7724"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga501312b24e322de4dd6755ad442f0ba3"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga8e56f75d3ab8a89ddde1404ae23c3297"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca"/>
<a href="group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d"/>
<a href="group___t_r_a_c_e___g_p_i_o.html"/>
<a href="group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb"/>
<a href="group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a"/>
<a href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html"/>
<a href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f"/>
<a href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7"/>
<a href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html"/>
<a href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6"/>
<a href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146"/>
<a href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63"/>
<a href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1"/>
<a href="group___t_r_a_c_e___s_e_r_i_a_l.html"/>
<a href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26"/>
<a href="group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa"/>
<a href="group___t_r_a_c_k_e_r_s.html"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57"/>
<a href="group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e"/>
<a href="group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5"/>
<a href="group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169"/>
<a href="group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51"/>
<a href="group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07"/>
<a href="group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e"/>
<a href="group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74"/>
<a href="group___u_a_r_t___i_n_i_t.html"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7"/>
<a href="group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d"/>
<a href="group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b"/>
<a href="group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be"/>
<a href="index.html"/>
<a href="index.html#features"/>
<a href="index.html#gpio_module"/>
<a href="index.html#overview"/>
<a href="index.html#spi_module"/>
<a href="index.html#structure"/>
<a href="index.html#tim_module"/>
<a href="index.html#trace_module"/>
<a href="index.html#uart_module"/>
<a href="index.html#usage_basic"/>
<a href="index.html#utils_module"/>
<a href="mainpage_8h_source.html"/>
<a href="mylibs__config_8h.html"/>
<a href="mylibs__config_8h_source.html"/>
<a href="mylibs__defs_8h.html"/>
<a href="mylibs__defs_8h_source.html"/>
<a href="mylibs__include_8h.html"/>
<a href="mylibs__include_8h_source.html"/>
<a href="struct_evolve_optimizer__t-members.html"/>
<a href="struct_evolve_optimizer__t.html"/>
<a href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae"/>
<a href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8"/>
<a href="struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727"/>
<a href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a"/>
<a href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c"/>
<a href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df"/>
<a href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6"/>
<a href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1"/>
<a href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108"/>
<a href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4"/>
<a href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8"/>
<a href="struct_g_p_i_o___l_e_d_type_def-members.html"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435"/>
<a href="struct_g_p_i_o___switch_type_def-members.html"/>
<a href="struct_g_p_i_o___switch_type_def.html"/>
<a href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89"/>
<a href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06"/>
<a href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405"/>
<a href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032"/>
<a href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a"/>
<a href="struct_h_f___stack_frame__t-members.html"/>
<a href="struct_h_f___stack_frame__t.html"/>
<a href="struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732"/>
<a href="struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea"/>
<a href="struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413"/>
<a href="struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3"/>
<a href="struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b"/>
<a href="struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577"/>
<a href="struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b"/>
<a href="struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9"/>
<a href="struct_r_t_t___flash_header__t-members.html"/>
<a href="struct_r_t_t___flash_header__t.html"/>
<a href="struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57"/>
<a href="struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a"/>
<a href="struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699"/>
<a href="struct_s_p_i___settings_type_def-members.html"/>
<a href="struct_s_p_i___settings_type_def.html"/>
<a href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820"/>
<a href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95"/>
<a href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a"/>
<a href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc"/>
<a href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95"/>
<a href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1"/>
<a href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979"/>
<a href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176"/>
<a href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474"/>
<a href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422"/>
<a href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14"/>
<a href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab"/>
<a href="struct_t_i_m___encoder_type_def-members.html"/>
<a href="struct_t_i_m___encoder_type_def.html"/>
<a href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5"/>
<a href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2"/>
<a href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e"/>
<a href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5"/>
<a href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80"/>
<a href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3"/>
<a href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45"/>
<a href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9"/>
<a href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c"/>
<a href="struct_t_i_m___settings_type_def-members.html"/>
<a href="struct_t_i_m___settings_type_def.html"/>
<a href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718"/>
<a href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21"/>
<a href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0"/>
<a href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e"/>
<a href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014"/>
<a href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7"/>
<a href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969"/>
<a href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0"/>
<a href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c"/>
<a href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4"/>
<a href="struct_u_a_r_t___settings_type_def-members.html"/>
<a href="struct_u_a_r_t___settings_type_def.html"/>
<a href="struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19"/>
<a href="struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613"/>
<a href="struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49"/>
<a href="struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef"/>
<a href="struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea"/>
<a href="struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f"/>
<a href="topics.html"/>
<a href="trace_8h.html"/>
<a href="trace_8h_source.html"/>
<a href="trackers_8h.html"/>
<a href="trackers_8h_source.html"/>
<a href="unionuint16___bit_type_def-members.html"/>
<a href="unionuint16___bit_type_def.html"/>
<a href="unionuint32___bit_type_def-members.html"/>
<a href="unionuint32___bit_type_def.html"/>
<a href="unionuint64___bit_type_def-members.html"/>
<a href="unionuint64___bit_type_def.html"/>
<a href="unionuint8___bit_type_def-members.html"/>
<a href="unionuint8___bit_type_def.html"/>
</body>
</html>

View File

@ -1,198 +0,0 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function toggleVisibility(linkObj) {
return dynsection.toggleVisibility(linkObj);
}
let dynsection = {
// helper function
updateStripes : function() {
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
$('table.directory tr').
removeClass('odd').filter(':visible:odd').addClass('odd');
},
toggleVisibility : function(linkObj) {
const base = $(linkObj).attr('id');
const summary = $('#'+base+'-summary');
const content = $('#'+base+'-content');
const trigger = $('#'+base+'-trigger');
const src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.slideUp('fast');
summary.show();
$(linkObj).find('.arrowhead').addClass('closed').removeClass('opened');
} else {
content.slideDown('fast');
summary.hide();
$(linkObj).find('.arrowhead').removeClass('closed').addClass('opened');
}
return false;
},
toggleLevel : function(level) {
$('table.directory tr').each(function() {
const l = this.id.split('_').length-1;
const i = $('#img'+this.id.substring(3));
const a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.find('.folder-icon').addClass('open');
a.find('.arrowhead').removeClass('closed').addClass('opened');
$(this).show();
} else if (l==level+1) {
a.find('.arrowhead').removeClass('opened').addClass('closed');
i.find('.folder-icon').removeClass('open');
$(this).show();
} else {
$(this).hide();
}
});
this.updateStripes();
},
toggleFolder : function(id) {
// the clicked row
const currentRow = $('#row_'+id);
// all rows after the clicked row
const rows = currentRow.nextAll("tr");
const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
const childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfolder").find('.folder-icon').removeClass("open");
currentRowSpans.filter(".opened").removeClass("opened").addClass("closed");
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfolder").find('.folder-icon').addClass("open");
currentRowSpans.filter(".closed").removeClass("closed").addClass("opened");
// replace down arrows by right arrows for child rows
const childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfolder").find('.folder-icon').removeClass("open");
childRowsSpans.filter(".opened").removeClass("opened").addClass("closed");
childRows.show(); //show all children
}
this.updateStripes();
},
toggleInherit : function(id) {
let rows = $('tr.inherit.'+id);
let header = $('tr.inherit_header.'+id);
if (rows.filter(':first').is(':visible')===true) {
rows.hide();
$(header).find('.arrowhead').addClass('closed').removeClass('opened');
} else {
rows.show();
$(header).find('.arrowhead').removeClass('closed').addClass('opened');
}
},
};
let codefold = {
opened : true,
// toggle all folding blocks
toggle_all : function() {
if (this.opened) {
$('#fold_all').addClass('plus').removeClass('minus');
$('div[id^=foldopen]').hide();
$('div[id^=foldclosed]').show();
$('div[id^=foldclosed] span.fold').removeClass('minus').addClass('plus');
} else {
$('#fold_all').addClass('minus').removeClass('plus');
$('div[id^=foldopen]').show();
$('div[id^=foldclosed]').hide();
}
this.opened=!this.opened;
},
// toggle single folding block
toggle : function(id) {
$('#foldopen'+id).toggle();
$('#foldclosed'+id).toggle();
$('#foldopen'+id).next().find('span.fold').addClass('plus').removeClass('minus');
},
init : function() {
$('span[class=lineno]').css({
'padding-right':'4px',
'margin-right':'2px',
'display':'inline-block',
'width':'54px',
'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%'
});
// add global toggle to first line
$('span[class=lineno]:first').append('<span class="fold minus" id="fold_all" '+
'onclick="javascript:codefold.toggle_all();"></span>');
// add vertical lines to other rows
$('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
// add toggle controls to lines with fold divs
$('div[class=foldopen]').each(function() {
// extract specific id to use
const id = $(this).attr('id').replace('foldopen','');
// extract start and end foldable fragment attributes
const start = $(this).attr('data-start');
const end = $(this).attr('data-end');
// replace normal fold span with controls for the first line of a foldable fragment
$(this).find('span[class=fold]:first').replaceWith('<span class="fold minus" '+
'onclick="javascript:codefold.toggle(\''+id+'\');"></span>');
// append div for folded (closed) representation
$(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
// extract the first line from the "open" section to represent closed content
const line = $(this).children().first().clone();
// remove any glow that might still be active on the original line
$(line).removeClass('glow');
if (start) {
// if line already ends with a start marker (e.g. trailing {), remove it
$(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
}
// replace minus with plus symbol
$(line).find('span[class=fold]').addClass('plus').removeClass('minus');
// append ellipsis
$(line).append(' '+start+'<a href="javascript:codefold.toggle(\''+id+'\')">&#8230;</a>'+end);
// insert constructed line into closed div
$('#foldclosed'+id).html(line);
});
},
};
/* @license-end */
$(function() {
$('.code,.codeRef').each(function() {
$(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
$.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ];
$(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
});
});

View File

@ -1,189 +0,0 @@
<!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/Inc/evolve_optimizer.h File Reference</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('evolve__optimizer_8h.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">evolve_optimizer.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Заголовочный файл для адаптивного подбора параметров
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>&quot;</code><br />
<code>#include &lt;stdint.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
</div><div class="textblock"><div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Include dependency graph for evolve_optimizer.h:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="evolve__optimizer_8h__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2evolve__optimizer_8h" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2evolve__optimizer_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2evolve__optimizer_8h">
<area shape="rect" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="73,5,271,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="13,112,115,139"/>
<area shape="poly" title=" " alt="" coords="139,66,93,104,89,100,136,62"/>
<area shape="rect" title=" " alt="" coords="140,112,204,139"/>
<area shape="poly" title=" " alt="" coords="175,64,175,96,169,96,169,64"/>
<area shape="rect" title=" " alt="" coords="228,112,292,139"/>
<area shape="poly" title=" " alt="" coords="202,62,239,99,235,103,198,66"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="8,187,120,213"/>
<area shape="poly" title=" " alt="" coords="67,139,67,171,61,171,61,139"/>
<area shape="rect" title=" " alt="" coords="5,261,123,288"/>
<area shape="poly" title=" " alt="" coords="67,214,67,246,61,246,61,214"/>
</map>
</div>
</div><div class="textblock"><div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>This graph shows which files directly or indirectly include this file:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="evolve__optimizer_8h__dep__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2evolve__optimizer_8hdep" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2evolve__optimizer_8hdep" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2evolve__optimizer_8hdep">
<area shape="rect" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="5,5,204,64"/>
<area shape="rect" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,204,171"/>
<area shape="poly" title=" " alt="" coords="107,80,107,112,102,112,102,80"/>
</map>
</div>
</div>
<p><a href="evolve__optimizer_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:EvolveOptimizer_5Ft" id="r_EvolveOptimizer_5Ft"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Структура эволюционного оптимизатора <a href="struct_evolve_optimizer__t.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-define-members" class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga83abbcabaff9111c03ae2475ee72ea3e" id="r_ga83abbcabaff9111c03ae2475ee72ea3e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e">PARAM_SCALE</a>(x, min_val, max_val)</td></tr>
<tr class="memdesc:ga83abbcabaff9111c03ae2475ee72ea3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1) <br /></td></tr>
<tr class="memitem:gaa1d5510fe5f0bd989473f3ebe324bde3" id="r_gaa1d5510fe5f0bd989473f3ebe324bde3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3">PARAM_UNSCALE</a>(val, min_val, max_val)</td></tr>
<tr class="memdesc:gaa1d5510fe5f0bd989473f3ebe324bde3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]. <br /></td></tr>
<tr class="memitem:ga2f2b1be34ad4eb1bf3267237200cd6c6" id="r_ga2f2b1be34ad4eb1bf3267237200cd6c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6">EVOLVE_MUTATION_MIN_PCT</a>&#160;&#160;&#160;10</td></tr>
<tr class="memdesc:ga2f2b1be34ad4eb1bf3267237200cd6c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Минимальная мутация (в процентах от Loss) <br /></td></tr>
<tr class="memitem:ga861c1c6a503c21441abcec0d57b848bc" id="r_ga861c1c6a503c21441abcec0d57b848bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc">EVOLVE_MUTATION_MAX_PCT</a>&#160;&#160;&#160;100</td></tr>
<tr class="memdesc:ga861c1c6a503c21441abcec0d57b848bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Максимальная мутация (в процентах от Loss) <br /></td></tr>
<tr class="memitem:ga38607e23d9234524bc7de5869b15b8eb" id="r_ga38607e23d9234524bc7de5869b15b8eb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">ELOVLE_N_ELITE_CANDIDATE</a>&#160;&#160;&#160;2</td></tr>
<tr class="memdesc:ga38607e23d9234524bc7de5869b15b8eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga4e3ea118b5b9068619c57724a925ba21" id="r_ga4e3ea118b5b9068619c57724a925ba21"><td class="memItemLeft" align="right" valign="top">__STATIC_INLINE int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21">EvolveOptimizer_Init</a> (<a class="el" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a> *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)</td></tr>
<tr class="memdesc:ga4e3ea118b5b9068619c57724a925ba21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация эволюционного оптимизатора. <br /></td></tr>
<tr class="memitem:gaef44a1f3298514569cc2b396a92101ef" id="r_gaef44a1f3298514569cc2b396a92101ef"><td class="memItemLeft" align="right" valign="top">__STATIC_INLINE int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef">EvolveOptimizer_Step</a> (<a class="el" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a> *opt, float *params, float loss)</td></tr>
<tr class="memdesc:gaef44a1f3298514569cc2b396a92101ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Один шаг эволюционного оптимизатора. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Заголовочный файл для адаптивного подбора параметров </p>
<p class="definition">Definition in file <a class="el" href="evolve__optimizer_8h_source.html">evolve_optimizer.h</a>.</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="evolve__optimizer_8h.html">evolve_optimizer.h</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>

View File

@ -1,10 +0,0 @@
var evolve__optimizer_8h =
[
[ "PARAM_SCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ],
[ "PARAM_UNSCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ],
[ "EVOLVE_MUTATION_MIN_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6", null ],
[ "EVOLVE_MUTATION_MAX_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc", null ],
[ "ELOVLE_N_ELITE_CANDIDATE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb", null ],
[ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21", null ],
[ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef", null ]
];

View File

@ -1,5 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="5,5,204,64"/>
<area shape="rect" id="Node000002" href="$mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,204,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="107,80,107,112,102,112,102,80"/>
</map>

View File

@ -1 +0,0 @@
41a81c5527cb10d478e05e49562aedc3

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,13 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="73,5,271,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="13,112,115,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="139,66,93,104,89,100,136,62"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="140,112,204,139"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="175,64,175,96,169,96,169,64"/>
<area shape="rect" id="Node000006" title=" " alt="" coords="228,112,292,139"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="202,62,239,99,235,103,198,66"/>
<area shape="rect" id="Node000003" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="8,187,120,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="67,139,67,171,61,171,61,139"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="5,261,123,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="67,214,67,246,61,246,61,214"/>
</map>

View File

@ -1 +0,0 @@
4993f7378dc2ed7a2e950385e8313f89

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -1,483 +0,0 @@
<!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/Inc/evolve_optimizer.h 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('evolve__optimizer_8h_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">evolve_optimizer.h</div></div>
</div><!--header-->
<div class="contents">
<a href="evolve__optimizer_8h.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 evolve_optimizer.h</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">* @addtogroup EVOLVE_OPTIMIZER Evolve optimizer</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @ingroup MYLIBS_DEFINES</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @brief Библиотека для эволюционного подбора параметров</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* @details</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="comment">- Мутацию для поиска оптимальных параметров</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</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"></span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">Параметры для конфигурации:</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">- @ref ENABLE_EVOLVE_OPTIMIZATION - Включить оптимизацию параметров</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> Если библиотека отключена @ref ENABLE_EVOLVE_OPTIMIZATION, то вставляются </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 EVOLVE_MAX_PARAMS - Максимальное количество параметров</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">- @ref EVOLVE_MAX_CANDIDATES - Максимальное количество кандидатов для обучения</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">- (опционально) @ref EVOLVE_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">- (опционально) @ref EVOLVE_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">- (опционально) @ref ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений</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">@par Пример использования:</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">@code</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">#include &quot;evolve_optimizer.h&quot;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">#define N_PARAMS 4</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">#define N_CANDIDATES 100</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">#define N_BEST 10</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">#define MUTATION 0.1f</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">float params[N_PARAMS];</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">EvolveOptimizer_t optimizer;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment"></span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">// Формирование параметров</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">uint16_t param_u16 = 800;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">float param_f = 0.01f;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">uint8_t param_u8 = 40;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">int16_t param_i16 = 1600;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment"></span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">// Инициалиазция</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">EvolveOptimizer_Init(&amp;optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"></span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">// Шаг эволюции</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">EvolveOptimizer_Step(&amp;optimizer, params, loss);</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment"></span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">// Взятие следующих для эволюции параметров</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">@endcode</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><span class="comment">*****************************************************************************/</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#ifndef __EVOLVE_OPTIMIZER_H_</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#define __EVOLVE_OPTIMIZER_H_</span></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="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></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><span class="preprocessor">#ifdef ENABLE_EVOLVE_OPTIMIZATION</span><span class="comment"></span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment">/**</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @brief Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> */</span><span class="preprocessor"></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___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e"> 73</a></span><span class="preprocessor">#define PARAM_SCALE(x, min_val, max_val) \</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">(((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))</span></div>
</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"></span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment">/**</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"> * @brief Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00079" data-start="" data-end="">
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3"> 79</a></span><span class="preprocessor">#define PARAM_UNSCALE(val, min_val, max_val) \</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="preprocessor">(((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))</span></div>
</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><span class="preprocessor">#ifndef local_time</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="preprocessor">#define local_time() HAL_GetTick() </span><span class="comment">///&lt; Локальное время</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </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="preprocessor">#ifndef EVOLVE_MUTATION_MIN_PCT</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6"> 89</a></span><span class="preprocessor">#define EVOLVE_MUTATION_MIN_PCT 10 </span><span class="comment">///&lt; Минимальная мутация (в процентах от Loss)</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#ifndef EVOLVE_MUTATION_MAX_PCT</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc"> 92</a></span><span class="preprocessor">#define EVOLVE_MUTATION_MAX_PCT 100 </span><span class="comment">///&lt; Максимальная мутация (в процентах от Loss)</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor">#ifndef ELOVLE_N_ELITE_CANDIDATE</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb"> 95</a></span><span class="preprocessor">#define ELOVLE_N_ELITE_CANDIDATE 2 </span><span class="comment">///&lt; Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"></span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">/**</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * @brief Структура эволюционного оптимизатора</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00102" data-start="{" data-end="};">
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html"> 102</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c"> 103</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">stability</a>; <span class="comment">///&lt; Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)</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"><a class="line" href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8"> 105</a></span> uint16_t <a class="code hl_variable" href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8">n_params</a>; <span class="comment">///&lt; Количество параметров</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1"> 106</a></span> uint16_t <a class="code hl_variable" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">n_cand</a>; <span class="comment">///&lt; Количество кандидатов в популяции</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6"> 107</a></span> uint16_t <a class="code hl_variable" href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6">n_best</a>; <span class="comment">///&lt; Количество лучших, усредняемых</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8"> 108</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8">mutation_amp</a>; <span class="comment">///&lt; Амплитуда мутации (0..1)</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae"> 110</a></span> uint16_t <a class="code hl_variable" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">cand_index</a>; <span class="comment">///&lt; Индекс кандидата для обработки</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108"> 111</a></span> uint16_t <a class="code hl_variable" href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108">gen_index</a>; <span class="comment">///&lt; Индекс популяции </span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">//INTERNAL</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727"> 114</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727">gen_mut</a>; <span class="comment">///&lt; Амплитуда мутации у текущей популяции </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"><a class="line" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df"> 116</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[<a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a>]; <span class="comment">///&lt; Loss для каждого кандидата</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4"> 117</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[<a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a>][<a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee">EVOLVE_MAX_PARAMS</a>]; <span class="comment">///&lt; Параметры кандидатов</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a"> 118</a></span> uint16_t <a class="code hl_variable" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">sorted_idx</a>[<a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a>]; <span class="comment">///&lt; Индексы отсортированных кандидатов</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>} <a class="code hl_struct" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a>;</div>
</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"></span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment">/** </span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> * @cond EVOLVE_INTERNAL</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> */</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">// Вспомогательный указатель для сортировки</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="keyword">static</span> <a class="code hl_struct" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a> *g_sort_opt; <span class="comment">// глобальный указатель на текущий оптимизатор</span></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="comment">// функция условия сортировки</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="keyword">static</span> <span class="keywordtype">int</span> cmp_idx(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b) {</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">if</span> (g_sort_opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[*(<span class="keyword">const</span> uint16_t*)a] &lt; g_sort_opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[*(<span class="keyword">const</span> uint16_t*)b]) </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (g_sort_opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[*(<span class="keyword">const</span> uint16_t*)a] &gt; g_sort_opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[*(<span class="keyword">const</span> uint16_t*)b]) </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span>}<span class="comment"></span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment">/** @endcond */</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </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> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"></span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">/**</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> * @brief Инициализация эволюционного оптимизатора.</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> * @param opt Указатель на структуру оптимизатора</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> * @param n_params Количество параметров в одном кандидате</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> * @param n_cand Количество кандидатов</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment"> * @param n_best Количество лучших, усредняемых</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="comment"> * @param mutation_amp Амплитуда мутации (в диапазоне 0.01.0)</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> * @param start_params Начальные параметры (в диапазоне 0.01.0)</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"> * @return 0 — если окей, </span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment"> * -1 — если ошибка</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00155" data-start="{" data-end="}">
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21"> 155</a></span>__STATIC_INLINE <span class="keywordtype">int</span> <a class="code hl_function" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21">EvolveOptimizer_Init</a>(<a class="code hl_struct" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a>* opt,</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> uint16_t n_params,</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> uint16_t n_cand,</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> uint16_t n_best,</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">float</span> mutation_amp,</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keywordtype">float</span>* start_params)</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span>{</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">if</span>((opt == NULL) || (start_params == NULL))</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">if</span>(n_params &gt; <a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee">EVOLVE_MAX_PARAMS</a>)</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8">n_params</a> = n_params;</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> <span class="keywordflow">if</span>(n_cand &gt; <a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a>)</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">n_cand</a> = n_cand;</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">if</span>(n_best &gt; <a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a>/2)</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6">n_best</a> = n_best;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">if</span>((mutation_amp &gt; 1) || (mutation_amp &lt; 0))</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">if</span>(mutation_amp &lt;= 0.001f)</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> mutation_amp = 0.001f; </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8">mutation_amp</a> = mutation_amp;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> uint32_t seed = <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="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor">#ifdef ADC1</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> seed += (ADC1-&gt;DR &amp; 0xFF);</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> srand(seed);</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> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_cand; i++) {</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">for</span> (uint16_t j = 0; j &lt; n_params; j++) {</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// Добавляем случайную мутацию вокруг стартового параметра</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordtype">float</span> base = start_params[j];</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordtype">float</span> inv_randmax = 1.0f / (float)RAND_MAX;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordtype">float</span> noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * mutation_amp;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[i][j] = base + noise;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[i][j] &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[i][j] = 0.0f;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[i][j] &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[i][j] = 1.0f;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> }</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[i] = 0.0f;</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> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">cand_index</a> = 0;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108">gen_index</a> = 0;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span>}</div>
</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </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">/**</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment"> * @brief Один шаг эволюционного оптимизатора.</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment"> * @param opt Указатель на структуру оптимизатора</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment"> * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры)</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> * @param loss Loss текущего кандидата</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment"> * @return 0 — если окей, </span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment"> * -1 — если ошибка</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment"> * @details</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment"> * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата.</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment"> * Если накоплено n_cand кандидатов, генерируется новое поколение.</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment"> * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment"> *</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment"> * На выходе params содержит параметры следующего кандидата для измерений.</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"> * @note Функция использует глобальную внутреннюю переменную для сортировки.</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment"> * Надо убедится что только один экземпляр функции запущен в момент времени</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00225" data-start="{" data-end="}">
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef"> 225</a></span>__STATIC_INLINE <span class="keywordtype">int</span> <a class="code hl_function" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef">EvolveOptimizer_Step</a>(<a class="code hl_struct" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a>* opt,</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordtype">float</span>* params,</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordtype">float</span> loss)</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> <span class="keywordflow">if</span>((opt == NULL) || (params == NULL))</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">return</span> -1;</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> uint16_t n_params = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8">n_params</a>; </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">if</span>(n_params &gt; <a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee">EVOLVE_MAX_PARAMS</a>)</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> -1; </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> uint16_t n_cand = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">n_cand</a>; </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">if</span>(n_cand &gt; <a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a>)</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">return</span> -1; </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> uint16_t n_best = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6">n_best</a>; </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">if</span>(n_best &gt; <a class="code hl_define" href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a>/2)</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> </div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordtype">float</span> mut = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8">mutation_amp</a>;</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">if</span>((mut &gt; 1) ||(mut &lt; 0))</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="comment">// 1. Сохраняем loss текущего кандидата</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">cand_index</a>] = loss;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">cand_index</a>++;</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">cand_index</a> &gt;= n_cand) {</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="comment">// 2. Сортируем текущее поколение по loss</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keywordflow">for</span>(uint16_t i = 0; i &lt; opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">n_cand</a>; i++)</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">sorted_idx</a>[i] = i;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> g_sort_opt = opt;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> qsort(opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">sorted_idx</a>, opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">n_cand</a>, <span class="keyword">sizeof</span>(uint16_t), cmp_idx);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> g_sort_opt = NULL;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="comment">// --- Адаптивная мутация в зависимости от Loss ---</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordtype">float</span> best_loss = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">sorted_idx</a>[0]];</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordtype">float</span> worst_loss = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">sorted_idx</a>[opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">n_cand</a> - 1]];</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordtype">float</span> diff = worst_loss - best_loss;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordtype">float</span> sum_loss = 0.0f;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_cand; i++)</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> sum_loss += opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[i];</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordtype">float</span> avg_loss = sum_loss / (float)n_cand;</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordtype">float</span> loss_ratio = (diff &gt; 0.0f) ? ((avg_loss - best_loss) / diff) : 0.5f;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordflow">if</span> (loss_ratio &lt; 0.0f) loss_ratio = 0.0f;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">if</span> (loss_ratio &gt; 1.0f) loss_ratio = 1.0f;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</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="keywordflow">if</span>(diff &lt; 0.0f) diff = 0.0f;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">if</span>(diff &gt; 1.0f) diff = 1.0f;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">stability</a> = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordflow">if</span>(opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">stability</a> &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">stability</a> = 0.0f;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordflow">if</span>(opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">stability</a> &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">stability</a> = 1.0f;</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="keywordtype">float</span> mut_pct = <a class="code hl_define" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6">EVOLVE_MUTATION_MIN_PCT</a> +</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> (<a class="code hl_define" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc">EVOLVE_MUTATION_MAX_PCT</a> - <a class="code hl_define" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6">EVOLVE_MUTATION_MIN_PCT</a>) * loss_ratio;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">float</span> adaptive_mut = mut * (mut_pct / 100.0f);</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">if</span> (adaptive_mut &lt; 0.0001f) adaptive_mut = 0.0001f;</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727">gen_mut</a> = adaptive_mut;</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> </div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="comment">// 3. Генерируем новое поколение</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> uint16_t n_elite = <a class="code hl_define" href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">ELOVLE_N_ELITE_CANDIDATE</a>;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">for</span> (uint16_t c = 0; c &lt; n_cand; c++) {</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keywordflow">if</span> (c &lt; n_elite) {</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_params; i++)</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[c][i] = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">sorted_idx</a>[c]][i];</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[c] = 0.0f;</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_params; i++) {</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordtype">float</span> inv_randmax = 1.0f / (float)RAND_MAX;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordtype">float</span> noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * adaptive_mut;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> uint16_t parent = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">sorted_idx</a>[rand() % opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6">n_best</a>];</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[c][i] = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[parent][i] + noise;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[c][i] &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[c][i] = 0.0f;</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[c][i] &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[c][i] = 1.0f;</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> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">loss</a>[c] = 0.0f;</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</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> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">cand_index</a> = 0;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108">gen_index</a>++;</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> }</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="comment">// 4. Возвращаем параметры следующего кандидата</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8">n_params</a>; i++)</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> params[i] = opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">candidates</a>[opt-&gt;<a class="code hl_variable" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">cand_index</a>][i];</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span>}</div>
</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="preprocessor">#else </span><span class="comment">// ENABLE_EVOLVE_OPTIMIZATION</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="comment">//заглушки</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> uint16_t n_params; </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> uint16_t n_cand; </div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> uint16_t n_best; </div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">float</span> mutation_amp; </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordtype">float</span> loss[0]; </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordtype">float</span> candidates[0][0]; </div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span>} <a class="code hl_struct" href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a>;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span><span class="preprocessor">#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="preprocessor">#define EvolveOptimizer_Step(opt, params, LossFunc)</span></div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="preprocessor">#define PARAM_SCALE(x, min_val, max_val) (x)</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span><span class="preprocessor">#define PARAM_UNSCALE(val, min_val, max_val) (val)</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span><span class="preprocessor">#endif </span><span class="comment">// ENABLE_EVOLVE_OPTIMIZATION</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> </div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span><span class="preprocessor">#endif </span><span class="comment">// __EVOLVE_OPTIMIZER_H_</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span><span class="comment"></span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="comment">/** EVOLVE_OPTIMIZER</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span><span class="comment"> */</span></div>
<div class="ttc" id="agroup___e_v_o_l_v_e___c_o_n_f_i_g_html_ga7c1396e5c95c766afccdb45cbfcf5971"><div class="ttname"><a href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971">EVOLVE_MAX_CANDIDATES</a></div><div class="ttdeci">#define EVOLVE_MAX_CANDIDATES</div><div class="ttdoc">Максимальное количество кандидатов для обучения</div><div class="ttdef"><b>Definition</b> <a href="mylibs__config_8h_source.html#l00066">mylibs_config.h:66</a></div></div>
<div class="ttc" id="agroup___e_v_o_l_v_e___c_o_n_f_i_g_html_ga80d6162495fc3776d8902610657d4fee"><div class="ttname"><a href="group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee">EVOLVE_MAX_PARAMS</a></div><div class="ttdeci">#define EVOLVE_MAX_PARAMS</div><div class="ttdoc">Максимальное количество параметров</div><div class="ttdef"><b>Definition</b> <a href="mylibs__config_8h_source.html#l00065">mylibs_config.h:65</a></div></div>
<div class="ttc" id="agroup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_html_ga2f2b1be34ad4eb1bf3267237200cd6c6"><div class="ttname"><a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6">EVOLVE_MUTATION_MIN_PCT</a></div><div class="ttdeci">#define EVOLVE_MUTATION_MIN_PCT</div><div class="ttdoc">Минимальная мутация (в процентах от Loss)</div><div class="ttdef"><b>Definition</b> <a href="#l00089">evolve_optimizer.h:89</a></div></div>
<div class="ttc" id="agroup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_html_ga38607e23d9234524bc7de5869b15b8eb"><div class="ttname"><a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">ELOVLE_N_ELITE_CANDIDATE</a></div><div class="ttdeci">#define ELOVLE_N_ELITE_CANDIDATE</div><div class="ttdoc">Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)</div><div class="ttdef"><b>Definition</b> <a href="#l00095">evolve_optimizer.h:95</a></div></div>
<div class="ttc" id="agroup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_html_ga4e3ea118b5b9068619c57724a925ba21"><div class="ttname"><a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21">EvolveOptimizer_Init</a></div><div class="ttdeci">__STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)</div><div class="ttdoc">Инициализация эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="#l00155">evolve_optimizer.h:155</a></div></div>
<div class="ttc" id="agroup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_html_ga861c1c6a503c21441abcec0d57b848bc"><div class="ttname"><a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc">EVOLVE_MUTATION_MAX_PCT</a></div><div class="ttdeci">#define EVOLVE_MUTATION_MAX_PCT</div><div class="ttdoc">Максимальная мутация (в процентах от Loss)</div><div class="ttdef"><b>Definition</b> <a href="#l00092">evolve_optimizer.h:92</a></div></div>
<div class="ttc" id="agroup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_html_gaef44a1f3298514569cc2b396a92101ef"><div class="ttname"><a href="group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef">EvolveOptimizer_Step</a></div><div class="ttdeci">__STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t *opt, float *params, float loss)</div><div class="ttdoc">Один шаг эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="#l00225">evolve_optimizer.h:225</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="amylibs__defs_8h_html"><div class="ttname"><a href="mylibs__defs_8h.html">mylibs_defs.h</a></div><div class="ttdoc">Заголочный файл для дефайнов библиотеки MyLibsGeneral.</div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html"><div class="ttname"><a href="struct_evolve_optimizer__t.html">EvolveOptimizer_t</a></div><div class="ttdoc">Структура эволюционного оптимизатора</div><div class="ttdef"><b>Definition</b> <a href="#l00102">evolve_optimizer.h:102</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_a0ae0e63ba351335d4445d927991c64ae"><div class="ttname"><a href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">EvolveOptimizer_t::cand_index</a></div><div class="ttdeci">uint16_t cand_index</div><div class="ttdoc">Индекс кандидата для обработки</div><div class="ttdef"><b>Definition</b> <a href="#l00110">evolve_optimizer.h:110</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_a1c270fce82e0c97e6c88fd0971c1eed8"><div class="ttname"><a href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8">EvolveOptimizer_t::n_params</a></div><div class="ttdeci">uint16_t n_params</div><div class="ttdoc">Количество параметров</div><div class="ttdef"><b>Definition</b> <a href="#l00105">evolve_optimizer.h:105</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_a3be8c0c34db8429210ff470497a56727"><div class="ttname"><a href="struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727">EvolveOptimizer_t::gen_mut</a></div><div class="ttdeci">float gen_mut</div><div class="ttdoc">Амплитуда мутации у текущей популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00114">evolve_optimizer.h:114</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_a74b81df1c298c99162310f3f7d91735a"><div class="ttname"><a href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">EvolveOptimizer_t::sorted_idx</a></div><div class="ttdeci">uint16_t sorted_idx[100]</div><div class="ttdoc">Индексы отсортированных кандидатов</div><div class="ttdef"><b>Definition</b> <a href="#l00118">evolve_optimizer.h:118</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_a80eb0b8525b6bb838484f5922b9d8f7c"><div class="ttname"><a href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">EvolveOptimizer_t::stability</a></div><div class="ttdeci">float stability</div><div class="ttdoc">Коэффициент насколько стабильная популяция (0..1)(n_cand)</div><div class="ttdef"><b>Definition</b> <a href="#l00103">evolve_optimizer.h:103</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_a93f628397c2f8d4027f2906752b650df"><div class="ttname"><a href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">EvolveOptimizer_t::loss</a></div><div class="ttdeci">float loss[100]</div><div class="ttdoc">Loss для каждого кандидата</div><div class="ttdef"><b>Definition</b> <a href="#l00116">evolve_optimizer.h:116</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_a950cd70cb6bff33b78ad35ee58c729a6"><div class="ttname"><a href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6">EvolveOptimizer_t::n_best</a></div><div class="ttdeci">uint16_t n_best</div><div class="ttdoc">Количество лучших, усредняемых</div><div class="ttdef"><b>Definition</b> <a href="#l00107">evolve_optimizer.h:107</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_ac35c7ca8cede4ab9c53a2845a91cd1b1"><div class="ttname"><a href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">EvolveOptimizer_t::n_cand</a></div><div class="ttdeci">uint16_t n_cand</div><div class="ttdoc">Количество кандидатов в популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00106">evolve_optimizer.h:106</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_ad0f464d7048a9ed0753b61f76f563108"><div class="ttname"><a href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108">EvolveOptimizer_t::gen_index</a></div><div class="ttdeci">uint16_t gen_index</div><div class="ttdoc">Индекс популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00111">evolve_optimizer.h:111</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_aec67667fd1f1533e693e41c79bc28da4"><div class="ttname"><a href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">EvolveOptimizer_t::candidates</a></div><div class="ttdeci">float candidates[100][20]</div><div class="ttdoc">Параметры кандидатов</div><div class="ttdef"><b>Definition</b> <a href="#l00117">evolve_optimizer.h:117</a></div></div>
<div class="ttc" id="astruct_evolve_optimizer__t_html_af779c7aeba0053e36cee7aade160f1c8"><div class="ttname"><a href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8">EvolveOptimizer_t::mutation_amp</a></div><div class="ttdeci">float mutation_amp</div><div class="ttdoc">Амплитуда мутации (0..1)</div><div class="ttdef"><b>Definition</b> <a href="#l00108">evolve_optimizer.h:108</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="evolve__optimizer_8h.html">evolve_optimizer.h</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>

View File

@ -1,116 +0,0 @@
<!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: Examples</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('examples.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">Examples</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all examples:</div><ul>
<li><a class="el" href="_s_p_i__usage__example-example.html">SPI_Usage_Example</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,4 +0,0 @@
var examples =
[
[ "SPI_Usage_Example", "_s_p_i__usage__example-example.html", null ]
];

View File

@ -1,138 +0,0 @@
<!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: File List</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('files.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">File List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="dynsection.toggleFolder('0_')"><span class="arrowhead opened"></span></span><span id="img_0_" class="iconfolder" onclick="dynsection.toggleFolder('0_')"><div class="folder-icon open"></div></span><a class="el" href="dir_9e11e9a41112194af3eee6cc728f9515.html" target="_self">MyLibsGeneral</a></td><td class="desc"></td></tr>
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="dynsection.toggleFolder('0_0_')"><span class="arrowhead opened"></span></span><span id="img_0_0_" class="iconfolder" onclick="dynsection.toggleFolder('0_0_')"><div class="folder-icon open"></div></span><a class="el" href="dir_eb423fea8a9c4b9b32b922020ec391e1.html" target="_self">Inc</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="____general__flash_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>__general_flash.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="bit__access_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="bit__access_8h.html" target="_self">bit_access.h</a></td><td class="desc">Заголочный файл для дефайнов битового доступа </td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="evolve__optimizer_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="evolve__optimizer_8h.html" target="_self">evolve_optimizer.h</a></td><td class="desc">Заголовочный файл для адаптивного подбора параметров </td></tr>
<tr id="row_0_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__gpio_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__gpio_8h.html" target="_self">general_gpio.h</a></td><td class="desc">Заголовочный файл для модуля инициализации портов и работы с ними </td></tr>
<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__spi_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__spi_8h.html" target="_self">general_spi.h</a></td><td class="desc">Заголовочный файл для модуля инициализации SPI </td></tr>
<tr id="row_0_0_5_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__tim_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__tim_8h.html" target="_self">general_tim.h</a></td><td class="desc">Заголовочный файл для модуля инициализации таймеров и работы с ними </td></tr>
<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__uart_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__uart_8h.html" target="_self">general_uart.h</a></td><td class="desc">Заголовочный файл для модуля инициализации UART </td></tr>
<tr id="row_0_0_7_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="mylibs__config_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="mylibs__config_8h.html" target="_self">mylibs_config.h</a></td><td class="desc">Конфигурации для библиотек MyLibs </td></tr>
<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="mylibs__defs_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="mylibs__defs_8h.html" target="_self">mylibs_defs.h</a></td><td class="desc">Заголочный файл для дефайнов библиотеки MyLibsGeneral </td></tr>
<tr id="row_0_0_9_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="mylibs__include_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="mylibs__include_8h.html" target="_self">mylibs_include.h</a></td><td class="desc">Заголочный файл для всех библиотек </td></tr>
<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="trace_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="trace_8h.html" target="_self">trace.h</a></td><td class="desc">Заголочный файл для работы с трассировкой </td></tr>
<tr id="row_0_0_11_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="trackers_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="trackers_8h.html" target="_self">trackers.h</a></td><td class="desc">Заголочный файл для работы с трекерами <a class="el" href="group___t_r_a_c_k_e_r_s.html">Trackers defines</a> </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="dynsection.toggleFolder('0_1_')"><span class="arrowhead opened"></span></span><span id="img_0_1_" class="iconfolder" onclick="dynsection.toggleFolder('0_1_')"><div class="folder-icon open"></div></span><a class="el" href="dir_9c80311a018e1f8cfb6659b73d634be4.html" target="_self">Src</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="____general__flash_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>__general_flash.c</b></td><td class="desc"></td></tr>
<tr id="row_0_1_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__gpio_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__gpio_8c.html" target="_self">general_gpio.c</a></td><td class="desc">Модуль для инициализации портов и работы с ними </td></tr>
<tr id="row_0_1_2_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__spi_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__spi_8c.html" target="_self">general_spi.c</a></td><td class="desc">Модуль для инициализации SPI </td></tr>
<tr id="row_0_1_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__tim_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__tim_8c.html" target="_self">general_tim.c</a></td><td class="desc">Модуль для инициализации таймеров и работы с ними </td></tr>
<tr id="row_0_1_4_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__uart_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__uart_8c.html" target="_self">general_uart.c</a></td><td class="desc">Модуль для инициализации UART </td></tr>
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="mainpage_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>mainpage.h</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,4 +0,0 @@
var files_dup =
[
[ "MyLibsGeneral", "dir_9e11e9a41112194af3eee6cc728f9515.html", "dir_9e11e9a41112194af3eee6cc728f9515" ]
];

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2;">
<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
</g>
<g style="fill:#D8DFEE;stroke-width:0;">
<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5;">
<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0;">
<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2;">
<path
d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"
id="path2" />
</g>
<g style="fill:#D8DFEE;stroke-width:0;">
<path
d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z"
id="path199" /><path
d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z"
id="path201" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5;">
<path d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0;">
<path d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z" />
<path d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -1,223 +0,0 @@
<!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: Class Members</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('functions.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="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div>
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>cand_index&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">EvolveOptimizer_t</a></li>
<li>candidates&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">EvolveOptimizer_t</a></li>
<li>CLK_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">SPI_SettingsTypeDef</a></li>
<li>CLK_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">SPI_SettingsTypeDef</a></li>
<li>CLK_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">SPI_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a">RTT_FlashHeader_t</a></li>
<li>DMA_CHANNEL_X&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19">UART_SettingsTypeDef</a></li>
<li>DMAChannel&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>Encoder_Diff&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3">TIM_EncoderTypeDef</a></li>
<li>Encoder_Shdw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2">TIM_EncoderTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>gen_index&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108">EvolveOptimizer_t</a></li>
<li>gen_mut&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727">EvolveOptimizer_t</a></li>
<li>GPIO_PIN_RX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49">UART_SettingsTypeDef</a></li>
<li>GPIO_PIN_SW&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI1&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI2&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef">UART_SettingsTypeDef</a></li>
<li>GPIOx&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">TIM_EncoderTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>hspi&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">SPI_SettingsTypeDef</a></li>
<li>htim&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">TIM_EncoderTypeDef</a>, <a class="el" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">TIM_SettingsTypeDef</a></li>
<li>huart&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>LED_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">GPIO_LEDTypeDef</a></li>
<li>LED_Period&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">GPIO_LEDTypeDef</a></li>
<li>LED_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">GPIO_LEDTypeDef</a></li>
<li>LED_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">GPIO_LEDTypeDef</a></li>
<li>loss&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">EvolveOptimizer_t</a></li>
<li>lr&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577">HF_StackFrame_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>MISO_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">SPI_SettingsTypeDef</a></li>
<li>MISO_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">SPI_SettingsTypeDef</a></li>
<li>MISO_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">SPI_SettingsTypeDef</a></li>
<li>MOSI_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">SPI_SettingsTypeDef</a></li>
<li>mutation_amp&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8">EvolveOptimizer_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_n" name="index_n"></a>- n -</h3><ul>
<li>n_best&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6">EvolveOptimizer_t</a></li>
<li>n_cand&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">EvolveOptimizer_t</a></li>
<li>n_params&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8">EvolveOptimizer_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>pc&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732">HF_StackFrame_t</a></li>
<li>psr&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9">HF_StackFrame_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>r0&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413">HF_StackFrame_t</a></li>
<li>r1&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea">HF_StackFrame_t</a></li>
<li>r12&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b">HF_StackFrame_t</a></li>
<li>r2&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b">HF_StackFrame_t</a></li>
<li>r3&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3">HF_StackFrame_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>sBreakDeadTimeConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7">TIM_SettingsTypeDef</a></li>
<li>sClockSourceConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">TIM_SettingsTypeDef</a></li>
<li>sConfig&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5">TIM_EncoderTypeDef</a></li>
<li>size&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699">RTT_FlashHeader_t</a></li>
<li>sMasterConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21">TIM_SettingsTypeDef</a></li>
<li>sorted_idx&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">EvolveOptimizer_t</a></li>
<li>sSlaveConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969">TIM_SettingsTypeDef</a></li>
<li>stability&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">EvolveOptimizer_t</a></li>
<li>state&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">GPIO_LEDTypeDef</a></li>
<li>sTickBasePrescaler&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">TIM_SettingsTypeDef</a></li>
<li>sTickBaseUS&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">TIM_SettingsTypeDef</a></li>
<li>sTimAHBFreqMHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">TIM_SettingsTypeDef</a></li>
<li>sTimFreqHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">TIM_SettingsTypeDef</a></li>
<li>sTimMode&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0">TIM_SettingsTypeDef</a></li>
<li>Sw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45">TIM_EncoderTypeDef</a></li>
<li>Sw_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">GPIO_SwitchTypeDef</a></li>
<li>Sw_FilterDelay&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">GPIO_SwitchTypeDef</a></li>
<li>Sw_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">GPIO_SwitchTypeDef</a></li>
<li>Sw_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">GPIO_SwitchTypeDef</a></li>
<li>Sw_PrevState&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">GPIO_SwitchTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_t" name="index_t"></a>- t -</h3><ul>
<li>tag&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57">RTT_FlashHeader_t</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,223 +0,0 @@
<!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: Class Members - Variables</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('functions_vars.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="contents">
<div class="textblock">Here is a list of all documented variables with links to the class documentation for each member:</div>
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>cand_index&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae">EvolveOptimizer_t</a></li>
<li>candidates&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4">EvolveOptimizer_t</a></li>
<li>CLK_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">SPI_SettingsTypeDef</a></li>
<li>CLK_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">SPI_SettingsTypeDef</a></li>
<li>CLK_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">SPI_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a">RTT_FlashHeader_t</a></li>
<li>DMA_CHANNEL_X&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19">UART_SettingsTypeDef</a></li>
<li>DMAChannel&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>Encoder_Diff&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3">TIM_EncoderTypeDef</a></li>
<li>Encoder_Shdw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2">TIM_EncoderTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>gen_index&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108">EvolveOptimizer_t</a></li>
<li>gen_mut&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727">EvolveOptimizer_t</a></li>
<li>GPIO_PIN_RX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49">UART_SettingsTypeDef</a></li>
<li>GPIO_PIN_SW&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI1&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI2&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef">UART_SettingsTypeDef</a></li>
<li>GPIOx&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">TIM_EncoderTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>hspi&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">SPI_SettingsTypeDef</a></li>
<li>htim&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">TIM_EncoderTypeDef</a>, <a class="el" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">TIM_SettingsTypeDef</a></li>
<li>huart&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>LED_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">GPIO_LEDTypeDef</a></li>
<li>LED_Period&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">GPIO_LEDTypeDef</a></li>
<li>LED_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">GPIO_LEDTypeDef</a></li>
<li>LED_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">GPIO_LEDTypeDef</a></li>
<li>loss&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df">EvolveOptimizer_t</a></li>
<li>lr&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577">HF_StackFrame_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>MISO_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">SPI_SettingsTypeDef</a></li>
<li>MISO_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">SPI_SettingsTypeDef</a></li>
<li>MISO_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">SPI_SettingsTypeDef</a></li>
<li>MOSI_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">SPI_SettingsTypeDef</a></li>
<li>mutation_amp&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8">EvolveOptimizer_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_n" name="index_n"></a>- n -</h3><ul>
<li>n_best&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6">EvolveOptimizer_t</a></li>
<li>n_cand&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1">EvolveOptimizer_t</a></li>
<li>n_params&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8">EvolveOptimizer_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>pc&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732">HF_StackFrame_t</a></li>
<li>psr&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9">HF_StackFrame_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>r0&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413">HF_StackFrame_t</a></li>
<li>r1&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea">HF_StackFrame_t</a></li>
<li>r12&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b">HF_StackFrame_t</a></li>
<li>r2&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b">HF_StackFrame_t</a></li>
<li>r3&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3">HF_StackFrame_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>sBreakDeadTimeConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7">TIM_SettingsTypeDef</a></li>
<li>sClockSourceConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">TIM_SettingsTypeDef</a></li>
<li>sConfig&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5">TIM_EncoderTypeDef</a></li>
<li>size&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699">RTT_FlashHeader_t</a></li>
<li>sMasterConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21">TIM_SettingsTypeDef</a></li>
<li>sorted_idx&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a">EvolveOptimizer_t</a></li>
<li>sSlaveConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969">TIM_SettingsTypeDef</a></li>
<li>stability&#160;:&#160;<a class="el" href="struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c">EvolveOptimizer_t</a></li>
<li>state&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">GPIO_LEDTypeDef</a></li>
<li>sTickBasePrescaler&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">TIM_SettingsTypeDef</a></li>
<li>sTickBaseUS&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">TIM_SettingsTypeDef</a></li>
<li>sTimAHBFreqMHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">TIM_SettingsTypeDef</a></li>
<li>sTimFreqHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">TIM_SettingsTypeDef</a></li>
<li>sTimMode&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0">TIM_SettingsTypeDef</a></li>
<li>Sw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45">TIM_EncoderTypeDef</a></li>
<li>Sw_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">GPIO_SwitchTypeDef</a></li>
<li>Sw_FilterDelay&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">GPIO_SwitchTypeDef</a></li>
<li>Sw_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">GPIO_SwitchTypeDef</a></li>
<li>Sw_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">GPIO_SwitchTypeDef</a></li>
<li>Sw_PrevState&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">GPIO_SwitchTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_t" name="index_t"></a>- t -</h3><ul>
<li>tag&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57">RTT_FlashHeader_t</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,178 +0,0 @@
<!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 File Reference</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.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 File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Модуль для инициализации портов и работы с ними.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="general__gpio_8h_source.html">general_gpio.h</a>&quot;</code><br />
</div><div class="textblock"><div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Include dependency graph for general_gpio.c:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="general__gpio_8c__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__gpio_8c" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__gpio_8c" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__gpio_8c">
<area shape="rect" title="Модуль для инициализации портов и работы с ними." alt="" coords="5,5,204,64"/>
<area shape="rect" href="general__gpio_8h.html" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="52,112,157,139"/>
<area shape="poly" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,187,156,213"/>
<area shape="poly" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,261,161,288"/>
<area shape="poly" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
<area shape="rect" title=" " alt="" coords="46,336,163,363"/>
<area shape="poly" title=" " alt="" coords="107,289,107,320,102,320,102,289"/>
</map>
</div>
</div>
<p><a href="general__gpio_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga962f010f783b81fcdd27eb6b53db28e6" id="r_ga962f010f783b81fcdd27eb6b53db28e6"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:ga962f010f783b81fcdd27eb6b53db28e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить тактирование порта GPIO. <br /></td></tr>
<tr class="memitem:gac936453c7a0841c0b17bcfdae4958084" id="r_gac936453c7a0841c0b17bcfdae4958084"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">GPIO_LED_Init</a> (<a class="el" 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)</td></tr>
<tr class="memdesc:gac936453c7a0841c0b17bcfdae4958084"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализировать светодиод (структуру светодиода) <br /></td></tr>
<tr class="memitem:ga4b9572949326b050694cd55d0a7e5f6c" id="r_ga4b9572949326b050694cd55d0a7e5f6c"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a> (<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</td></tr>
<tr class="memdesc:ga4b9572949326b050694cd55d0a7e5f6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить светодиод <br /></td></tr>
<tr class="memitem:gaadda2d4f021390a4e392210a5ace5357" id="r_gaadda2d4f021390a4e392210a5ace5357"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">GPIO_LED_Off</a> (<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</td></tr>
<tr class="memdesc:gaadda2d4f021390a4e392210a5ace5357"><td class="mdescLeft">&#160;</td><td class="mdescRight">Выключить светодиод <br /></td></tr>
<tr class="memitem:gae78b570447d55a462a679a89dbaa8ea2" id="r_gae78b570447d55a462a679a89dbaa8ea2"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2">GPIO_LED_Set</a> (<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint8_t led_state)</td></tr>
<tr class="memdesc:gae78b570447d55a462a679a89dbaa8ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Выставить светодиод по переменной <br /></td></tr>
<tr class="memitem:gaf22f44ecaf6a1932b47edc5a845b03a9" id="r_gaf22f44ecaf6a1932b47edc5a845b03a9"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint32_t period)</td></tr>
<tr class="memdesc:gaf22f44ecaf6a1932b47edc5a845b03a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Активировать моргание светодиодом <br /></td></tr>
<tr class="memitem:gaa00f20021781464af3dfe74aa3e59a0a" id="r_gaa00f20021781464af3dfe74aa3e59a0a"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint32_t period)</td></tr>
<tr class="memdesc:gaa00f20021781464af3dfe74aa3e59a0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Активировать моргание светодиодом <br /></td></tr>
<tr class="memitem:gad6e6189824406c4d472b6340c7f19bb2" id="r_gad6e6189824406c4d472b6340c7f19bb2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</td></tr>
<tr class="memdesc:gad6e6189824406c4d472b6340c7f19bb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Управление динамическими режимами свечения светодиода <br /></td></tr>
<tr class="memitem:gacafee0e68877f2b25df843356871d1f7" id="r_gacafee0e68877f2b25df843356871d1f7"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" 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)</td></tr>
<tr class="memdesc:gacafee0e68877f2b25df843356871d1f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализировать кнопку (структуру кнопки) <br /></td></tr>
<tr class="memitem:ga960b24335b2026abcad126ab8c422d70" id="r_ga960b24335b2026abcad126ab8c422d70"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a> *sw)</td></tr>
<tr class="memdesc:ga960b24335b2026abcad126ab8c422d70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Считать состоянии кнопки <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Модуль для инициализации портов и работы с ними. </p>
<p>Реализация функций для работы с GPIO:</p><ul>
<li>Включение тактирования портов</li>
<li>Инициализация светодиодов и кнопок</li>
<li>Управление светодиодами: включение, выключение, моргание, плавное затухание</li>
<li>Чтение состояния кнопок с фильтром от дребезга </li>
</ul>
<p class="definition">Definition in file <a class="el" href="general__gpio_8c_source.html">general_gpio.c</a>.</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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>

View File

@ -1,13 +0,0 @@
var general__gpio_8c =
[
[ "GPIO_Clock_Enable", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6", null ],
[ "GPIO_LED_Init", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084", null ],
[ "GPIO_LED_On", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c", null ],
[ "GPIO_LED_Off", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357", null ],
[ "GPIO_LED_Set", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2", null ],
[ "GPIO_LED_Blink_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9", null ],
[ "GPIO_LED_Fading_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a", null ],
[ "GPIO_LED_Dynamic_Handle", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2", null ],
[ "GPIO_Switch_Init", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ],
[ "GPIO_Read_Switch", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70", null ]
];

View File

@ -1,11 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_gpio.c" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_gpio.c">
<area shape="rect" id="Node000001" title="Модуль для инициализации портов и работы с ними." alt="" coords="5,5,204,64"/>
<area shape="rect" id="Node000002" href="$general__gpio_8h.html" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="52,112,157,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" id="Node000003" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,187,156,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" id="Node000004" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,261,161,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="46,336,163,363"/>
<area shape="poly" id="edge4_Node000004_Node000005" title=" " alt="" coords="107,289,107,320,102,320,102,289"/>
</map>

View File

@ -1 +0,0 @@
6e517891df2cdbcb0824fafba9ac3005

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -1,491 +0,0 @@
<!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>

View File

@ -1,221 +0,0 @@
<!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/Inc/general_gpio.h File Reference</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_8h.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.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Заголовочный файл для модуля инициализации портов и работы с ними.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>&quot;</code><br />
</div><div class="textblock"><div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Include dependency graph for general_gpio.h:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="general__gpio_8h__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__gpio_8h" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__gpio_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__gpio_8h">
<area shape="rect" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="5,5,204,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,112,156,139"/>
<area shape="poly" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,187,161,213"/>
<area shape="poly" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" title=" " alt="" coords="46,261,163,288"/>
<area shape="poly" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
</map>
</div>
</div><div class="textblock"><div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>This graph shows which files directly or indirectly include this file:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="general__gpio_8h__dep__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__gpio_8hdep" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__gpio_8hdep" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__gpio_8hdep">
<area shape="rect" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="364,5,562,64"/>
<area shape="rect" href="general__tim_8h.html" title="Заголовочный файл для модуля инициализации таймеров и работы с ними." alt="" coords="141,112,340,171"/>
<area shape="poly" title=" " alt="" coords="390,73,303,114,301,109,388,68"/>
<area shape="rect" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,219,204,277"/>
<area shape="poly" title=" " alt="" coords="349,51,284,62,220,76,166,93,146,103,132,114,116,137,108,165,104,219,99,218,102,164,111,135,128,110,143,99,164,88,218,70,283,57,348,46"/>
<area shape="rect" href="general__gpio_8c.html" title="Модуль для инициализации портов и работы с ними." alt="" coords="364,112,562,171"/>
<area shape="poly" title=" " alt="" coords="466,80,466,112,460,112,460,80"/>
<area shape="rect" href="general__spi_8c.html" title="Модуль для инициализации SPI." alt="" coords="587,112,785,171"/>
<area shape="poly" title=" " alt="" coords="539,68,626,109,624,114,536,73"/>
<area shape="rect" href="general__uart_8c.html" title="Модуль для инициализации UART." alt="" coords="809,112,1008,171"/>
<area shape="poly" title=" " alt="" coords="578,59,797,109,810,112,808,118,796,115,577,64"/>
<area shape="poly" title=" " alt="" coords="193,182,143,220,140,216,190,178"/>
<area shape="rect" href="general__tim_8c.html" title="Модуль для инициализации таймеров и работы с ними." alt="" coords="228,219,426,277"/>
<area shape="poly" title=" " alt="" coords="276,181,306,217,301,220,272,184"/>
</map>
</div>
</div>
<p><a href="general__gpio_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:GPIO_5FLEDTypeDef" id="r_GPIO_5FLEDTypeDef"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Структура светодиода <a href="struct_g_p_i_o___l_e_d_type_def.html#details">More...</a><br /></td></tr>
<tr class="memitem:GPIO_5FSwitchTypeDef" id="r_GPIO_5FSwitchTypeDef"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Структура кнопки <a href="struct_g_p_i_o___switch_type_def.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-define-members" class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga1d42e219765ec526d99e306638ac0023" id="r_ga1d42e219765ec526d99e306638ac0023"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">LED_PWM_TICKS</a>&#160;&#160;&#160;15</td></tr>
<tr class="memdesc:ga1d42e219765ec526d99e306638ac0023"><td class="mdescLeft">&#160;</td><td class="mdescRight">Количество тиков в периоде ШИМ <br /></td></tr>
<tr class="memitem:gaf2e697ac60e05813d45ea2c9c9e79c25" id="r_gaf2e697ac60e05813d45ea2c9c9e79c25"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25">LED_ON</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaf2e697ac60e05813d45ea2c9c9e79c25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Состояние пина для включения светодиода <br /></td></tr>
<tr class="memitem:ga80700bb63bd56ebabbb4728aa433fd29" id="r_ga80700bb63bd56ebabbb4728aa433fd29"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29">LED_OFF</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:ga80700bb63bd56ebabbb4728aa433fd29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Состояние пина для выключения светодиода <br /></td></tr>
<tr class="memitem:ga19d9e3aced311179a2914e0c9b13d0f9" id="r_ga19d9e3aced311179a2914e0c9b13d0f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9">SW_ON</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga19d9e3aced311179a2914e0c9b13d0f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Состояние пина при нажатой кнопке <br /></td></tr>
<tr class="memitem:gacd8900c9ec0efde1da3253b718574067" id="r_gacd8900c9ec0efde1da3253b718574067"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067">SW_OFF</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:gacd8900c9ec0efde1da3253b718574067"><td class="mdescLeft">&#160;</td><td class="mdescRight">Состояние пина при отжатой кнопке <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-enum-members" class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gaac2b90d8b8c9579b6aa5d3bbda9b1ff1" id="r_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1">GPIO_LEDStateTypeDef</a> { <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae">LED_IS_OFF</a> = 0
, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea">LED_IS_ON</a> = 1
, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb">LED_IS_BLINKING</a> = 2
, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b">LED_IS_FADING</a> = 3
}</td></tr>
<tr class="memdesc:gaac2b90d8b8c9579b6aa5d3bbda9b1ff1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Режимы работы светодиода <a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga962f010f783b81fcdd27eb6b53db28e6" id="r_ga962f010f783b81fcdd27eb6b53db28e6"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:ga962f010f783b81fcdd27eb6b53db28e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить тактирование порта GPIO. <br /></td></tr>
<tr class="memitem:gacafee0e68877f2b25df843356871d1f7" id="r_gacafee0e68877f2b25df843356871d1f7"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" 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_On_State)</td></tr>
<tr class="memdesc:gacafee0e68877f2b25df843356871d1f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализировать кнопку (структуру кнопки) <br /></td></tr>
<tr class="memitem:ga960b24335b2026abcad126ab8c422d70" id="r_ga960b24335b2026abcad126ab8c422d70"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a> *swstart)</td></tr>
<tr class="memdesc:ga960b24335b2026abcad126ab8c422d70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Считать состоянии кнопки <br /></td></tr>
<tr class="memitem:gac936453c7a0841c0b17bcfdae4958084" id="r_gac936453c7a0841c0b17bcfdae4958084"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">GPIO_LED_Init</a> (<a class="el" 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_On_State)</td></tr>
<tr class="memdesc:gac936453c7a0841c0b17bcfdae4958084"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализировать светодиод (структуру светодиода) <br /></td></tr>
<tr class="memitem:ga4b9572949326b050694cd55d0a7e5f6c" id="r_ga4b9572949326b050694cd55d0a7e5f6c"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a> (<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</td></tr>
<tr class="memdesc:ga4b9572949326b050694cd55d0a7e5f6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить светодиод <br /></td></tr>
<tr class="memitem:gaadda2d4f021390a4e392210a5ace5357" id="r_gaadda2d4f021390a4e392210a5ace5357"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">GPIO_LED_Off</a> (<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</td></tr>
<tr class="memdesc:gaadda2d4f021390a4e392210a5ace5357"><td class="mdescLeft">&#160;</td><td class="mdescRight">Выключить светодиод <br /></td></tr>
<tr class="memitem:gae78b570447d55a462a679a89dbaa8ea2" id="r_gae78b570447d55a462a679a89dbaa8ea2"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2">GPIO_LED_Set</a> (<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint8_t led_state)</td></tr>
<tr class="memdesc:gae78b570447d55a462a679a89dbaa8ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Выставить светодиод по переменной <br /></td></tr>
<tr class="memitem:gaf22f44ecaf6a1932b47edc5a845b03a9" id="r_gaf22f44ecaf6a1932b47edc5a845b03a9"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint32_t period)</td></tr>
<tr class="memdesc:gaf22f44ecaf6a1932b47edc5a845b03a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Активировать моргание светодиодом <br /></td></tr>
<tr class="memitem:gaa00f20021781464af3dfe74aa3e59a0a" id="r_gaa00f20021781464af3dfe74aa3e59a0a"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led, uint32_t period)</td></tr>
<tr class="memdesc:gaa00f20021781464af3dfe74aa3e59a0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Активировать моргание светодиодом <br /></td></tr>
<tr class="memitem:gad6e6189824406c4d472b6340c7f19bb2" id="r_gad6e6189824406c4d472b6340c7f19bb2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a> *led)</td></tr>
<tr class="memdesc:gad6e6189824406c4d472b6340c7f19bb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Управление динамическими режимами свечения светодиода <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Заголовочный файл для модуля инициализации портов и работы с ними. </p>
<p class="definition">Definition in file <a class="el" href="general__gpio_8h_source.html">general_gpio.h</a>.</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="general__gpio_8h.html">general_gpio.h</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>

View File

@ -1,24 +0,0 @@
var general__gpio_8h =
[
[ "LED_PWM_TICKS", "group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023", null ],
[ "LED_ON", "group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25", null ],
[ "LED_OFF", "group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29", null ],
[ "SW_ON", "group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9", null ],
[ "SW_OFF", "group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067", null ],
[ "GPIO_LEDStateTypeDef", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1", [
[ "LED_IS_OFF", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae", null ],
[ "LED_IS_ON", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea", null ],
[ "LED_IS_BLINKING", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb", null ],
[ "LED_IS_FADING", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b", null ]
] ],
[ "GPIO_Clock_Enable", "group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6", null ],
[ "GPIO_Switch_Init", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7", null ],
[ "GPIO_Read_Switch", "group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70", null ],
[ "GPIO_LED_Init", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084", null ],
[ "GPIO_LED_On", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c", null ],
[ "GPIO_LED_Off", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357", null ],
[ "GPIO_LED_Set", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2", null ],
[ "GPIO_LED_Blink_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9", null ],
[ "GPIO_LED_Fading_Start", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a", null ],
[ "GPIO_LED_Dynamic_Handle", "group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2", null ]
];

View File

@ -1,16 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="364,5,562,64"/>
<area shape="rect" id="Node000002" href="$general__tim_8h.html" title="Заголовочный файл для модуля инициализации таймеров и работы с ними." alt="" coords="141,112,340,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="390,73,303,114,301,109,388,68"/>
<area shape="rect" id="Node000003" href="$mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,219,204,277"/>
<area shape="poly" id="edge4_Node000001_Node000003" title=" " alt="" coords="349,51,284,62,220,76,166,93,146,103,132,114,116,137,108,165,104,219,99,218,102,164,111,135,128,110,143,99,164,88,218,70,283,57,348,46"/>
<area shape="rect" id="Node000005" href="$general__gpio_8c.html" title="Модуль для инициализации портов и работы с ними." alt="" coords="364,112,562,171"/>
<area shape="poly" id="edge5_Node000001_Node000005" title=" " alt="" coords="466,80,466,112,460,112,460,80"/>
<area shape="rect" id="Node000006" href="$general__spi_8c.html" title="Модуль для инициализации SPI." alt="" coords="587,112,785,171"/>
<area shape="poly" id="edge6_Node000001_Node000006" title=" " alt="" coords="539,68,626,109,624,114,536,73"/>
<area shape="rect" id="Node000007" href="$general__uart_8c.html" title="Модуль для инициализации UART." alt="" coords="809,112,1008,171"/>
<area shape="poly" id="edge7_Node000001_Node000007" title=" " alt="" coords="578,59,797,109,810,112,808,118,796,115,577,64"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="193,182,143,220,140,216,190,178"/>
<area shape="rect" id="Node000004" href="$general__tim_8c.html" title="Модуль для инициализации таймеров и работы с ними." alt="" coords="228,219,426,277"/>
<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="276,181,306,217,301,220,272,184"/>
</map>

View File

@ -1 +0,0 @@
f0505ab3694aaaff670ed9b2b0d44914

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,9 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="5,5,204,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,112,156,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" id="Node000003" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,187,161,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="46,261,163,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
</map>

View File

@ -1 +0,0 @@
64dafee7a8d3ae5fb443763ec7bc3400

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,385 +0,0 @@
<!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/Inc/general_gpio.h 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_8h_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.h</div></div>
</div><!--header-->
<div class="contents">
<a href="general__gpio_8h.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.h</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">* @defgroup MY_LIBS_GPIO GPIO Tools</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @ingroup MYLIBS_PERIPHERAL</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @brief Функции и макросы для удобной работы с GPIO.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* @details</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">Модуль предоставляет универсальные инструменты для работы с GPIO):</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> - @ref MYLIBS_GPIO_GENERAL — инициализация и общие функции работы с портами.</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> - @ref MYLIBS_GPIO_SWITCH — работа с GPIO как с кнопкой: чтение состояния, </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"> - @ref MYLIBS_GPIO_LEDS — работа с GPIO как со светодиодом: включение, </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"></span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">*************************************************************************/</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#ifndef __GPIO_GENERAL_H_</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#define __GPIO_GENERAL_H_</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"></span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/** </span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * @addtogroup GPIO_INIT Init defines</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * @ingroup MYLIBS_GPIO_GENERAL</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * @brief Настройка состояний кнопок и количества тиков в периоде ШИМ</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"> */</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#ifndef local_time</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#define local_time() HAL_GetTick() </span><span class="comment">///&lt; Локальное время</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#ifndef LED_PWM_TICKS</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023"> 35</a></span><span class="preprocessor">#define LED_PWM_TICKS 15 </span><span class="comment">///&lt; Количество тиков в периоде ШИМ</span></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> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#ifndef LED_ON</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25"> 39</a></span><span class="preprocessor">#define LED_ON 1 </span><span class="comment">///&lt; Состояние пина для включения светодиода</span></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">#ifndef LED_OFF</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29"> 42</a></span><span class="preprocessor">#define LED_OFF 0 </span><span class="comment">///&lt; Состояние пина для выключения светодиода</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#ifndef SW_ON</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9"> 46</a></span><span class="preprocessor">#define SW_ON 1 </span><span class="comment">///&lt; Состояние пина при нажатой кнопке</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#ifndef SW_OFF</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067"> 49</a></span><span class="preprocessor">#define SW_OFF 0 </span><span class="comment">///&lt; Состояние пина при отжатой кнопке</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"></span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/** GPIO_INIT</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment"> */</span></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="comment"></span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/**</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> * @brief Режимы работы светодиода</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> * @ingroup MYLIBS_GPIO_LEDS</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00061" data-start="{" data-end="};">
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1"> 61</a></span><span class="keyword">typedef</span> <span class="keyword">enum</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"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae"> 63</a></span> <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> = 0, <span class="comment">///&lt; Светодиод выключен</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea"> 64</a></span> <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> = 1, <span class="comment">///&lt; Светодиод включен</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb"> 65</a></span> <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> = 2, <span class="comment">///&lt; Моргание светодиодом</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b"> 66</a></span> <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> = 3, <span class="comment">///&lt; Плавное моргание светодиодом</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span>}<a class="code hl_enumeration" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1">GPIO_LEDStateTypeDef</a>;</div>
</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"></span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">/**</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * @brief Структура светодиода</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @ingroup MYLIBS_GPIO_LEDS</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="struct_g_p_i_o___l_e_d_type_def.html"> 73</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span></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"><a class="line" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435"> 75</a></span> <a class="code hl_enumeration" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1">GPIO_LEDStateTypeDef</a> <a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">state</a>; <span class="comment">///&lt; Текущий режим работы светодиода</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf"> 77</a></span> GPIO_TypeDef *<a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">LED_Port</a>; <span class="comment">///&lt; GPIO порт ножки светодиода</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978"> 78</a></span> uint32_t <a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">LED_Pin</a>; <span class="comment">///&lt; GPIO пин ножки светодиода</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816"> 80</a></span> uint8_t <a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">LED_ActiveLvl</a>; <span class="comment">///&lt; Активный уровень ножки (при котором светодиод горит)</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec"> 81</a></span> uint32_t <a class="code hl_variable" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">LED_Period</a>; <span class="comment">///&lt; Период моргания светодиода</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> uint32_t tickprev;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span>}<a class="code hl_struct" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a>;</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"> * @ingroup MYLIBS_GPIO_SWITCH</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00090" data-start="{" data-end="};">
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___switch_type_def.html"> 90</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span>{</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a"> 92</a></span> GPIO_TypeDef *<a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">Sw_Port</a>; <span class="comment">///&lt; GPIO порт ножки кнопки</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032"> 93</a></span> uint32_t <a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">Sw_Pin</a>; <span class="comment">///&lt; GPIO пин ножки кнопки</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"><a class="line" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405"> 95</a></span> uint8_t <a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">Sw_ActiveLvl</a>; <span class="comment">///&lt; Активный уровень ножки (при котором кнопка нажата)</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89"> 96</a></span> uint32_t <a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">Sw_PrevState</a>; <span class="comment">///&lt; Предыдущее состояние кнопки</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06"> 97</a></span> uint32_t <a class="code hl_variable" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">Sw_FilterDelay</a>; <span class="comment">///&lt; Фильтр от дребезга (в мс)</span></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> uint32_t tickprev; </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span>}<a class="code hl_struct" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a>;</div>
</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </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">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment">/** </span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"> * @addtogroup MYLIBS_GPIO_GENERAL General tools</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"> * @ingroup MY_LIBS_GPIO</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment"> * @brief Общие функции/макросы для работы с GPIO</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment"> * @par Пример использования:</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment"> @code</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment"> // Включаем тактирование порта GPIOA</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="comment"> GPIO_Clock_Enable(GPIOA);</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment"> @endcode</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment"> * @{</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"> */</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>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="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment"></span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment">/** MYLIBS_GPIO_GENERAL</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"> */</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"></span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment">/** </span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> * @addtogroup MYLIBS_GPIO_SWITCH Switch tools</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> * @ingroup MY_LIBS_GPIO</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> * @brief Функции для работы с GPIO, как с кнопкой</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"> * @par Пример использования:</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> @code</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"> MX_GPIO_Init(); // инициализация пина аппаратная</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> </span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> // Инициализация кнопки на порте GPIOB, пин 0, активный уровень 1</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> GPIO_SwitchTypeDef sw1;</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment"> GPIO_Switch_Init(&amp;sw1, GPIOB, GPIO_PIN_0, 1); // или дефайн SW_ON/SW_OFF</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"></span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"> // Считываем состояние кнопки</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"> if(GPIO_Read_Switch(&amp;sw1))</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment"> {</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment"> // Кнопка нажата</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment"> LED_ON();</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment"> }</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"> else</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> {</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> // Кнопка отжата</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> LED_OFF();</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> }</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> @endcode</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> * @{</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> */</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="comment">/* Инициализировать кнопку (структуру кнопки) */</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</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_On_State);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment">/* Считать состоянии кнопки запуска */</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</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> *swstart);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment"></span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment">/** MYLIBS_GPIO_SWITCH</span></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> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"></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"> * @addtogroup MYLIBS_GPIO_LEDS LED tools</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> * @ingroup MY_LIBS_GPIO</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment"> * @brief Функции для работы с GPIO, для управления светодиодом</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment"> * @par Пример использования:</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment"> @code</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="comment"> MX_GPIO_Init(); // инициализация пина аппаратная</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="comment"></span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="comment"> // Инициализация светодиода на порте GPIOA, пин 5, активный уровень 0</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="comment"> GPIO_LEDTypeDef led;</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="comment"> GPIO_LED_Init(&amp;led, GPIOA, GPIO_PIN_5, 0); // или дефайн LED_ON/LED_OFF</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment"></span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="comment"> // Включение светодиода</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="comment"> GPIO_LED_On(&amp;led);</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment"></span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="comment"> // Запуск моргания</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment"> GPIO_LED_Blink_Start(&amp;led, 500); // Период 500 мс</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"> // В основном цикле</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="comment"> while (1) {</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="comment"> GPIO_LED_Dynamic_Handle(&amp;led);</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"> @endcode</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="comment"> * @{</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="comment"> */</span></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">/* Инициализировать светодиод (структуру светодиода) */</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</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_On_State);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="comment">/* Включить светодиод */</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</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="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="comment">/* Выключить светодиод */</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</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="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="comment">/* Выставить светодиод по переменной */</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</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="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="comment">/* Активировать моргание светодиодом */</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</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="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_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="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="comment">/* Управление динамическими режимами свечения светодиода */</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</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="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="comment"></span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="comment">/** MYLIBS_GPIO_LEDS</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="comment"> */</span><span class="comment"></span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> </div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="comment"></span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="comment">/** </span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="comment"> * @cond GPIO_INTERNAL</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment"> */</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment">// /**</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment">// * @brief Маппинг альтернативной функции SPI между GPIO</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment">// * @ingroup MYLIBS_GPIO_GENERAL</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment">// */</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment">// #define SPI_Alternate_Mapping(INSTANCE) \</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment">// ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment">// (((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment">// (((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment">// (((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment">// (0))</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"></span> </div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment">/**</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> * @brief Маппинг альтернативной функции TIM между GPIO</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment"> * @ingroup MYLIBS_GPIO_GENERAL</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="comment"> */</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="preprocessor">#define GPIO_TIM_Alternate_Mapping(INSTANCE) \</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="preprocessor">((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="preprocessor">(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor">(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="preprocessor">(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="preprocessor">(0))</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="comment"></span> </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="comment">/** @endcond */</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="preprocessor">#endif </span><span class="comment">// __GPIO_GENERAL_H_</span></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___l_e_d_s_html_ga4b9572949326b050694cd55d0a7e5f6c"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">GPIO_LED_On</a></div><div class="ttdeci">HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)</div><div class="ttdoc">Включить светодиод</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00091">general_gpio.c:91</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_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="general__gpio_8c_source.html#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_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1">GPIO_LEDStateTypeDef</a></div><div class="ttdeci">GPIO_LEDStateTypeDef</div><div class="ttdoc">Режимы работы светодиода</div><div class="ttdef"><b>Definition</b> <a href="#l00061">general_gpio.h:62</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="general__gpio_8c_source.html#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_On_State)</div><div class="ttdoc">Инициализировать светодиод (структуру светодиода)</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00073">general_gpio.c:73</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_gad6e6189824406c4d472b6340c7f19bb2"><div class="ttname"><a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2">GPIO_LED_Dynamic_Handle</a></div><div class="ttdeci">void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)</div><div class="ttdoc">Управление динамическими режимами свечения светодиода</div><div class="ttdef"><b>Definition</b> <a href="general__gpio_8c_source.html#l00184">general_gpio.c:184</a></div></div>
<div class="ttc" id="agroup___m_y_l_i_b_s___g_p_i_o___l_e_d_s_html_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="general__gpio_8c_source.html#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="general__gpio_8c_source.html#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="#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="#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="#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="#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 *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="amylibs__defs_8h_html"><div class="ttname"><a href="mylibs__defs_8h.html">mylibs_defs.h</a></div><div class="ttdoc">Заголочный файл для дефайнов библиотеки MyLibsGeneral.</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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="general__gpio_8h.html">general_gpio.h</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>

View File

@ -1,233 +0,0 @@
<!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_spi.c File Reference</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__spi_8c.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_spi.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Модуль для инициализации SPI.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="general__spi_8h_source.html">general_spi.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="general__gpio_8h_source.html">general_gpio.h</a>&quot;</code><br />
</div><div class="textblock"><div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Include dependency graph for general_spi.c:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="general__spi_8c__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__spi_8c" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__spi_8c" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__spi_8c">
<area shape="rect" title="Модуль для инициализации SPI." alt="" coords="18,5,216,64"/>
<area shape="rect" href="general__spi_8h.html" title="Заголовочный файл для модуля инициализации SPI." alt="" coords="5,112,104,139"/>
<area shape="poly" title=" " alt="" coords="99,66,74,101,70,97,95,63"/>
<area shape="rect" href="general__gpio_8h.html" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="127,112,232,139"/>
<area shape="poly" title=" " alt="" coords="140,63,164,97,160,101,135,66"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="66,187,168,213"/>
<area shape="poly" title=" " alt="" coords="67,137,98,173,94,177,63,141"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="61,261,173,288"/>
<area shape="poly" title=" " alt="" coords="120,214,120,246,114,246,114,214"/>
<area shape="rect" title=" " alt="" coords="58,336,176,363"/>
<area shape="poly" title=" " alt="" coords="120,289,120,320,114,320,114,289"/>
<area shape="poly" title=" " alt="" coords="171,141,140,177,136,173,167,137"/>
</map>
</div>
</div>
<p><a href="general__spi_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0e177e3c57a8fcdc73b5602e72ec66ba" id="r_ga0e177e3c57a8fcdc73b5602e72ec66ba"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a> (<a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</td></tr>
<tr class="memdesc:ga0e177e3c57a8fcdc73b5602e72ec66ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация SPI с помощью структуры <a class="el" href="struct_s_p_i___settings_type_def.html" title="Структура настроек SPI.">SPI_SettingsTypeDef</a>. <br /></td></tr>
<tr class="memitem:ae80d21e5cab86571709a2619442733b5" id="r_ae80d21e5cab86571709a2619442733b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae80d21e5cab86571709a2619442733b5">SPI_GPIO_Init</a> (<a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</td></tr>
<tr class="memdesc:ae80d21e5cab86571709a2619442733b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация GPIO для SPI. <br /></td></tr>
<tr class="memitem:abb78b8bd5303e88f969694e6fe03c411" id="r_abb78b8bd5303e88f969694e6fe03c411"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abb78b8bd5303e88f969694e6fe03c411">SPI_DMA_Init</a> (SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)</td></tr>
<tr class="memitem:gab9f13318daf02bc5b5f302ae392dccac" id="r_gab9f13318daf02bc5b5f302ae392dccac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a> (SPI_HandleTypeDef *hspi)</td></tr>
<tr class="memdesc:gab9f13318daf02bc5b5f302ae392dccac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Настройка тактирования и прерываний SPI. <br /></td></tr>
<tr class="memitem:gac279cc3eaa35541edfe330a1844a85e4" id="r_gac279cc3eaa35541edfe330a1844a85e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">SPI_MspDeInit</a> (SPI_HandleTypeDef *hspi)</td></tr>
<tr class="memdesc:gac279cc3eaa35541edfe330a1844a85e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Деинициализация тактирования и прерываний SPI. <br /></td></tr>
<tr class="memitem:ga333dd251bc878931086d48aa932b1a5f" id="r_ga333dd251bc878931086d48aa932b1a5f"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">SPI_Check_Init_Struct</a> (<a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</td></tr>
<tr class="memdesc:ga333dd251bc878931086d48aa932b1a5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверка корректности структуры инициализации SPI. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Модуль для инициализации SPI. </p>
<p>Реализация функций для работы с SPI:</p><ul>
<li>Инициализация SPI и его линий CLK/MISO/MOSI</li>
<li>Настройка GPIO для SPI</li>
<li>Настройка NVIC и тактирования SPI </li>
</ul>
<p class="definition">Definition in file <a class="el" href="general__spi_8c_source.html">general_spi.c</a>.</p>
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="ae80d21e5cab86571709a2619442733b5" name="ae80d21e5cab86571709a2619442733b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae80d21e5cab86571709a2619442733b5">&#9670;&#160;</a></span>SPI_GPIO_Init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_GPIO_Init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *</td> <td class="paramname"><span class="paramname"><em>sspi</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Инициализация GPIO для SPI. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sspi</td><td>Указатель на структуру с настройками SPI. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="general__spi_8c_source.html#l00058">58</a> of file <a class="el" href="general__spi_8c_source.html">general_spi.c</a>.</p>
</div>
</div>
<a id="abb78b8bd5303e88f969694e6fe03c411" name="abb78b8bd5303e88f969694e6fe03c411"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb78b8bd5303e88f969694e6fe03c411">&#9670;&#160;</a></span>SPI_DMA_Init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_DMA_Init </td>
<td>(</td>
<td class="paramtype">SPI_HandleTypeDef *</td> <td class="paramname"><span class="paramname"><em>hspi</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DMA_HandleTypeDef *</td> <td class="paramname"><span class="paramname"><em>hdma_rx</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DMA_Stream_TypeDef *</td> <td class="paramname"><span class="paramname"><em>DMAChannel</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>DMA_CHANNEL_X</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="general__spi_8c_source.html#l00089">89</a> of file <a class="el" href="general__spi_8c_source.html">general_spi.c</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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__spi_8c.html">general_spi.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>

View File

@ -1,8 +0,0 @@
var general__spi_8c =
[
[ "SPI_Base_Init", "group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba", null ],
[ "SPI_GPIO_Init", "general__spi_8c.html#ae80d21e5cab86571709a2619442733b5", null ],
[ "SPI_MspInit", "group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac", null ],
[ "SPI_MspDeInit", "group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4", null ],
[ "SPI_Check_Init_Struct", "group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f", null ]
];

View File

@ -1,14 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_spi.c" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_spi.c">
<area shape="rect" id="Node000001" title="Модуль для инициализации SPI." alt="" coords="18,5,216,64"/>
<area shape="rect" id="Node000002" href="$general__spi_8h.html" title="Заголовочный файл для модуля инициализации SPI." alt="" coords="5,112,104,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="99,66,74,101,70,97,95,63"/>
<area shape="rect" id="Node000006" href="$general__gpio_8h.html" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="127,112,232,139"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="140,63,164,97,160,101,135,66"/>
<area shape="rect" id="Node000003" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="66,187,168,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="67,137,98,173,94,177,63,141"/>
<area shape="rect" id="Node000004" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="61,261,173,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="120,214,120,246,114,246,114,214"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="58,336,176,363"/>
<area shape="poly" id="edge4_Node000004_Node000005" title=" " alt="" coords="120,289,120,320,114,320,114,289"/>
<area shape="poly" id="edge6_Node000006_Node000003" title=" " alt="" coords="171,141,140,177,136,173,167,137"/>
</map>

View File

@ -1 +0,0 @@
cda11d9ce070219b48b91b6cd8be6ad8

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -1,428 +0,0 @@
<!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_spi.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__spi_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_spi.c</div></div>
</div><!--header-->
<div class="contents">
<a href="general__spi_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_spi.c</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Модуль для инициализации SPI.</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">Реализация функций для работы с SPI:</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> - Инициализация SPI и его линий CLK/MISO/MOSI</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> - Настройка GPIO для SPI</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> - Настройка NVIC и тактирования SPI</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__spi_8h.html">general_spi.h</a>&quot;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</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="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">//------------------------SPI INIT FUNCTIONS------------------------</span><span class="comment"></span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">/** </span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * @brief Инициализация SPI с помощью структуры SPI_SettingsTypeDef.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * @param sspi Указатель на структуру с настройками SPI.</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * @details </span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * Инициализирует SPI и его GPIO.</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * Настройка аналогична HAL_SPI_Init </span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> * @code</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * suart.hspi.Init...</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * @endcode </span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * но дополнительно надо прописать пины CLK/MISO/MOSI @ref SPI_SettingsTypeDef</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00028" data-start="{" data-end="}">
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba"> 28</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a>(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span>{ <span class="comment">// function takes setting structure for init</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// check is settings are valid</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordflow">if</span>(<a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">SPI_Check_Init_Struct</a>(sspi) != HAL_OK)</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a>(&amp;sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>); </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">if</span> (HAL_SPI_Init(&amp;sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>) != HAL_OK)</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</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="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">return</span> HAL_ERROR;</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> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// init gpio from SPISettings structure</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <a class="code hl_function" href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5">SPI_GPIO_Init</a>(sspi);</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">// // init dma from SPISettings structure if need</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">// if (sspi-&gt;DMAChannel != 0)</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">// SPI_DMA_Init(&amp;sspi-&gt;hspi, sspi-&gt;hspi.hdmarx, sspi-&gt;DMAChannel, sspi-&gt;DMA_CHANNEL_X);</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>}</div>
</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="comment"></span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/** </span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"> * @brief Инициализация GPIO для SPI.</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"> * @param sspi Указатель на структуру с настройками SPI.</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00058" data-start="{" data-end="}">
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5"> 58</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5">SPI_GPIO_Init</a>(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span>{ </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> GPIO_InitTypeDef GPIO_InitStruct = {0}; </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// GPIO INIT </span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <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>(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">CLK_GPIOx</a>);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <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>(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">MISO_GPIOx</a>);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <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>(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">MOSI_GPIOx</a>); </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// CLK PIN INIT</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> GPIO_InitStruct.Pin = sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">CLK_PIN</a>;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> GPIO_InitStruct.Alternate = sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">CLK_GPIO_AlternageFunc</a>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> HAL_GPIO_Init(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">CLK_GPIOx</a>, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// MISO PIN INIT</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> GPIO_InitStruct.Pin = sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">MISO_PIN</a>;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> GPIO_InitStruct.Alternate = sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">MISO_GPIO_AlternageFunc</a>;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> HAL_GPIO_Init(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">MISO_GPIOx</a>, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// MOSI PIN INIT</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> GPIO_InitStruct.Pin = sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">MOSI_PIN</a>;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> GPIO_InitStruct.Alternate = sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">MOSI_GPIO_AlternageFunc</a>;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> GPIO_InitStruct.Pull = GPIO_NOPULL;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> HAL_GPIO_Init(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">MOSI_GPIOx</a>, &amp;GPIO_InitStruct);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>}</div>
</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> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="keywordtype">void</span> SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span>{ <span class="comment">// function takes spi and dma handlers and dmachannel for spi</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment">// // for now only dma rx is supported, tx maybe later if needed</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment">// // calc defines on boot_project_setup.h</span></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><span class="comment">// /* SPI3 DMA Init */</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment">// /* SPI3_RX Init */</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment">// </span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment">// hdma_rx-&gt;Instance = DMAChannel;</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment">//#if defined(STM32F4xx) // dma channel choose for 407</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">// hdma_rx-&gt;Init.Channel = DMA_CHANNEL_X;</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment">//#endif</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment">// hdma_rx-&gt;Init.Direction = DMA_PERIPH_TO_MEMORY;</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment">// hdma_rx-&gt;Init.PeriphInc = DMA_PINC_DISABLE;</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment">// hdma_rx-&gt;Init.MemInc = DMA_MINC_ENABLE;</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment">// hdma_rx-&gt;Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment">// hdma_rx-&gt;Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment">// hdma_rx-&gt;Init.Mode = DMA_CIRCULAR;</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment">// hdma_rx-&gt;Init.Priority = DMA_PRIORITY_LOW;</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment">// if (HAL_DMA_Init(hdma_rx) != HAL_OK)</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment">// {</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment">// MyLibs_Error_Handler();</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment">// }</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment">// __USER_LINKDMA(hspi,hdmarx,hdma_rx); </span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment">// </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">// // __USER_LINKDMA is need because __HAL_LINKDMA is written for global defined hdma_rx</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment">// // so you get error because hal uses . insted of -&gt;</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>}</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"></span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment">/** </span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"> * @brief Настройка тактирования и прерываний SPI.</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"> * @param hspi Указатель на хендл SPI.</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI,</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> дефайнами @ref SPI_INIT в @ref general_spi.h определяются используемые SPI.</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00127" data-start="{" data-end="}">
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac"> 127</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a>(SPI_HandleTypeDef *hspi) <span class="comment">// analog for hal function</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span>{ </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// rcc, dma and interrupt init for SPIs</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="comment">// GPIO init was moved to own functions SPI_GPIO_Init </span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">if</span>(0);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="preprocessor">#ifdef USE_SPI1</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI1)</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> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment">// /* DMA2 clock enable */</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment">// __HAL_RCC_DMA2_CLK_ENABLE();</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment">// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);</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">/* SPI1 clock enable */</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> __HAL_RCC_SPI1_CLK_ENABLE();</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> <span class="comment">/* SPI1 interrupt Init */</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> HAL_NVIC_EnableIRQ(SPI1_IRQn);</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> }</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="preprocessor">#endif </span><span class="comment">// USE_SPI1</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor">#ifdef USE_SPI2</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI2)</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> {</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);</span></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> <span class="comment">/* SPI2 clock enable */</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> __HAL_RCC_SPI2_CLK_ENABLE();</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment">/* SPI2 interrupt Init */</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> HAL_NVIC_SetPriority(SPI2_IRQn, 0, 0);</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> HAL_NVIC_EnableIRQ(SPI2_IRQn);</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="preprocessor">#endif </span><span class="comment">// USE_SPI2</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="preprocessor">#ifdef USE_SPI3</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI3)</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="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);</span></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">/* SPI3 clock enable */</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> __HAL_RCC_SPI3_CLK_ENABLE(); </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="comment">/* SPI3 interrupt Init */</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> HAL_NVIC_SetPriority(SPI3_IRQn, 0, 0);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> HAL_NVIC_EnableIRQ(SPI3_IRQn);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> }</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="preprocessor">#endif </span><span class="comment">// USE_SPI3</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>}</div>
</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="comment"></span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="comment">/** </span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="comment"> * @brief Деинициализация тактирования и прерываний SPI.</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="comment"> * @param hspi Указатель на хендл SPI.</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="comment"> * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI,</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="comment"> дефайнами @ref SPI_INIT в @ref general_spi.h определяются используемые SPI.</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00191" data-start="{" data-end="}">
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4"> 191</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">SPI_MspDeInit</a>(SPI_HandleTypeDef *hspi) <span class="comment">// analog for hal function</span></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> <span class="comment">// rcc, dma and interrupt init for SPIs</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="comment">// GPIO init was moved to own functions SPI_GPIO_Init </span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordflow">if</span>(0);</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="preprocessor">#ifdef USE_SPI1</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI1)</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> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="comment">// /* DMA2 clock enable */</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="comment">// __HAL_RCC_DMA2_CLK_ENABLE();</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="comment">// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> </div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="comment">/* SPI1 clock reset */</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> __HAL_RCC_SPI1_FORCE_RESET();</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> __HAL_RCC_SPI1_RELEASE_RESET();</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><span class="preprocessor">#endif </span><span class="comment">// USE_SPI1</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="preprocessor">#ifdef USE_SPI2</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI2)</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> {</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);</span></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> <span class="comment">/* SPI2 clock reset */</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> __HAL_RCC_SPI2_FORCE_RESET();</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> __HAL_RCC_SPI2_RELEASE_RESET();</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="preprocessor">#endif </span><span class="comment">// USE_SPI2</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor">#ifdef USE_SPI3</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hspi-&gt;Instance==SPI3)</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="comment">// /* DMA1 clock enable */</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment">// __HAL_RCC_DMA1_CLK_ENABLE();</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="comment">// /* DMA interrupt init */</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="comment">// HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="comment">// HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="comment">/* SPI3 clock reset */</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> __HAL_RCC_SPI3_FORCE_RESET();</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> __HAL_RCC_SPI3_RELEASE_RESET();</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="preprocessor">#endif </span><span class="comment">// USE_SPI3</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span>}</div>
</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment"></span> </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="comment">/** </span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="comment"> * @brief Проверка корректности структуры инициализации SPI.</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="comment"> * @param sspi Указатель на структуру с настройками SPI.</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="comment"> * @return HAL status.</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00246" data-start="{" data-end="}">
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"><a class="line" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f"> 246</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">SPI_Check_Init_Struct</a>(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span>{</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="comment">// check is settings are valid</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keywordflow">if</span> (!IS_SPI_ALL_INSTANCE(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Instance))</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="comment">// check init settings</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">if</span> (!IS_SPI_MODE(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.Mode))</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordflow">if</span> (!IS_SPI_DIRECTION(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.Direction))</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="keywordflow">if</span> (!IS_SPI_DATASIZE(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.DataSize))</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">if</span> (!IS_SPI_BAUDRATE_PRESCALER(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.BaudRatePrescaler))</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordflow">if</span> (!IS_SPI_CPOL(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.CLKPolarity))</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">if</span> (!IS_SPI_CPHA(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.CLKPhase))</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordflow">if</span> (!IS_SPI_NSS(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.NSS))</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keywordflow">if</span> (!IS_SPI_FIRST_BIT(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.FirstBit))</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordflow">if</span> (!IS_SPI_CRC_CALCULATION(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.CRCCalculation))</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keywordflow">if</span> (!IS_SPI_CRC_POLYNOMIAL(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.NSS) &amp;&amp; </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> (sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.CRCCalculation != SPI_CRCCALCULATION_DISABLE))</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">if</span> (!IS_SPI_TIMODE(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>.Init.TIMode))</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> <span class="comment">// check gpio</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">if</span> (!IS_GPIO_ALL_INSTANCE(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">CLK_GPIOx</a>) || !IS_GPIO_ALL_INSTANCE(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">MISO_GPIOx</a>) || !IS_GPIO_ALL_INSTANCE(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">MOSI_GPIOx</a>))</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">return</span> HAL_ERROR; </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordflow">if</span> (!IS_GPIO_PIN(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">CLK_PIN</a>) &amp;&amp; !IS_GPIO_PIN(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">MISO_PIN</a>) &amp;&amp; !IS_GPIO_PIN(sspi-&gt;<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">MOSI_PIN</a>)) <span class="comment">// if both pins arent set up</span></div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordflow">return</span> HAL_ERROR;</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">return</span> HAL_OK;</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span>}</div>
</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="ageneral__spi_8c_html_ae80d21e5cab86571709a2619442733b5"><div class="ttname"><a href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5">SPI_GPIO_Init</a></div><div class="ttdeci">void SPI_GPIO_Init(SPI_SettingsTypeDef *sspi)</div><div class="ttdoc">Инициализация GPIO для SPI.</div><div class="ttdef"><b>Definition</b> <a href="#l00058">general_spi.c:58</a></div></div>
<div class="ttc" id="ageneral__spi_8h_html"><div class="ttname"><a href="general__spi_8h.html">general_spi.h</a></div><div class="ttdoc">Заголовочный файл для модуля инициализации SPI.</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___s_p_i_html_ga0e177e3c57a8fcdc73b5602e72ec66ba"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a></div><div class="ttdeci">HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)</div><div class="ttdoc">Инициализация SPI с помощью структуры SPI_SettingsTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="#l00028">general_spi.c:28</a></div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_ga333dd251bc878931086d48aa932b1a5f"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">SPI_Check_Init_Struct</a></div><div class="ttdeci">HAL_StatusTypeDef SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi)</div><div class="ttdoc">Проверка корректности структуры инициализации SPI.</div><div class="ttdef"><b>Definition</b> <a href="#l00246">general_spi.c:246</a></div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_gab9f13318daf02bc5b5f302ae392dccac"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a></div><div class="ttdeci">void SPI_MspInit(SPI_HandleTypeDef *hspi)</div><div class="ttdoc">Настройка тактирования и прерываний SPI.</div><div class="ttdef"><b>Definition</b> <a href="#l00127">general_spi.c:127</a></div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_gac279cc3eaa35541edfe330a1844a85e4"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">SPI_MspDeInit</a></div><div class="ttdeci">void SPI_MspDeInit(SPI_HandleTypeDef *hspi)</div><div class="ttdoc">Деинициализация тактирования и прерываний SPI.</div><div class="ttdef"><b>Definition</b> <a href="#l00191">general_spi.c:191</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="astruct_s_p_i___settings_type_def_html"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></div><div class="ttdoc">Структура настроек SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00103">general_spi.h:104</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a0af3bdb273818ff97eb4ff3cff918820"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">SPI_SettingsTypeDef::MOSI_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * MOSI_GPIOx</div><div class="ttdoc">Порт MOSI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00115">general_spi.h:115</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a0d55a2941854f61934487f3d209cfa95"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">SPI_SettingsTypeDef::MISO_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * MISO_GPIOx</div><div class="ttdoc">Порт MISO.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00111">general_spi.h:111</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3366c654d7ec6dd41c6a0b504dc8509a"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">SPI_SettingsTypeDef::MISO_PIN</a></div><div class="ttdeci">uint32_t MISO_PIN</div><div class="ttdoc">Пин MISO.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00112">general_spi.h:112</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3bcb1ed12da3544e02e6d36493669bdc"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">SPI_SettingsTypeDef::CLK_PIN</a></div><div class="ttdeci">uint32_t CLK_PIN</div><div class="ttdoc">Пин CLK.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00108">general_spi.h:108</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3f3748103a0b7861f6700042fd691ba1"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">SPI_SettingsTypeDef::CLK_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t CLK_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для CLK.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00109">general_spi.h:109</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a6a15d48eccf92959de3a086031fdc979"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">SPI_SettingsTypeDef::CLK_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * CLK_GPIOx</div><div class="ttdoc">Порт CLK.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00107">general_spi.h:107</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a961208869faf4a7369aaf4edde75f176"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">SPI_SettingsTypeDef::MOSI_PIN</a></div><div class="ttdeci">uint32_t MOSI_PIN</div><div class="ttdoc">Пин MOSI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00116">general_spi.h:116</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_ad203d8b8d67e4f477d002d15b03ba422"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">SPI_SettingsTypeDef::hspi</a></div><div class="ttdeci">SPI_HandleTypeDef hspi</div><div class="ttdoc">HAL handle SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00105">general_spi.h:105</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_aecd7a5c6e205335b8ed229d74cd35d14"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">SPI_SettingsTypeDef::MISO_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t MISO_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для MISO.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00113">general_spi.h:113</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_afbe75a1c36650a4a9b41fa706a4c7eab"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">SPI_SettingsTypeDef::MOSI_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t MOSI_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для MOSI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8h_source.html#l00117">general_spi.h:117</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__spi_8c.html">general_spi.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>

View File

@ -1,185 +0,0 @@
<!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/Inc/general_spi.h File Reference</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__spi_8h.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_spi.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Заголовочный файл для модуля инициализации SPI.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>&quot;</code><br />
</div><div class="textblock"><div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Include dependency graph for general_spi.h:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="general__spi_8h__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__spi_8h" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__spi_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__spi_8h">
<area shape="rect" title="Заголовочный файл для модуля инициализации SPI." alt="" coords="5,5,204,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,112,156,139"/>
<area shape="poly" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,187,161,213"/>
<area shape="poly" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" title=" " alt="" coords="46,261,163,288"/>
<area shape="poly" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
</map>
</div>
</div><div class="textblock"><div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>This graph shows which files directly or indirectly include this file:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="general__spi_8h__dep__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__spi_8hdep" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__spi_8hdep" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_inc_2general__spi_8hdep">
<area shape="rect" title="Заголовочный файл для модуля инициализации SPI." alt="" coords="5,5,204,64"/>
<area shape="rect" href="general__spi_8c.html" title="Модуль для инициализации SPI." alt="" coords="5,112,204,171"/>
<area shape="poly" title=" " alt="" coords="107,80,107,112,102,112,102,80"/>
</map>
</div>
</div>
<p><a href="general__spi_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:SPI_5FSettingsTypeDef" id="r_SPI_5FSettingsTypeDef"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Структура настроек SPI. <a href="struct_s_p_i___settings_type_def.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-define-members" class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga8ad4712bf4add56892d057778e826e0c" id="r_ga8ad4712bf4add56892d057778e826e0c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c">HAL_SPI_MODULE_ENABLED</a></td></tr>
<tr class="memdesc:ga8ad4712bf4add56892d057778e826e0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включение HAL SPI. <br /></td></tr>
<tr class="memitem:ga2fe0c8aeb2c61679f32836fef479eedf" id="r_ga2fe0c8aeb2c61679f32836fef479eedf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf">USE_SPI1</a></td></tr>
<tr class="memdesc:ga2fe0c8aeb2c61679f32836fef479eedf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить SPI1 в <a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a>. <br /></td></tr>
<tr class="memitem:ga53687cddb8e39e76a79b8ffaa152fb2b" id="r_ga53687cddb8e39e76a79b8ffaa152fb2b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b">USE_SPI2</a></td></tr>
<tr class="memdesc:ga53687cddb8e39e76a79b8ffaa152fb2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить SPI2 в <a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a>. <br /></td></tr>
<tr class="memitem:ga5fdd6e5934a8005ef05b80f6d95883dc" id="r_ga5fdd6e5934a8005ef05b80f6d95883dc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc">USE_SPI3</a></td></tr>
<tr class="memdesc:ga5fdd6e5934a8005ef05b80f6d95883dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить SPI3 в <a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a>. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0e177e3c57a8fcdc73b5602e72ec66ba" id="r_ga0e177e3c57a8fcdc73b5602e72ec66ba"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a> (<a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</td></tr>
<tr class="memdesc:ga0e177e3c57a8fcdc73b5602e72ec66ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация SPI с помощью структуры <a class="el" href="struct_s_p_i___settings_type_def.html" title="Структура настроек SPI.">SPI_SettingsTypeDef</a>. <br /></td></tr>
<tr class="memitem:ga333dd251bc878931086d48aa932b1a5f" id="r_ga333dd251bc878931086d48aa932b1a5f"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">SPI_Check_Init_Struct</a> (<a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi)</td></tr>
<tr class="memdesc:ga333dd251bc878931086d48aa932b1a5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверка корректности структуры инициализации SPI. <br /></td></tr>
<tr class="memitem:gab9f13318daf02bc5b5f302ae392dccac" id="r_gab9f13318daf02bc5b5f302ae392dccac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a> (SPI_HandleTypeDef *hspi)</td></tr>
<tr class="memdesc:gab9f13318daf02bc5b5f302ae392dccac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Настройка тактирования и прерываний SPI. <br /></td></tr>
<tr class="memitem:gac279cc3eaa35541edfe330a1844a85e4" id="r_gac279cc3eaa35541edfe330a1844a85e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">SPI_MspDeInit</a> (SPI_HandleTypeDef *hspi)</td></tr>
<tr class="memdesc:gac279cc3eaa35541edfe330a1844a85e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Деинициализация тактирования и прерываний SPI. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Заголовочный файл для модуля инициализации SPI. </p>
<p class="definition">Definition in file <a class="el" href="general__spi_8h_source.html">general_spi.h</a>.</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="general__spi_8h.html">general_spi.h</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>

View File

@ -1,11 +0,0 @@
var general__spi_8h =
[
[ "HAL_SPI_MODULE_ENABLED", "group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c", null ],
[ "USE_SPI1", "group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf", null ],
[ "USE_SPI2", "group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b", null ],
[ "USE_SPI3", "group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc", null ],
[ "SPI_Base_Init", "group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba", null ],
[ "SPI_Check_Init_Struct", "group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f", null ],
[ "SPI_MspInit", "group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac", null ],
[ "SPI_MspDeInit", "group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4", null ]
];

View File

@ -1,5 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_spi.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_spi.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для модуля инициализации SPI." alt="" coords="5,5,204,64"/>
<area shape="rect" id="Node000002" href="$general__spi_8c.html" title="Модуль для инициализации SPI." alt="" coords="5,112,204,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="107,80,107,112,102,112,102,80"/>
</map>

View File

@ -1 +0,0 @@
4329b58f85cc157f873e0efea5ebf705

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,9 +0,0 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_spi.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_spi.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для модуля инициализации SPI." alt="" coords="5,5,204,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,112,156,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" id="Node000003" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,187,161,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="107,139,107,171,102,171,102,139"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="46,261,163,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="107,214,107,246,102,246,102,214"/>
</map>

View File

@ -1 +0,0 @@
e0af89a349938fa4f2a316fa222eee4c

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,305 +0,0 @@
<!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/Inc/general_spi.h 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__spi_8h_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_spi.h</div></div>
</div><!--header-->
<div class="contents">
<a href="general__spi_8h.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_spi.h</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Заголовочный файл для модуля инициализации SPI.</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">* @defgroup MY_LIBS_SPI SPI Tools</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @ingroup MYLIBS_PERIPHERAL</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @brief Функции и макросы для удобной работы с SPI.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* @details</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">Модуль предоставляет функции для базовой инициализации SPI</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="comment">@par Пример использования:</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">@code</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// Структура настроек SPI</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">SPI_SettingsTypeDef spi1Settings;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"></span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">void SPI1_Init(void)</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"> // Настройка SPI1 как Master, 8 бит, полный дуплекс</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> spi1Settings.hspi.Instance = SPI1;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> spi1Settings.hspi.Init.Mode = SPI_MODE_MASTER;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> spi1Settings.hspi.Init.Direction = SPI_DIRECTION_2LINES;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> spi1Settings.hspi.Init.DataSize = SPI_DATASIZE_8BIT;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> spi1Settings.hspi.Init.CLKPolarity = SPI_POLARITY_LOW;</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> spi1Settings.hspi.Init.CLKPhase = SPI_PHASE_1EDGE;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> spi1Settings.hspi.Init.NSS = SPI_NSS_SOFT;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> spi1Settings.hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"> spi1Settings.hspi.Init.FirstBit = SPI_FIRSTBIT_MSB;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment"> spi1Settings.hspi.Init.TIMode = SPI_TIMODE_DISABLE;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment"> spi1Settings.hspi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;</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"> // Настройка GPIO</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment"> spi1Settings.CLK_GPIOx = GPIOA;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"> spi1Settings.CLK_PIN = GPIO_PIN_5;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment"> spi1Settings.CLK_GPIO_AlternageFunc = GPIO_AF5_SPI1;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment"></span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> spi1Settings.MISO_GPIOx = GPIOA;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> spi1Settings.MISO_PIN = GPIO_PIN_6;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment"> spi1Settings.MISO_GPIO_AlternageFunc = GPIO_AF5_SPI1;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment"></span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"> spi1Settings.MOSI_GPIOx = GPIOA;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment"> spi1Settings.MOSI_PIN = GPIO_PIN_7;</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment"> spi1Settings.MOSI_GPIO_AlternageFunc = GPIO_AF5_SPI1;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"></span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment"> // Инициализация SPI</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment"> if(SPI_Base_Init(&amp;spi1Settings) != HAL_OK)</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment"> {</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"> // Обработка ошибки</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"> Error_Handler();</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"> }</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">}</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">@endcode</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment"></span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"></span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"></span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">* @note Требуется подключение модуля SPI в библиотеке HAL </span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">@code </span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">#define HAL_SPI_MODULE_ENABLED</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">@endcode</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">* @{</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">*************************************************************************/</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#ifndef __SPI_GENERAL_H_</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#define __SPI_GENERAL_H_</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</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">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">/** </span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * @addtogroup SPI_INIT Init defines</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @ingroup MY_LIBS_SPI</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> * @brief Настройка SPI</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><span class="comment"> */</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c"> 75</a></span><span class="preprocessor">#define HAL_SPI_MODULE_ENABLED </span><span class="comment">///&lt; Включение HAL SPI</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf"> 77</a></span><span class="preprocessor">#define USE_SPI1 </span><span class="comment">///&lt; Включить SPI1 в @ref SPI_MspInit</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b"> 78</a></span><span class="preprocessor">#define USE_SPI2 </span><span class="comment">///&lt; Включить SPI2 в @ref SPI_MspInit</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc"> 79</a></span><span class="preprocessor">#define USE_SPI3 </span><span class="comment">///&lt; Включить SPI3 в @ref SPI_MspInit</span><span class="comment"></span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment">/** SPI_INIT</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"> */</span><span class="preprocessor"></span><span class="comment"></span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"></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><span class="comment">////////////////////////////---DEFINES---////////////////////////////</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment"></span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment">////////////////////////////---DEFINES---////////////////////////////</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><span class="comment"></span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment">/**</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> * @brief Структура настроек SPI</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * @details Содержит все необходимые параметры для инициализации SPI,</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * включая GPIO и DMA.</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00103" data-start="{" data-end="};">
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html"> 103</a></span><span class="keyword">typedef</span> <span class="keyword">struct</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"><a class="line" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422"> 105</a></span> SPI_HandleTypeDef <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">hspi</a>; <span class="comment">///&lt; HAL handle SPI</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979"> 107</a></span> GPIO_TypeDef *<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">CLK_GPIOx</a>; <span class="comment">///&lt; Порт CLK</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc"> 108</a></span> uint32_t <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">CLK_PIN</a>; <span class="comment">///&lt; Пин CLK</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1"> 109</a></span> uint32_t <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">CLK_GPIO_AlternageFunc</a>; <span class="comment">///&lt; Альтернативная функция для CLK</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95"> 111</a></span> GPIO_TypeDef *<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">MISO_GPIOx</a>; <span class="comment">///&lt; Порт MISO</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a"> 112</a></span> uint32_t <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">MISO_PIN</a>; <span class="comment">///&lt; Пин MISO</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14"> 113</a></span> uint32_t <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">MISO_GPIO_AlternageFunc</a>; <span class="comment">///&lt; Альтернативная функция для MISO</span></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"><a class="line" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820"> 115</a></span> GPIO_TypeDef *<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">MOSI_GPIOx</a>; <span class="comment">///&lt; Порт MOSI</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176"> 116</a></span> uint32_t <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">MOSI_PIN</a>; <span class="comment">///&lt; Пин MOSI</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab"> 117</a></span> uint32_t <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">MOSI_GPIO_AlternageFunc</a>; <span class="comment">///&lt; Альтернативная функция для MOSI</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95"> 119</a></span> DMA_Stream_TypeDef *<a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95">DMAChannel</a>; <span class="comment">///&lt; Канал DMA (NULL если не нужен)</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474"> 120</a></span> uint32_t <a class="code hl_variable" href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474">DMA_CHANNEL_X</a>; <span class="comment">///&lt; Номер канала DMA (0 если не нужен)</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span>} <a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a>;<span class="comment"></span></div>
</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"></span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment">/* Инициализация SPI с использованием структуры настроек */</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a>(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi);</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="comment">/* Проверка корректности структуры настроек SPI */</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">SPI_Check_Init_Struct</a>(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi);</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">/* Инициализация тактирования и прерываний для выбранного SPI */</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a>(SPI_HandleTypeDef *hspi);</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">/* Деинициализация тактирования и прерываний для выбранного SPI */</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">SPI_MspDeInit</a>(SPI_HandleTypeDef *hspi);</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> <span class="comment"></span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment">/** </span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * @cond SPI_INTERNAL</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> */</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">/* Настройка GPIO для SPI */</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="keywordtype">void</span> <a class="code hl_function" href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5">SPI_GPIO_Init</a>(<a class="code hl_struct" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a> *sspi);</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment">/* Настройка DMA для SPI */</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="keywordtype">void</span> SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="preprocessor">#ifndef __USER_LINKDMA</span><span class="comment"></span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment">/** </span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment"> * @brief Аналог HAL макроса для привязки DMA к UART.</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment"> * @note @ref __HAL_LINKDMA.</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="preprocessor">#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="preprocessor">do{ \</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="preprocessor">(__HANDLE__)-&gt;__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="preprocessor">(__DMA_HANDLE__)-&gt;Parent = (__HANDLE__);} while(0U)</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"></span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment">/** @endcond */</span><span class="comment"></span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></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="preprocessor">#endif </span><span class="comment">// __SPI_GENERAL_H_</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="comment"></span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="comment">/** MY_LIBS_SPI</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="comment"> */</span></div>
<div class="ttc" id="ageneral__spi_8c_html_ae80d21e5cab86571709a2619442733b5"><div class="ttname"><a href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5">SPI_GPIO_Init</a></div><div class="ttdeci">void SPI_GPIO_Init(SPI_SettingsTypeDef *sspi)</div><div class="ttdoc">Инициализация GPIO для SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8c_source.html#l00058">general_spi.c:58</a></div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_ga0e177e3c57a8fcdc73b5602e72ec66ba"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a></div><div class="ttdeci">HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)</div><div class="ttdoc">Инициализация SPI с помощью структуры SPI_SettingsTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8c_source.html#l00028">general_spi.c:28</a></div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_ga333dd251bc878931086d48aa932b1a5f"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">SPI_Check_Init_Struct</a></div><div class="ttdeci">HAL_StatusTypeDef SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi)</div><div class="ttdoc">Проверка корректности структуры инициализации SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8c_source.html#l00246">general_spi.c:246</a></div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_gab9f13318daf02bc5b5f302ae392dccac"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">SPI_MspInit</a></div><div class="ttdeci">void SPI_MspInit(SPI_HandleTypeDef *hspi)</div><div class="ttdoc">Настройка тактирования и прерываний SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8c_source.html#l00127">general_spi.c:127</a></div></div>
<div class="ttc" id="agroup___m_y___l_i_b_s___s_p_i_html_gac279cc3eaa35541edfe330a1844a85e4"><div class="ttname"><a href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">SPI_MspDeInit</a></div><div class="ttdeci">void SPI_MspDeInit(SPI_HandleTypeDef *hspi)</div><div class="ttdoc">Деинициализация тактирования и прерываний SPI.</div><div class="ttdef"><b>Definition</b> <a href="general__spi_8c_source.html#l00191">general_spi.c:191</a></div></div>
<div class="ttc" id="amylibs__defs_8h_html"><div class="ttname"><a href="mylibs__defs_8h.html">mylibs_defs.h</a></div><div class="ttdoc">Заголочный файл для дефайнов библиотеки MyLibsGeneral.</div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></div><div class="ttdoc">Структура настроек SPI.</div><div class="ttdef"><b>Definition</b> <a href="#l00103">general_spi.h:104</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a0af3bdb273818ff97eb4ff3cff918820"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">SPI_SettingsTypeDef::MOSI_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * MOSI_GPIOx</div><div class="ttdoc">Порт MOSI.</div><div class="ttdef"><b>Definition</b> <a href="#l00115">general_spi.h:115</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a0d55a2941854f61934487f3d209cfa95"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">SPI_SettingsTypeDef::MISO_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * MISO_GPIOx</div><div class="ttdoc">Порт MISO.</div><div class="ttdef"><b>Definition</b> <a href="#l00111">general_spi.h:111</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3366c654d7ec6dd41c6a0b504dc8509a"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">SPI_SettingsTypeDef::MISO_PIN</a></div><div class="ttdeci">uint32_t MISO_PIN</div><div class="ttdoc">Пин MISO.</div><div class="ttdef"><b>Definition</b> <a href="#l00112">general_spi.h:112</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3bcb1ed12da3544e02e6d36493669bdc"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">SPI_SettingsTypeDef::CLK_PIN</a></div><div class="ttdeci">uint32_t CLK_PIN</div><div class="ttdoc">Пин CLK.</div><div class="ttdef"><b>Definition</b> <a href="#l00108">general_spi.h:108</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3cfd9469b0617a68bbd2a161ba06bb95"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95">SPI_SettingsTypeDef::DMAChannel</a></div><div class="ttdeci">DMA_Stream_TypeDef * DMAChannel</div><div class="ttdoc">Канал DMA (NULL если не нужен)</div><div class="ttdef"><b>Definition</b> <a href="#l00119">general_spi.h:119</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a3f3748103a0b7861f6700042fd691ba1"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">SPI_SettingsTypeDef::CLK_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t CLK_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для CLK.</div><div class="ttdef"><b>Definition</b> <a href="#l00109">general_spi.h:109</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a6a15d48eccf92959de3a086031fdc979"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">SPI_SettingsTypeDef::CLK_GPIOx</a></div><div class="ttdeci">GPIO_TypeDef * CLK_GPIOx</div><div class="ttdoc">Порт CLK.</div><div class="ttdef"><b>Definition</b> <a href="#l00107">general_spi.h:107</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_a961208869faf4a7369aaf4edde75f176"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">SPI_SettingsTypeDef::MOSI_PIN</a></div><div class="ttdeci">uint32_t MOSI_PIN</div><div class="ttdoc">Пин MOSI.</div><div class="ttdef"><b>Definition</b> <a href="#l00116">general_spi.h:116</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_aa0edaa145076d2383b3e0095d156d474"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474">SPI_SettingsTypeDef::DMA_CHANNEL_X</a></div><div class="ttdeci">uint32_t DMA_CHANNEL_X</div><div class="ttdoc">Номер канала DMA (0 если не нужен)</div><div class="ttdef"><b>Definition</b> <a href="#l00120">general_spi.h:120</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_ad203d8b8d67e4f477d002d15b03ba422"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">SPI_SettingsTypeDef::hspi</a></div><div class="ttdeci">SPI_HandleTypeDef hspi</div><div class="ttdoc">HAL handle SPI.</div><div class="ttdef"><b>Definition</b> <a href="#l00105">general_spi.h:105</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_aecd7a5c6e205335b8ed229d74cd35d14"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">SPI_SettingsTypeDef::MISO_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t MISO_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для MISO.</div><div class="ttdef"><b>Definition</b> <a href="#l00113">general_spi.h:113</a></div></div>
<div class="ttc" id="astruct_s_p_i___settings_type_def_html_afbe75a1c36650a4a9b41fa706a4c7eab"><div class="ttname"><a href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">SPI_SettingsTypeDef::MOSI_GPIO_AlternageFunc</a></div><div class="ttdeci">uint32_t MOSI_GPIO_AlternageFunc</div><div class="ttdoc">Альтернативная функция для MOSI.</div><div class="ttdef"><b>Definition</b> <a href="#l00117">general_spi.h:117</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_eb423fea8a9c4b9b32b922020ec391e1.html">Inc</a></li><li class="navelem"><a href="general__spi_8h.html">general_spi.h</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>

View File

@ -1,182 +0,0 @@
<!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 File Reference</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.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 File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Модуль для инициализации таймеров и работы с ними.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="general__tim_8h_source.html">general_tim.h</a>&quot;</code><br />
</div><div class="textblock"><div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Include dependency graph for general_tim.c:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="general__tim_8c__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__tim_8c" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__tim_8c" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_general_2_src_2general__tim_8c">
<area shape="rect" title="Модуль для инициализации таймеров и работы с ними." alt="" coords="5,5,204,64"/>
<area shape="rect" href="general__tim_8h.html" title="Заголовочный файл для модуля инициализации таймеров и работы с ними." alt="" coords="55,112,154,139"/>
<area shape="poly" title=" " alt="" coords="107,64,107,96,102,96,102,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="53,261,156,288"/>
<area shape="poly" title=" " alt="" coords="102,140,87,187,88,218,96,247,90,248,83,219,82,186,96,138"/>
<area shape="rect" href="general__gpio_8h.html" title="Заголовочный файл для модуля инициализации портов и работы с ними." alt="" coords="97,187,202,213"/>
<area shape="poly" title=" " alt="" coords="115,138,136,172,132,175,110,141"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="48,336,161,363"/>
<area shape="poly" title=" " alt="" coords="107,289,107,320,102,320,102,289"/>
<area shape="rect" title=" " alt="" coords="46,411,163,437"/>
<area shape="poly" title=" " alt="" coords="107,363,107,395,102,395,102,363"/>
<area shape="poly" title=" " alt="" coords="144,215,123,249,118,247,140,212"/>
</map>
</div>
</div>
<p><a href="general__tim_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga7044214f24a9868ba7e1650b55e639ec" id="r_ga7044214f24a9868ba7e1650b55e639ec"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_t_i_m___settings_type_def.html">TIM_SettingsTypeDef</a> *stim)</td></tr>
<tr class="memdesc:ga7044214f24a9868ba7e1650b55e639ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация таймера. <br /></td></tr>
<tr class="memitem:ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc" id="r_ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a> *henc, TIM_HandleTypeDef *htim)</td></tr>
<tr class="memdesc:ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация режима энкодер у таймера. <br /></td></tr>
<tr class="memitem:gadb2f465d89f609e035867e980c3a29c6" id="r_gadb2f465d89f609e035867e980c3a29c6"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:gadb2f465d89f609e035867e980c3a29c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация выхода ШИМ таймера. <br /></td></tr>
<tr class="memitem:gae2608ca8023e9a0713af0b4fbfbc1889" id="r_gae2608ca8023e9a0713af0b4fbfbc1889"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:gae2608ca8023e9a0713af0b4fbfbc1889"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация OC компаратора таймера. <br /></td></tr>
<tr class="memitem:gac3bc6525f88c275e47eb864e6d567501" id="r_gac3bc6525f88c275e47eb864e6d567501"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a> *henc)</td></tr>
<tr class="memdesc:gac3bc6525f88c275e47eb864e6d567501"><td class="mdescLeft">&#160;</td><td class="mdescRight">Считать энкодер. <br /></td></tr>
<tr class="memitem:ga117b795017e9e3a357ddefe323412761" id="r_ga117b795017e9e3a357ddefe323412761"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a> *henc)</td></tr>
<tr class="memdesc:ga117b795017e9e3a357ddefe323412761"><td class="mdescLeft">&#160;</td><td class="mdescRight">Считать кнопку энкодера. <br /></td></tr>
<tr class="memitem:ga88c552a133cb6e3015453cccab74c07e" id="r_ga88c552a133cb6e3015453cccab74c07e"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:ga88c552a133cb6e3015453cccab74c07e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Задержка в тиках таймера (блокирующая). <br /></td></tr>
<tr class="memitem:ga4c0dfde4e15f677600605348b4e97834" id="r_ga4c0dfde4e15f677600605348b4e97834"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:ga4c0dfde4e15f677600605348b4e97834"><td class="mdescLeft">&#160;</td><td class="mdescRight">Начать отсчет неблокирующей задержки. <br /></td></tr>
<tr class="memitem:ga108637af414bff3373059273b815ce9b" id="r_ga108637af414bff3373059273b815ce9b"><td class="memItemLeft" align="right" valign="top">HAL_StatusTypeDef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:ga108637af414bff3373059273b815ce9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Задержка в тиках таймера (неблокирующая). <br /></td></tr>
<tr class="memitem:gaad47337be7ba2f6c0777c40d7278c931" id="r_gaad47337be7ba2f6c0777c40d7278c931"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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="el" 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)</td></tr>
<tr class="memdesc:gaad47337be7ba2f6c0777c40d7278c931"><td class="mdescLeft">&#160;</td><td class="mdescRight">Инициализация CLK и NVIC таймеров. <br /></td></tr>
<tr class="memitem:ga879e3f1c919c02990736730275367115" id="r_ga879e3f1c919c02990736730275367115"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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)</td></tr>
<tr class="memdesc:ga879e3f1c919c02990736730275367115"><td class="mdescLeft">&#160;</td><td class="mdescRight">Деинициализация CLK и NVIC таймеров. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Модуль для инициализации таймеров и работы с ними. </p>
<p>Реализация функций для работы с TIM:</p><ul>
<li>Инициализация таймера и его каналов</li>
<li>Формирование задержек через таймеры</li>
<li>Считывание энкодера </li>
</ul>
<p class="definition">Definition in file <a class="el" href="general__tim_8c_source.html">general_tim.c</a>.</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</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>

Some files were not shown because too many files have changed in this diff Show More