Compare commits

..

7 Commits

Author SHA1 Message Date
eff64709bc фикс конфигов для субмодуля 2025-11-07 21:01:17 +03:00
6d1a5c8f71 release 0.2
- stm general перенесена в другой репозиторий
- рефакторинг документации
2025-11-07 20:28:01 +03:00
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
383 changed files with 0 additions and 49851 deletions

1
.gitignore vendored
View File

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

View File

@ -1,6 +0,0 @@
' open_index.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
scriptPath = WScript.ScriptFullName
scriptFolder = fso.GetParentFolderName(scriptPath)
htmlPath = scriptFolder & "\html\index.html"
CreateObject("WScript.Shell").Run """" & htmlPath & """", 1, False

File diff suppressed because it is too large Load Diff

View File

@ -1,543 +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/STM_Libs/STM32_ExtendedLibs/__SEGGER_RTT_Conf.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('_____s_e_g_g_e_r___r_t_t___conf_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">E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__SEGGER_RTT_Conf.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">* SEGGER Microcontroller GmbH *</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* The Embedded Experts *</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="comment">* *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* (c) 1995 - 2021 SEGGER Microcontroller GmbH *</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">* www.segger.com Support: support@segger.com *</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">* SEGGER RTT * Real Time Transfer for embedded targets *</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">* All rights reserved. *</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">* SEGGER strongly recommends to not make any changes *</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">* to or modify the source code of this software in order to stay *</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">* compatible with the RTT protocol and J-Link. *</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">* Redistribution and use in source and binary forms, with or *</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">* without modification, are permitted provided that the following *</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">* condition is met: *</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">* o Redistributions of source code must retain the above copyright *</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">* notice, this condition and the following disclaimer. *</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">* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">* CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, *</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">* DAMAGE. *</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">* *</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">* RTT version: 8.10g *</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"></span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">---------------------------END-OF-HEADER------------------------------</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">File : SEGGER_RTT_Conf.h</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">Purpose : Implementation of SEGGER real-time transfer (RTT) which</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment"> allows real-time communication on targets which support</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment"> debugger memory accesses while the CPU is running.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">Revision: $Rev: 24316 $</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> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor">#ifndef SEGGER_RTT_CONF_H</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor">#define SEGGER_RTT_CONF_H</span></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><span class="preprocessor">#ifdef __IAR_SYSTEMS_ICC__</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor"> #include &lt;intrinsics.h&gt;</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#endif</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="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">* Defines, configurable</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><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> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment">//</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment">// Take in and set to correct values for Cortex-A systems with CPU cache</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"> 75</span><span class="comment">//#define SEGGER_RTT_CPU_CACHE_LINE_SIZE (32) // Largest cache line size (in bytes) in the current system</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment">//#define SEGGER_RTT_UNCACHED_OFF (0xFB000000) // Address alias where RTT CB and buffers can be accessed uncached</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">// Most common case:</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment">// Up-channel 0: RTT</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment">// Up-channel 1: SystemView</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="preprocessor">#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="preprocessor"> #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) </span><span class="comment">// Max. number of up-buffers (T-&gt;H) available on this target (Default: 3)</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><span class="comment">//</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment">// Most common case:</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment">// Down-channel 0: RTT</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment">// Down-channel 1: SystemView</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="preprocessor">#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor"> #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) </span><span class="comment">// Max. number of down-buffers (H-&gt;T) available on this target (Default: 3)</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor">#endif</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="preprocessor">#ifndef BUFFER_SIZE_UP</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor"> #define BUFFER_SIZE_UP (4096) </span><span class="comment">// Size of the buffer for terminal output of target, up to host (Default: 1k)</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="preprocessor">#ifndef BUFFER_SIZE_DOWN</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="preprocessor"> #define BUFFER_SIZE_DOWN (16) </span><span class="comment">// Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor">#endif</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="preprocessor">#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor"> #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) </span><span class="comment">// Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64)</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="preprocessor">#ifndef SEGGER_RTT_MODE_DEFAULT</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="preprocessor"> #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_TRIM </span><span class="comment">// Mode for pre-initialized terminal channel (buffer 0)</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor">#endif</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"> 110</span><span class="comment">/*********************************************************************</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><span class="comment">* RTT memcpy configuration</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment">*</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment">* memcpy() is good for large amounts of data,</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment">* but the overhead is big for small amounts, which are usually stored via RTT.</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment">* With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead.</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment">*</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment">* SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions.</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment">* This is may be required with memory access restrictions,</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment">* such as on Cortex-A devices with MMU.</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="preprocessor">#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="preprocessor"> #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 </span><span class="comment">// 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="preprocessor">#endif</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">// Example definition of SEGGER_RTT_MEMCPY to external memcpy with GCC toolchains and Cortex-A targets</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="comment">//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) &amp;&amp; (defined (__ARM_ARCH_7A__))</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment">// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes))</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">//#endif</span></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">//</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">// Target is not allowed to perform other RTT operations while string still has not been stored completely.</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment">// Otherwise we would probably end up with a mixed string in the buffer.</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment">// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here.</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">// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4.</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment">// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches.</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment">// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly.</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment">// (Higher priority = lower priority number)</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment">// Default value for embOS: 128u</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment">// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY &lt;&lt; (8 - configPRIO_BITS) )</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment">// In case of doubt mask all interrupts: 1 &lt;&lt; (8 - BASEPRI_PRIO_BITS) i.e. 1 &lt;&lt; 5 when 3 bits are implemented in NVIC</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">// or define SEGGER_RTT_LOCK() to completely disable interrupts.</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="preprocessor">#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) </span><span class="comment">// Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20)</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="preprocessor">#endif</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><span class="comment">*</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment">* RTT lock configuration for SEGGER Embedded Studio,</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment">* Rowley CrossStudio and GCC</span></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="preprocessor">#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) &amp;&amp; !defined (__CC_ARM) &amp;&amp; !defined(WIN32))</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="preprocessor"> #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__))</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="preprocessor"> __asm volatile (&quot;mrs %0, primask \n\t&quot; \</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="preprocessor"> &quot;movs r1, #1 \n\t&quot; \</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="preprocessor"> &quot;msr primask, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor"> : &quot;=r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="preprocessor"> : &quot;r1&quot;, &quot;cc&quot; \</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor"> );</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="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile (&quot;msr primask, %0 \n\t&quot; \</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor"> : &quot;r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="preprocessor"> ); \</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="preprocessor"> #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8_1M_MAIN__))</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="preprocessor"> __asm volatile (&quot;mrs %0, basepri \n\t&quot; \</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="preprocessor"> &quot;mov r1, %1 \n\t&quot; \</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="preprocessor"> &quot;msr basepri, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="preprocessor"> : &quot;=r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="preprocessor"> : &quot;i&quot;(SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="preprocessor"> : &quot;r1&quot;, &quot;cc&quot; \</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor"> );</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> </div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile (&quot;msr basepri, %0 \n\t&quot; \</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="preprocessor"> : &quot;r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span><span class="preprocessor"> ); \</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="preprocessor"> #elif (defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__))</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="preprocessor"> __asm volatile (&quot;mrs r1, CPSR \n\t&quot; \</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="preprocessor"> &quot;mov %0, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="preprocessor"> &quot;orr r1, r1, #0xC0 \n\t&quot; \</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="preprocessor"> &quot;msr CPSR_c, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="preprocessor"> : &quot;=r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="preprocessor"> : &quot;r1&quot;, &quot;cc&quot; \</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="preprocessor"> );</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="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile (&quot;mov r0, %0 \n\t&quot; \</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="preprocessor"> &quot;mrs r1, CPSR \n\t&quot; \</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="preprocessor"> &quot;bic r1, r1, #0xC0 \n\t&quot; \</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="preprocessor"> &quot;and r0, r0, #0xC0 \n\t&quot; \</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="preprocessor"> &quot;orr r1, r1, r0 \n\t&quot; \</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="preprocessor"> &quot;msr CPSR_c, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="preprocessor"> : &quot;r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="preprocessor"> : &quot;r0&quot;, &quot;r1&quot;, &quot;cc&quot; \</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor"> ); \</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="preprocessor"> #elif defined(__riscv) || defined(__riscv_xlen)</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="preprocessor"> __asm volatile (&quot;csrr %0, mstatus \n\t&quot; \</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="preprocessor"> &quot;csrci mstatus, 8 \n\t&quot; \</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="preprocessor"> &quot;andi %0, %0, 8 \n\t&quot; \</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="preprocessor"> : &quot;=r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="preprocessor"> );</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="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile (&quot;csrr a1, mstatus \n\t&quot; \</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="preprocessor"> &quot;or %0, %0, a1 \n\t&quot; \</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor"> &quot;csrs mstatus, %0 \n\t&quot; \</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="preprocessor"> : &quot;r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="preprocessor"> : &quot;a1&quot; \</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="preprocessor"> ); \</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="preprocessor"> #define SEGGER_RTT_LOCK()</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK()</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="preprocessor">#endif</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">/*********************************************************************</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="comment">*</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="comment">* RTT lock configuration for IAR EWARM</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><span class="preprocessor">#ifdef __ICCARM__</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="preprocessor"> #if (defined (__ARM6M__) &amp;&amp; (__CORE__ == __ARM6M__)) || \</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="preprocessor"> (defined (__ARM8M_BASELINE__) &amp;&amp; (__CORE__ == __ARM8M_BASELINE__))</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="preprocessor"> _SEGGER_RTT__LockState = __get_PRIMASK(); \</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="preprocessor"> __set_PRIMASK(1);</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="preprocessor"> #elif (defined (__ARM7EM__) &amp;&amp; (__CORE__ == __ARM7EM__)) || \</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="preprocessor"> (defined (__ARM7M__) &amp;&amp; (__CORE__ == __ARM7M__)) || \</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="preprocessor"> (defined (__ARM8M_MAINLINE__) &amp;&amp; (__CORE__ == __ARM8M_MAINLINE__)) || \</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="preprocessor"> (defined (__ARM8M_MAINLINE__) &amp;&amp; (__CORE__ == __ARM8M_MAINLINE__))</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span><span class="preprocessor"> _SEGGER_RTT__LockState = __get_BASEPRI(); \</span></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="preprocessor"> __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="preprocessor"> #elif (defined (__ARM7A__) &amp;&amp; (__CORE__ == __ARM7A__)) || \</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="preprocessor"> (defined (__ARM7R__) &amp;&amp; (__CORE__ == __ARM7R__))</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="preprocessor"> __asm volatile (&quot;mrs r1, CPSR \n\t&quot; \</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="preprocessor"> &quot;mov %0, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="preprocessor"> &quot;orr r1, r1, #0xC0 \n\t&quot; \</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="preprocessor"> &quot;msr CPSR_c, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span><span class="preprocessor"> : &quot;=r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="preprocessor"> : &quot;r1&quot;, &quot;cc&quot; \</span></div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span><span class="preprocessor"> );</span></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"> #define SEGGER_RTT_UNLOCK() __asm volatile (&quot;mov r0, %0 \n\t&quot; \</span></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span><span class="preprocessor"> &quot;mrs r1, CPSR \n\t&quot; \</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span><span class="preprocessor"> &quot;bic r1, r1, #0xC0 \n\t&quot; \</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="preprocessor"> &quot;and r0, r0, #0xC0 \n\t&quot; \</span></div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span><span class="preprocessor"> &quot;orr r1, r1, r0 \n\t&quot; \</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="preprocessor"> &quot;msr CPSR_c, r1 \n\t&quot; \</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span><span class="preprocessor"> : \</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span><span class="preprocessor"> : &quot;r&quot; (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span><span class="preprocessor"> : &quot;r0&quot;, &quot;r1&quot;, &quot;cc&quot; \</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span><span class="preprocessor"> ); \</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span><span class="preprocessor">#endif</span></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="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="comment">*</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span><span class="comment">* RTT lock configuration for IAR RX</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span><span class="comment">*/</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="preprocessor">#ifdef __ICCRX__</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="preprocessor"> unsigned long _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="preprocessor"> _SEGGER_RTT__LockState = __get_interrupt_state(); \</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><span class="preprocessor"> __disable_interrupt();</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="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span><span class="preprocessor">#endif</span></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="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="comment">*</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span><span class="comment">* RTT lock configuration for IAR RL78</span></div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span><span class="comment">*/</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="preprocessor">#ifdef __ICCRL78__</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="preprocessor"> __istate_t _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="preprocessor"> _SEGGER_RTT__LockState = __get_interrupt_state(); \</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="preprocessor"> __disable_interrupt();</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="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span><span class="preprocessor">#endif</span></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="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="comment">*</span></div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span><span class="comment">* RTT lock configuration for KEIL ARM</span></div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span><span class="comment">*/</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="preprocessor">#ifdef __CC_ARM</span></div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="preprocessor"> #if (defined __TARGET_ARCH_6S_M)</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span><span class="preprocessor"> register unsigned char _SEGGER_RTT__PRIMASK __asm( &quot;primask&quot;); \</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span><span class="preprocessor"> _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span><span class="preprocessor"> _SEGGER_RTT__PRIMASK = 1u; \</span></div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="preprocessor"> __schedule_barrier();</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span><span class="preprocessor"> __schedule_barrier(); \</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span><span class="preprocessor"> #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span><span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span><span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span><span class="preprocessor"> register unsigned char BASEPRI __asm( &quot;basepri&quot;); \</span></div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span><span class="preprocessor"> _SEGGER_RTT__LockState = BASEPRI; \</span></div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span><span class="preprocessor"> BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \</span></div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span><span class="preprocessor"> __schedule_barrier();</span></div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> </div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span><span class="preprocessor"> __schedule_barrier(); \</span></div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span><span class="comment">*</span></div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span><span class="comment">* RTT lock configuration for TI ARM</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span><span class="comment">*/</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span><span class="preprocessor">#ifdef __TI_ARM__</span></div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span><span class="preprocessor"> #if defined (__TI_ARM_V6M0__)</span></div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span><span class="preprocessor"> _SEGGER_RTT__LockState = __get_PRIMASK(); \</span></div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span><span class="preprocessor"> __set_PRIMASK(1);</span></div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> </div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span><span class="preprocessor"> #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__))</span></div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span><span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span><span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span><span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="preprocessor"> _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);</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="preprocessor"> #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="comment">*</span></div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="comment">* RTT lock configuration for CCRX</span></div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span><span class="comment">*/</span></div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span><span class="preprocessor">#ifdef __RX</span></div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span><span class="preprocessor"> #include &lt;machine.h&gt;</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="preprocessor"> unsigned long _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span><span class="preprocessor"> _SEGGER_RTT__LockState = get_psw() &amp; 0x010000; \</span></div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="preprocessor"> clrpsw_i();</span></div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \</span></div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span><span class="comment">*</span></div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span><span class="comment">* RTT lock configuration for embOS Simulation on Windows</span></div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span><span class="comment">* (Can also be used for generic RTT locking with embOS)</span></div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span><span class="comment">*/</span></div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span><span class="preprocessor">#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS)</span></div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> </div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span><span class="keywordtype">void</span> OS_SIM_EnterCriticalSection(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span><span class="keywordtype">void</span> OS_SIM_LeaveCriticalSection(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> </div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span><span class="preprocessor">#define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span><span class="preprocessor"> OS_SIM_EnterCriticalSection();</span></div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> </div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span><span class="preprocessor">#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \</span></div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span><span class="preprocessor"> }</span></div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span><span class="comment">*</span></div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span><span class="comment">* RTT lock configuration fallback</span></div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span><span class="comment">*/</span></div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span><span class="preprocessor">#ifndef SEGGER_RTT_LOCK</span></div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span><span class="preprocessor"> #define SEGGER_RTT_LOCK() </span><span class="comment">// Lock RTT (nestable) (i.e. disable interrupts)</span></div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span><span class="preprocessor">#ifndef SEGGER_RTT_UNLOCK</span></div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span><span class="preprocessor"> #define SEGGER_RTT_UNLOCK() </span><span class="comment">// Unlock RTT (nestable) (i.e. enable previous interrupt lock state)</span></div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> </div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span><span class="comment">/*************************** End of file ****************************/</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"><b>__SEGGER_RTT_Conf.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,227 +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/STM_Libs/STM32_ExtendedLibs/__mylibs_config.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('____mylibs__config_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">E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__mylibs_config.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 mylibs_config.h</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Конфигурации для библиотек MyLibs</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 MYLIBS_CONFIG Configs</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @ingroup MYLIBS_ALL</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @brief Конфигурации для библиотек MyLibs</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* @{</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">*************************************************************************/</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#ifndef __MYLIBS_CONFIG_H_</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#define __MYLIBS_CONFIG_H_</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">#include &quot;stm32f4xx_hal.h&quot;</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">// user includes</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"> * @addtogroup TRACE_CONFIG Trace configs</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * @ingroup MYLIBS_CONFIG</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * @brief Конфигурация трекеров и трассировки</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> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496"> 25</a></span><span class="preprocessor">#define TRACKERS_ENABLE </span><span class="comment">///&lt; Включить трекеры</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6"> 26</a></span><span class="preprocessor">#define SERIAL_TRACE_ENABLE </span><span class="comment">///&lt; Включить serial трассировку</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8"> 27</a></span><span class="preprocessor">#define RTT_TRACE_ENABLE </span><span class="comment">///&lt; Включить serial трассировку через RTT</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336"> 28</a></span><span class="preprocessor">#define SWO_TRACE_ENABLE </span><span class="comment">///&lt; Включить serial трассировку через SWO</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"> * @brief Уровень log serial трассировки @ref log_printf</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment"> * - LOG_LEVEL == 0 - логирование отключено (макрос пустой)</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment"> * - LOG_LEVEL == 1 - выводится время и TAG</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment"> * - LOG_LEVEL &gt;= 2 - выводится время, TAG, имя файла и номер строки</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05"> 35</a></span><span class="preprocessor">#define LOG_LEVEL 1</span></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"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga501312b24e322de4dd6755ad442f0ba3"> 37</a></span><span class="preprocessor">#define RTT_FLASH_BUFFER_SIZE 1024 </span><span class="comment">///&lt; Размер буфера RTT в Flash</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga3bc1b76864e1d32cbdd174d4caae7724"> 38</a></span><span class="preprocessor">#define RTT_FLASH_SECTOR FLASH_SECTOR_11 </span><span class="comment">///&lt; Сектор FLASH куда положится RTT буфер</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga8e56f75d3ab8a89ddde1404ae23c3297"> 39</a></span><span class="preprocessor">#define RTT_FLASH_SECTOR_START 0x080E0000 </span><span class="comment">///&lt; Начало сектора RTT_FLASH_SECTOR</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d"> 40</a></span><span class="preprocessor">#define RTT_FLASH_SECTOR_END 0x080FFFFF </span><span class="comment">///&lt; Конец сектора RTT_FLASH_SECTOR</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6"> 43</a></span><span class="preprocessor">#define HARDFAULT_SERIAL_TRACE </span><span class="comment">///&lt; Включить обработку и serial трассировку Hardfault</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313"> 44</a></span><span class="preprocessor">#define HF_RTT_TAG_BASE 0xDEAD0000 </span><span class="comment">///&lt; базовый тег для HardFault</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca"> 45</a></span><span class="preprocessor">#define HF_RTT_TAIL_SIZE RTT_FLASH_BUFFER_SIZE </span><span class="comment">///&lt; Размер буфера RTT, который сохранится при Hardfault</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b"> 46</a></span><span class="preprocessor">#define HF_STACK_DUMP_WORDS 32 </span><span class="comment">///&lt; Сколько слов стека будет проанализировано во время Hardfault</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63"> 47</a></span><span class="preprocessor">#define HF_FLASH_ADDR ((uint32_t)0x080FF000) </span><span class="comment">///&lt; Адрес FLASH куда положится RTT буфер</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051"> 48</a></span><span class="preprocessor">#define HF_RAM_END 0x20030000 </span><span class="comment">///&lt; Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)</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"><a class="line" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b"> 50</a></span><span class="preprocessor">#define GPIO_TRACE_ENABLE </span><span class="comment">///&lt; Включить GPIO трассировку</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">/** TRACE_CONFIG</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"> * @addtogroup GEN_CONFIG Genetic configs</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> * @ingroup MYLIBS_CONFIG</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> * @brief Конфигурация генетического алгоритма обучения</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> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c"> 64</a></span><span class="preprocessor">#define GEN_OPTIMIZATION_ENABLE </span><span class="comment">///&lt; Включить оптимизацию параметров</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab"> 65</a></span><span class="preprocessor">#define GEN_MAX_PARAMS 20 </span><span class="comment">///&lt; Максимальное количество параметров</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869"> 66</a></span><span class="preprocessor">#define GEN_MAX_CANDIDATES 100 </span><span class="comment">///&lt; Максимальное количество кандидатов для обучения</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">/** GEN_CONFIG</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"> */</span></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><span class="comment"></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"> * @addtogroup GEN_CONFIG Genetic configs</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> * @ingroup MYLIBS_CONFIG</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"> * @brief Конфигурация генетического алгоритма обучения</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"> */</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"><a class="line" href="group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9"> 81</a></span><span class="preprocessor">#define BENCH_TIME_ENABLE </span><span class="comment">///&lt; Включить бенч времени</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52"> 82</a></span><span class="preprocessor">#define BENCH_TIME_MAX_CHANNELS 16 </span><span class="comment">///&lt; Максимальное количество каналов измерения</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="comment">/** GEN_CONFIG</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"> */</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> </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="comment">/** </span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> * @addtogroup LIBS_CONFIG Libraries configs</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> * @ingroup MYLIBS_CONFIG</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> * @brief Подключение различных модулей библиотеки</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> * @{</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> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653"> 97</a></span><span class="preprocessor">#define local_time() uwTick </span><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"><a class="line" href="group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692"> 99</a></span><span class="preprocessor">#define INCLUDE_GEN_OPTIMIZER </span><span class="comment">///&lt; Подключить библиотеку для оптимизации параметров</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be"> 100</a></span><span class="preprocessor">#define INCLUDE_BIT_ACCESS_LIB </span><span class="comment">///&lt; Подключить библиотеку с typedef с битовыми полями</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32"> 101</a></span><span class="preprocessor">#define INCLUDE_TRACKERS_LIB </span><span class="comment">///&lt; Подключить библиотеку с трекерами</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7"> 102</a></span><span class="preprocessor">#define INCLUDE_TRACE_LIB </span><span class="comment">///&lt; Подключить библиотеку с трейсами</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281"> 103</a></span><span class="preprocessor">#define INCLUDE_GENERAL_PERIPH_LIBS </span><span class="comment">///&lt; Подключить библиотеку с периферией</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151"> 104</a></span><span class="preprocessor">#define FREERTOS_DELAY </span><span class="comment">///&lt; Использовать FreeRTOS задержку, вместо HAL</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">/** LIBS_CONFIG</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="comment"> */</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_CONFIG</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><span class="comment"> */</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="preprocessor">#endif </span><span class="comment">//__MYLIBS_CONFIG_H_</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"><b>__mylibs_config.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,257 +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/STM_Libs/STM32_ExtendedLibs/__mylibs_include.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('____mylibs__include_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">E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/__mylibs_include.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 mylibs_include.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">* @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">чтобы не подключать 100 инклюдов в каждом &quot;.c&quot; файле</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">* @defgroup MYLIBS_ALL My Libs</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">* @brief Все используемые MyLibs библиотеки</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">* @details</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">- Сконфигурировать mylibs_config.h:</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> - Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx_hal.h)</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"> - Подключить mylibs_include.h туда, где необходим доступ к библиотекам.</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="preprocessor">#ifndef __MYLIBS_INCLUDE_H_</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define __MYLIBS_INCLUDE_H_</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</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="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="preprocessor">#ifdef ARM_MATH_CM4</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor"> #include &quot;arm_math.h&quot;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor"> #include &quot;math.h&quot;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#endif</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> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#ifdef INCLUDE_BIT_ACCESS_LIB</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &quot;<a class="code" href="bit__access_8h.html">bit_access.h</a>&quot;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#endif</span></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="preprocessor">#ifdef INCLUDE_TRACKERS_LIB</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#include &quot;<a class="code" href="trackers_8h.html">trackers.h</a>&quot;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor"> #define TrackerTypeDef(num_user_vars) void *</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor"> #define num_of_usercnts(_user_) 0</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor"> #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor"> #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor"> #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor"> #define TrackerGet_Ok(_cntstruct_) dummy</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor"> #define TrackerGet_Err(_cntstruct_) dummy</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="preprocessor"> #define TrackerGet_Warn(_cntstruct_) dummy </span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor"> #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor"> #define TrackerCnt_Ok(_cntstruct_) </span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor"> #define TrackerCnt_Err(_cntstruct_) </span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor"> #define TrackerCnt_Warn(_cntstruct_) </span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor"> #define TrackerCnt_User(_cntstruct_, _uservarnumb_) </span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor"> #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor"> #define TrackerClear_All(_cntstruct_) </span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor"> #define TrackerClear_Ok(_cntstruct_) </span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor"> #define TrackerClear_Err(_cntstruct_) </span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor"> #define TrackerClear_Warn(_cntstruct_) </span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor"> #define TrackerClear_User(_cntstruct_) </span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor"> #define TrackerClear_UserAll(_cntstruct_) </span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#ifdef INCLUDE_TRACE_LIB</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#include &quot;<a class="code" href="trace_8h.html">trace.h</a>&quot;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#define my_printf(...)</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#define log_printf(TAG, fmt, ...) </span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#define TRACE_GPIO_SET(_gpio_,_pin_)</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#define TRACE_GPIO_RESET(_gpio_,_pin_)</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="preprocessor">#define RTT_FlashPrepare(...)</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#define RTT_EraseFlash(...) 0</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="preprocessor">#define RTT_SaveToFlash(...) 0</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="preprocessor">#define RTT_ReadFromFlash(...) 0</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#define HF_CheckRecovered(...) 0</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">#define HF_HandleFault(...)</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#endif</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">#ifdef INCLUDE_GEN_OPTIMIZER</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="preprocessor">#include &quot;<a class="code" href="gen__optimizer_8h.html">gen_optimizer.h</a>&quot;</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> uint16_t n_params; </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> uint16_t n_cand; </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> uint16_t n_best; </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> uint16_t iq_mutation; </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> int32_t loss[0]; </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> int32_t candidates[0][0]; </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span>} <a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor">#define GenOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor">#define GenOptimizer_Step(opt, params, LossFunc)</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor">#define PARAM_SCALE_Q16(x, min_val, max_val) (x)</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor">#endif</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> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#ifdef INCLUDE_BENCH_TEST</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="preprocessor">#include &quot;<a class="code" href="bench__time_8h.html">bench_time.h</a>&quot;</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="preprocessor">#else </span><span class="comment">//BENCH_TIME_ENABLE</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="preprocessor">#define BenchTime_Init()</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor">#define BenchTime_Start(channel, ticks, tick_period) 0</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="preprocessor">#define BenchTime_End(channel, ticks) 0</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="preprocessor">#define BenchTime_GetMin(channel) 0</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor">#define BenchTime_GetMax(channel) 0</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="preprocessor">#define BenchTime_GetAverage(channel) 0</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="preprocessor">#define BenchTime_GetCount(channel) 0</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="preprocessor">#define BenchTime_GetLast(channel) 0</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="preprocessor">#define BenchTime_ResetStats(channel)</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor">#endif </span><span class="comment">//BENCH_TIME_ENABLE</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"> 110</span><span class="preprocessor">#ifdef INCLUDE_GENERAL_PERIPH_LIBS</span></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><span class="preprocessor">#include &quot;__general_flash.h&quot;</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="preprocessor">#include &quot;general_gpio.h&quot;</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="preprocessor">#ifdef HAL_SPI_MODULE_ENABLED</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor">#include &quot;general_spi.h&quot;</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor">#ifdef HAL_UART_MODULE_ENABLED</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="preprocessor">#include &quot;general_uart.h&quot;</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="preprocessor">#ifdef HAL_TIM_MODULE_ENABLED</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor">#include &quot;general_tim.h&quot;</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="preprocessor">#endif </span><span class="comment">//INCLUDE_GENERAL_PERIPH_LIBS</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </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">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">// user includes</span></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">// user settings</span><span class="comment"></span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">/////////////////////////---USER SETTINGS---/////////////////////////</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="preprocessor">#endif </span><span class="comment">// __MYLIBS_INCLUDE_H_</span></div>
<div class="ttc" id="abench__time_8h_html"><div class="ttname"><a href="bench__time_8h.html">bench_time.h</a></div><div class="ttdoc">Заголовочный файл для измерения времени между событиями</div></div>
<div class="ttc" id="abit__access_8h_html"><div class="ttname"><a href="bit__access_8h.html">bit_access.h</a></div><div class="ttdoc">Заголочный файл для дефайнов битового доступа.</div></div>
<div class="ttc" id="agen__optimizer_8h_html"><div class="ttname"><a href="gen__optimizer_8h.html">gen_optimizer.h</a></div><div class="ttdoc">Заголовочный файл для адаптивного подбора параметров</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_gen_optimizer__t_html"><div class="ttname"><a href="struct_gen_optimizer__t.html">GenOptimizer_t</a></div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00319">gen_optimizer.h:319</a></div></div>
<div class="ttc" id="atrace_8h_html"><div class="ttname"><a href="trace_8h.html">trace.h</a></div><div class="ttdoc">Заголочный файл для работы с трассировкой.</div></div>
<div class="ttc" id="atrackers_8h_html"><div class="ttname"><a href="trackers_8h.html">trackers.h</a></div><div class="ttdoc">Заголочный файл для работы с трекерами Trackers defines.</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"><b>__mylibs_include.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>

File diff suppressed because it is too large Load Diff

View File

@ -1,636 +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/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT.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('_s_e_g_g_e_r___r_t_t_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">SEGGER_RTT.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">* SEGGER Microcontroller GmbH *</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* The Embedded Experts *</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="comment">* *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* (c) 1995 - 2021 SEGGER Microcontroller GmbH *</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">* www.segger.com Support: support@segger.com *</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">* SEGGER RTT * Real Time Transfer for embedded targets *</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">* All rights reserved. *</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">* SEGGER strongly recommends to not make any changes *</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">* to or modify the source code of this software in order to stay *</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">* compatible with the RTT protocol and J-Link. *</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">* Redistribution and use in source and binary forms, with or *</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">* without modification, are permitted provided that the following *</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">* condition is met: *</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">* o Redistributions of source code must retain the above copyright *</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">* notice, this condition and the following disclaimer. *</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">* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">* CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, *</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">* DAMAGE. *</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">* *</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">* RTT version: 8.10g *</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"></span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">---------------------------END-OF-HEADER------------------------------</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">File : SEGGER_RTT.h</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">Purpose : Implementation of SEGGER real-time transfer which allows</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment"> real-time communication on targets which support debugger</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment"> memory accesses while the CPU is running.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">Revision: $Rev: 25842 $</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> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor">#ifndef SEGGER_RTT_H</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor">#define SEGGER_RTT_H</span></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><span class="preprocessor">#include &quot;SEGGER_RTT_Conf.h&quot;</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">*</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment">* Defines, defaults</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">*/</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#ifndef RTT_USE_ASM</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// Some cores support out-of-order memory accesses (reordering of memory accesses in the core)</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// For such cores, we need to define a memory barrier to guarantee the order of certain accesses to the RTT ring buffers.</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// Needed for:</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// Cortex-M7 (ARMv7-M)</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// Cortex-M23 (ARM-v8M)</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// Cortex-M33 (ARM-v8M)</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// Cortex-A/R (ARM-v7A/R)</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">//</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// We do not explicitly check for &quot;Embedded Studio&quot; as the compiler in use determines what we support.</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// You can use an external toolchain like IAR inside ES. So there is no point in checking for &quot;Embedded Studio&quot;</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="preprocessor"> #if (defined __CROSSWORKS_ARM) </span><span class="comment">// Rowley Crossworks</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor"> #define _CC_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="preprocessor"> #if (defined __ARM_ARCH_7M__) </span><span class="comment">// Cortex-M3</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="preprocessor"> #elif (defined __ARM_ARCH_7EM__) </span><span class="comment">// Cortex-M4/M7</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8M_BASE__) </span><span class="comment">// Cortex-M23</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8M_MAIN__) </span><span class="comment">// Cortex-M33</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="preprocessor"> #elif (defined(__ARM_ARCH_8_1M_MAIN__)) </span><span class="comment">// Cortex-M85</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="preprocessor"> #elif (defined __ARMCC_VERSION)</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="comment">// ARM compiler</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// ARM compiler V6.0 and later is clang based.</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// Our ASM part is compatible to clang.</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><span class="preprocessor"> #if (__ARMCC_VERSION &gt;= 6000000)</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="preprocessor"> #define _CC_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor"> #define _CC_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor"> #if (defined __ARM_ARCH_6M__) </span><span class="comment">// Cortex-M0 / M1</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0 </span><span class="comment">// No ASM support for this architecture</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="preprocessor"> #elif (defined __ARM_ARCH_7M__) </span><span class="comment">// Cortex-M3</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor"> #elif (defined __ARM_ARCH_7EM__) </span><span class="comment">// Cortex-M4/M7</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8M_BASE__) </span><span class="comment">// Cortex-M23</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8M_MAIN__) </span><span class="comment">// Cortex-M33</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8_1M_MAIN__) </span><span class="comment">// Cortex-M85</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="preprocessor"> #elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) </span><span class="comment">// Cortex-A/R 32-bit ARMv7-A/R</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="preprocessor"> #elif ((defined __GNUC__) || (defined __clang__))</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">// GCC / Clang</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="preprocessor"> #define _CC_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// ARM 7/9: __ARM_ARCH_5__ / __ARM_ARCH_5E__ / __ARM_ARCH_5T__ / __ARM_ARCH_5T__ / __ARM_ARCH_5TE__</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="preprocessor"> #if (defined __ARM_ARCH_7M__) </span><span class="comment">// Cortex-M3</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="preprocessor"> #elif (defined __ARM_ARCH_7EM__) </span><span class="comment">// Cortex-M4/M7</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1 </span><span class="comment">// Only Cortex-M7 needs a DMB but we cannot distinguish M4 and M7 here...</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8M_BASE__) </span><span class="comment">// Cortex-M23</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8M_MAIN__) </span><span class="comment">// Cortex-M33</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="preprocessor"> #elif (defined __ARM_ARCH_8_1M_MAIN__) </span><span class="comment">// Cortex-M85</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="preprocessor"> #elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) </span><span class="comment">// Cortex-A/R 32-bit ARMv7-A/R</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor"> #define RTT__DMB() __asm volatile (&quot;dmb\n&quot; : : :);</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="preprocessor"> #elif ((defined __IASMARM__) || (defined __ICCARM__))</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">// IAR assembler/compiler</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="comment">//</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="preprocessor"> #define _CC_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="preprocessor"> #if (__VER__ &lt; 6300000)</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="preprocessor"> #define VOLATILE</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="preprocessor"> #define VOLATILE volatile</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="preprocessor"> #if (defined __ARM7M__) </span><span class="comment">// Needed for old versions that do not know the define yet</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="preprocessor"> #if (__CORE__ == __ARM7M__) </span><span class="comment">// Cortex-M3</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="preprocessor"> #endif</span></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><span class="preprocessor"> #if (defined __ARM7EM__)</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="preprocessor"> #if (__CORE__ == __ARM7EM__) </span><span class="comment">// Cortex-M4/M7</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="preprocessor"> #define RTT__DMB() asm VOLATILE (&quot;DMB&quot;);</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="preprocessor"> #if (defined __ARM8M_BASELINE__)</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="preprocessor"> #if (__CORE__ == __ARM8M_BASELINE__) </span><span class="comment">// Cortex-M23</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="preprocessor"> #define RTT__DMB() asm VOLATILE (&quot;DMB&quot;);</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="preprocessor"> #if (defined __ARM8M_MAINLINE__)</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="preprocessor"> #if (__CORE__ == __ARM8M_MAINLINE__) </span><span class="comment">// Cortex-M33</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="preprocessor"> #define RTT__DMB() asm VOLATILE (&quot;DMB&quot;);</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="preprocessor"> #if (defined __ARM8EM_MAINLINE__)</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="preprocessor"> #if (__CORE__ == __ARM8EM_MAINLINE__) </span><span class="comment">// Cortex-???</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 1</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="preprocessor"> #define RTT__DMB() asm VOLATILE (&quot;DMB&quot;);</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="preprocessor"> #if (defined __ARM7A__)</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="preprocessor"> #if (__CORE__ == __ARM7A__) </span><span class="comment">// Cortex-A 32-bit ARMv7-A</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor"> #define RTT__DMB() asm VOLATILE (&quot;DMB&quot;);</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="preprocessor"> #if (defined __ARM7R__)</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="preprocessor"> #if (__CORE__ == __ARM7R__) </span><span class="comment">// Cortex-R 32-bit ARMv7-R</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 1</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor"> #define RTT__DMB() asm VOLATILE (&quot;DMB&quot;);</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="comment">// TBD: __ARM8A__ =&gt; Cortex-A 64-bit ARMv8-A</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment">// TBD: __ARM8R__ =&gt; Cortex-R 64-bit ARMv8-R</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">//</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// Other compilers</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="comment">//</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="preprocessor"> #define _CC_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="comment">//</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// If IDE and core support the ASM version, enable ASM version by default</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="comment">//</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="preprocessor"> #ifndef _CORE_HAS_RTT_ASM_SUPPORT</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="preprocessor"> #define _CORE_HAS_RTT_ASM_SUPPORT 0 </span><span class="comment">// Default for unknown cores</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="preprocessor"> #if (_CC_HAS_RTT_ASM_SUPPORT &amp;&amp; _CORE_HAS_RTT_ASM_SUPPORT)</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="preprocessor"> #define RTT_USE_ASM (1)</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="preprocessor"> #define RTT_USE_ASM (0)</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> </div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="preprocessor">#ifndef _CORE_NEEDS_DMB</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="preprocessor"> #define _CORE_NEEDS_DMB 0</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="preprocessor">#ifndef RTT__DMB</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="preprocessor"> #if _CORE_NEEDS_DMB</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="preprocessor"> #error &quot;Don&#39;t know how to place inline assembly for DMB&quot;</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="preprocessor"> #define RTT__DMB()</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="preprocessor">#ifndef SEGGER_RTT_CPU_CACHE_LINE_SIZE</span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span><span class="preprocessor"> #define SEGGER_RTT_CPU_CACHE_LINE_SIZE (0) </span><span class="comment">// On most target systems where RTT is used, we do not have a CPU cache, therefore 0 is a good default here</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="preprocessor">#endif</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="preprocessor">#ifndef SEGGER_RTT_UNCACHED_OFF</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="preprocessor"> #if SEGGER_RTT_CPU_CACHE_LINE_SIZE</span></div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><span class="preprocessor"> #error &quot;SEGGER_RTT_UNCACHED_OFF must be defined when setting SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0&quot;</span></div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="preprocessor"> #define SEGGER_RTT_UNCACHED_OFF (0)</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="preprocessor">#if RTT_USE_ASM</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="preprocessor"> #if SEGGER_RTT_CPU_CACHE_LINE_SIZE</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="preprocessor"> #error &quot;RTT_USE_ASM is not available if SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0&quot;</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="preprocessor">#endif</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="preprocessor">#ifndef SEGGER_RTT_ASM </span><span class="comment">// defined when SEGGER_RTT.h is included from assembly file</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span><span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span><span class="comment">*</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="comment">* Defines, fixed</span></div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span><span class="comment">*</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span><span class="comment">*/</span></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="comment">//</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span><span class="comment">// Determine how much we must pad the control block to make it a multiple of a cache line in size</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><span class="comment">// Assuming: U8 = 1B</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span><span class="comment">// U16 = 2B</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span><span class="comment">// U32 = 4B</span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="comment">// U8/U16/U32* = 4B</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span><span class="comment">//</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="preprocessor">#if SEGGER_RTT_CPU_CACHE_LINE_SIZE </span><span class="comment">// Avoid division by zero in case we do not have any cache</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span><span class="preprocessor"> #define SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(NumBytes) (((NumBytes + SEGGER_RTT_CPU_CACHE_LINE_SIZE - 1) / SEGGER_RTT_CPU_CACHE_LINE_SIZE) * SEGGER_RTT_CPU_CACHE_LINE_SIZE)</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="preprocessor"> #define SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(NumBytes) (NumBytes)</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="preprocessor">#define SEGGER_RTT__CB_SIZE (16 + 4 + 4 + (SEGGER_RTT_MAX_NUM_UP_BUFFERS * 24) + (SEGGER_RTT_MAX_NUM_DOWN_BUFFERS * 24))</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="preprocessor">#define SEGGER_RTT__CB_PADDING (SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(SEGGER_RTT__CB_SIZE) - SEGGER_RTT__CB_SIZE)</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="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span><span class="comment">*</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span><span class="comment">* Types</span></div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span><span class="comment">*</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="comment">*/</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> </div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span><span class="comment">//</span></div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span><span class="comment">// Description for a circular buffer (also called &quot;ring buffer&quot;)</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="comment">// which is used as up-buffer (T-&gt;H)</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="comment">//</span></div>
<div class="foldopen" id="foldopen00317" data-start="{" data-end="};">
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"><a class="line" href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html"> 317</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* sName; <span class="comment">// Optional name. Standard names so far are: &quot;Terminal&quot;, &quot;SysView&quot;, &quot;J-Scope_t4i4&quot;</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <span class="keywordtype">char</span>* pBuffer; <span class="comment">// Pointer to start of buffer</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordtype">unsigned</span> SizeOfBuffer; <span class="comment">// Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <span class="keywordtype">unsigned</span> WrOff; <span class="comment">// Position of next item to be written by either target.</span></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="keyword">volatile</span> <span class="keywordtype">unsigned</span> RdOff; <span class="comment">// Position of next item to be read by host. Must be volatile since it may be modified by host.</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordtype">unsigned</span> Flags; <span class="comment">// Contains configuration flags. Flags[31:24] are used for validity check and must be zero. Flags[23:2] are reserved for future use. Flags[1:0] = RTT operating mode.</span></div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span>} <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html">SEGGER_RTT_BUFFER_UP</a>;</div>
</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="comment">//</span></div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span><span class="comment">// Description for a circular buffer (also called &quot;ring buffer&quot;)</span></div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span><span class="comment">// which is used as down-buffer (H-&gt;T)</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="comment">//</span></div>
<div class="foldopen" id="foldopen00330" data-start="{" data-end="};">
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"><a class="line" href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html"> 330</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* sName; <span class="comment">// Optional name. Standard names so far are: &quot;Terminal&quot;, &quot;SysView&quot;, &quot;J-Scope_t4i4&quot;</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keywordtype">char</span>* pBuffer; <span class="comment">// Pointer to start of buffer</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keywordtype">unsigned</span> SizeOfBuffer; <span class="comment">// Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> <span class="keyword">volatile</span> <span class="keywordtype">unsigned</span> WrOff; <span class="comment">// Position of next item to be written by host. Must be volatile since it may be modified by host.</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <span class="keywordtype">unsigned</span> RdOff; <span class="comment">// Position of next item to be read by target (down-buffer).</span></div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordtype">unsigned</span> Flags; <span class="comment">// Contains configuration flags. Flags[31:24] are used for validity check and must be zero. Flags[23:2] are reserved for future use. Flags[1:0] = RTT operating mode.</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span>} <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html">SEGGER_RTT_BUFFER_DOWN</a>;</div>
</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="comment">//</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span><span class="comment">// RTT control block which describes the number of buffers available</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span><span class="comment">// as well as the configuration for each buffer</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span><span class="comment">//</span></div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span><span class="comment">//</span></div>
<div class="foldopen" id="foldopen00344" data-start="{" data-end="};">
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"><a class="line" href="struct_s_e_g_g_e_r___r_t_t___c_b.html"> 344</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="keywordtype">char</span> acID[16]; <span class="comment">// Initialized to &quot;SEGGER RTT&quot;</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keywordtype">int</span> MaxNumUpBuffers; <span class="comment">// Initialized to SEGGER_RTT_MAX_NUM_UP_BUFFERS (type. 2)</span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keywordtype">int</span> MaxNumDownBuffers; <span class="comment">// Initialized to SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (type. 2)</span></div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html">SEGGER_RTT_BUFFER_UP</a> aUp[SEGGER_RTT_MAX_NUM_UP_BUFFERS]; <span class="comment">// Up buffers, transferring information up from target via debug probe to host</span></div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html">SEGGER_RTT_BUFFER_DOWN</a> aDown[SEGGER_RTT_MAX_NUM_DOWN_BUFFERS]; <span class="comment">// Down buffers, transferring information down from host via debug probe to target</span></div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span><span class="preprocessor">#if SEGGER_RTT__CB_PADDING</span></div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> aDummy[SEGGER_RTT__CB_PADDING];</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span>} <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___c_b.html">SEGGER_RTT_CB</a>;</div>
</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">* Global data</span></div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span><span class="comment">*</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span><span class="comment">**********************************************************************</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><span class="keyword">extern</span> <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___c_b.html">SEGGER_RTT_CB</a> _SEGGER_RTT;</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">/*********************************************************************</span></div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span><span class="comment">*</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span><span class="comment">* RTT API functions</span></div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span><span class="comment">*</span></div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span><span class="comment">*/</span></div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span><span class="keywordtype">int</span> SEGGER_RTT_AllocDownBuffer (<span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span><span class="keywordtype">int</span> SEGGER_RTT_AllocUpBuffer (<span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span><span class="keywordtype">int</span> SEGGER_RTT_ConfigUpBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span><span class="keywordtype">int</span> SEGGER_RTT_ConfigDownBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span><span class="keywordtype">int</span> SEGGER_RTT_GetKey (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="keywordtype">unsigned</span> SEGGER_RTT_HasData (<span class="keywordtype">unsigned</span> BufferIndex);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span><span class="keywordtype">int</span> SEGGER_RTT_HasKey (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span><span class="keywordtype">unsigned</span> SEGGER_RTT_HasDataUp (<span class="keywordtype">unsigned</span> BufferIndex);</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span><span class="keywordtype">void</span> SEGGER_RTT_Init (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span><span class="keywordtype">unsigned</span> SEGGER_RTT_Read (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize);</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="keywordtype">unsigned</span> SEGGER_RTT_ReadNoLock (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">void</span>* pData, <span class="keywordtype">unsigned</span> BufferSize);</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span><span class="keywordtype">int</span> SEGGER_RTT_SetNameDownBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName);</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="keywordtype">int</span> SEGGER_RTT_SetNameUpBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName);</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="keywordtype">int</span> SEGGER_RTT_SetFlagsDownBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="keywordtype">int</span> SEGGER_RTT_SetFlagsUpBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span><span class="keywordtype">int</span> SEGGER_RTT_WaitKey (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span><span class="keywordtype">unsigned</span> SEGGER_RTT_Write (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span><span class="keywordtype">unsigned</span> SEGGER_RTT_WriteNoLock (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span><span class="keywordtype">unsigned</span> SEGGER_RTT_WriteSkipNoLock (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="keywordtype">unsigned</span> SEGGER_RTT_ASM_WriteSkipNoLock (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span><span class="keywordtype">unsigned</span> SEGGER_RTT_WriteString (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* s);</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="keywordtype">void</span> SEGGER_RTT_WriteWithOverwriteNoLock(<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span><span class="keywordtype">unsigned</span> SEGGER_RTT_PutChar (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">char</span> c);</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span><span class="keywordtype">unsigned</span> SEGGER_RTT_PutCharSkip (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">char</span> c);</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span><span class="keywordtype">unsigned</span> SEGGER_RTT_PutCharSkipNoLock (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">char</span> c);</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span><span class="keywordtype">unsigned</span> SEGGER_RTT_GetAvailWriteSpace (<span class="keywordtype">unsigned</span> BufferIndex);</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span><span class="keywordtype">unsigned</span> SEGGER_RTT_GetBytesInBuffer (<span class="keywordtype">unsigned</span> BufferIndex);</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span><span class="comment">//</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span><span class="comment">// Function macro for performance optimization</span></div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span><span class="comment">//</span></div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span><span class="preprocessor">#define SEGGER_RTT_HASDATA(n) (((SEGGER_RTT_BUFFER_DOWN*)((uintptr_t)&amp;_SEGGER_RTT.aDown[n] + SEGGER_RTT_UNCACHED_OFF))-&gt;WrOff - ((SEGGER_RTT_BUFFER_DOWN*)((uintptr_t)&amp;_SEGGER_RTT.aDown[n] + SEGGER_RTT_UNCACHED_OFF))-&gt;RdOff)</span></div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> </div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span><span class="preprocessor">#if RTT_USE_ASM</span></div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span><span class="preprocessor"> #define SEGGER_RTT_WriteSkipNoLock SEGGER_RTT_ASM_WriteSkipNoLock</span></div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> </div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span><span class="comment">*</span></div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span><span class="comment">* RTT transfer functions to send RTT data via other channels.</span></div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span><span class="comment">*</span></div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span><span class="comment">*/</span></div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span><span class="keywordtype">unsigned</span> SEGGER_RTT_ReadUpBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span><span class="keywordtype">unsigned</span> SEGGER_RTT_ReadUpBufferNoLock (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">void</span>* pData, <span class="keywordtype">unsigned</span> BufferSize);</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span><span class="keywordtype">unsigned</span> SEGGER_RTT_WriteDownBuffer (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span><span class="keywordtype">unsigned</span> SEGGER_RTT_WriteDownBufferNoLock (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> </div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span><span class="preprocessor">#define SEGGER_RTT_HASDATA_UP(n) (((SEGGER_RTT_BUFFER_UP*)((uintptr_t)&amp;_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))-&gt;WrOff - ((SEGGER_RTT_BUFFER_UP*)((uintptr_t)&amp;_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))-&gt;RdOff) </span><span class="comment">// Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly</span></div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span><span class="comment">*</span></div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span><span class="comment">* RTT &quot;Terminal&quot; API functions</span></div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span><span class="comment">*</span></div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span><span class="comment">*/</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span><span class="keywordtype">int</span> SEGGER_RTT_SetTerminal (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> TerminalId);</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span><span class="keywordtype">int</span> SEGGER_RTT_TerminalOut (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> TerminalId, <span class="keyword">const</span> <span class="keywordtype">char</span>* s);</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> </div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span><span class="comment">*</span></div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span><span class="comment">* RTT printf functions (require SEGGER_RTT_printf.c)</span></div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span><span class="comment">*</span></div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span><span class="comment">*/</span></div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span><span class="keywordtype">int</span> SEGGER_RTT_printf(<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span> * sFormat, ...);</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span><span class="keywordtype">int</span> SEGGER_RTT_vprintf(<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span> * sFormat, va_list * pParamList);</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> }</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> </div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span><span class="preprocessor">#endif </span><span class="comment">// ifndef(SEGGER_RTT_ASM)</span></div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span><span class="comment">//</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span><span class="comment">// For some environments, NULL may not be defined until certain headers are included</span></div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span><span class="comment">//</span></div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span><span class="preprocessor">#ifndef NULL</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span><span class="preprocessor"> #define NULL ((void*)0)</span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> </div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span><span class="comment">*</span></div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span><span class="comment">* Defines</span></div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span><span class="comment">*</span></div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span><span class="comment">*/</span></div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> </div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span><span class="comment">//</span></div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span><span class="comment">// Operating modes. Define behavior if buffer is full (not enough space for entire message)</span></div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span><span class="comment">//</span></div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span><span class="preprocessor">#define SEGGER_RTT_MODE_NO_BLOCK_SKIP (0) </span><span class="comment">// Skip. Do not block, output nothing. (Default)</span></div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span><span class="preprocessor">#define SEGGER_RTT_MODE_NO_BLOCK_TRIM (1) </span><span class="comment">// Trim: Do not block, output as much as fits.</span></div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span><span class="preprocessor">#define SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL (2) </span><span class="comment">// Block: Wait until there is space in the buffer.</span></div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span><span class="preprocessor">#define SEGGER_RTT_MODE_MASK (3)</span></div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> </div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span><span class="comment">//</span></div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="comment">// Control sequences, based on ANSI.</span></div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span><span class="comment">// Can be used to control color, and clear the screen</span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="comment">//</span></div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span><span class="preprocessor">#define RTT_CTRL_RESET &quot;\x1B[0m&quot; </span><span class="comment">// Reset to default colors</span></div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span><span class="preprocessor">#define RTT_CTRL_CLEAR &quot;\x1B[2J&quot; </span><span class="comment">// Clear screen, reposition cursor to top left</span></div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> </div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span><span class="preprocessor">#define RTT_CTRL_TEXT_BLACK &quot;\x1B[2;30m&quot;</span></div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span><span class="preprocessor">#define RTT_CTRL_TEXT_RED &quot;\x1B[2;31m&quot;</span></div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span><span class="preprocessor">#define RTT_CTRL_TEXT_GREEN &quot;\x1B[2;32m&quot;</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span><span class="preprocessor">#define RTT_CTRL_TEXT_YELLOW &quot;\x1B[2;33m&quot;</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span><span class="preprocessor">#define RTT_CTRL_TEXT_BLUE &quot;\x1B[2;34m&quot;</span></div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span><span class="preprocessor">#define RTT_CTRL_TEXT_MAGENTA &quot;\x1B[2;35m&quot;</span></div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span><span class="preprocessor">#define RTT_CTRL_TEXT_CYAN &quot;\x1B[2;36m&quot;</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span><span class="preprocessor">#define RTT_CTRL_TEXT_WHITE &quot;\x1B[2;37m&quot;</span></div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> </div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_BLACK &quot;\x1B[1;30m&quot;</span></div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_RED &quot;\x1B[1;31m&quot;</span></div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_GREEN &quot;\x1B[1;32m&quot;</span></div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_YELLOW &quot;\x1B[1;33m&quot;</span></div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_BLUE &quot;\x1B[1;34m&quot;</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_MAGENTA &quot;\x1B[1;35m&quot;</span></div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_CYAN &quot;\x1B[1;36m&quot;</span></div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_WHITE &quot;\x1B[1;37m&quot;</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> </div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span><span class="preprocessor">#define RTT_CTRL_BG_BLACK &quot;\x1B[24;40m&quot;</span></div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="preprocessor">#define RTT_CTRL_BG_RED &quot;\x1B[24;41m&quot;</span></div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span><span class="preprocessor">#define RTT_CTRL_BG_GREEN &quot;\x1B[24;42m&quot;</span></div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span><span class="preprocessor">#define RTT_CTRL_BG_YELLOW &quot;\x1B[24;43m&quot;</span></div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span><span class="preprocessor">#define RTT_CTRL_BG_BLUE &quot;\x1B[24;44m&quot;</span></div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span><span class="preprocessor">#define RTT_CTRL_BG_MAGENTA &quot;\x1B[24;45m&quot;</span></div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span><span class="preprocessor">#define RTT_CTRL_BG_CYAN &quot;\x1B[24;46m&quot;</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="preprocessor">#define RTT_CTRL_BG_WHITE &quot;\x1B[24;47m&quot;</span></div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_BLACK &quot;\x1B[4;40m&quot;</span></div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_RED &quot;\x1B[4;41m&quot;</span></div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_GREEN &quot;\x1B[4;42m&quot;</span></div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_YELLOW &quot;\x1B[4;43m&quot;</span></div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_BLUE &quot;\x1B[4;44m&quot;</span></div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_MAGENTA &quot;\x1B[4;45m&quot;</span></div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_CYAN &quot;\x1B[4;46m&quot;</span></div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_WHITE &quot;\x1B[4;47m&quot;</span></div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> </div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> </div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> </div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span><span class="comment">/*************************** End of file ****************************/</span></div>
<div class="ttc" id="astruct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_html"><div class="ttname"><a href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html">SEGGER_RTT_BUFFER_DOWN</a></div><div class="ttdef"><b>Definition</b> <a href="#l00330">SEGGER_RTT.h:330</a></div></div>
<div class="ttc" id="astruct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_html"><div class="ttname"><a href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html">SEGGER_RTT_BUFFER_UP</a></div><div class="ttdef"><b>Definition</b> <a href="#l00317">SEGGER_RTT.h:317</a></div></div>
<div class="ttc" id="astruct_s_e_g_g_e_r___r_t_t___c_b_html"><div class="ttname"><a href="struct_s_e_g_g_e_r___r_t_t___c_b.html">SEGGER_RTT_CB</a></div><div class="ttdef"><b>Definition</b> <a href="#l00344">SEGGER_RTT.h:344</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_7de012165f681bf20d3995ae88f6551e.html">RTT</a></li><li class="navelem"><b>SEGGER_RTT.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,508 +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/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT_Syscalls_KEIL.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('_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_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">SEGGER_RTT_Syscalls_KEIL.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">* SEGGER Microcontroller GmbH *</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* The Embedded Experts *</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="comment">* *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* (c) 1995 - 2021 SEGGER Microcontroller GmbH *</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">* www.segger.com Support: support@segger.com *</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">* SEGGER RTT * Real Time Transfer for embedded targets *</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">* All rights reserved. *</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">* SEGGER strongly recommends to not make any changes *</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">* to or modify the source code of this software in order to stay *</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">* compatible with the RTT protocol and J-Link. *</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">* Redistribution and use in source and binary forms, with or *</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">* without modification, are permitted provided that the following *</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">* condition is met: *</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">* o Redistributions of source code must retain the above copyright *</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">* notice, this condition and the following disclaimer. *</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">* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">* CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, *</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">* DAMAGE. *</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">* *</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">* RTT version: 7.54 *</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"></span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">---------------------------END-OF-HEADER------------------------------</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">File : RTT_Syscalls_KEIL.c</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">Purpose : Retargeting module for KEIL MDK-CM3.</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment"> Low-level functions for using printf() via RTT</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">Revision: $Rev: 24316 $</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">Notes : (1) https://wiki.segger.com/Keil_MDK-ARM#RTT_in_uVision</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="preprocessor">#if (defined __CC_ARM) || (defined __ARMCC_VERSION)</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="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#include &lt;rt_sys.h&gt;</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#include &lt;rt_misc.h&gt;</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;SEGGER_RTT.h&quot;</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">* #pragmas</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">**********************************************************************</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment">*/</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="preprocessor">#if __ARMCC_VERSION &lt; 6000000</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#pragma import(__use_no_semihosting)</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">#endif</span></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><span class="preprocessor">#ifdef _MICROLIB</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor"> #pragma import(__use_full_stdio)</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="preprocessor">#endif</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><span class="comment">/*********************************************************************</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">* Defines non-configurable</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="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> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment">/* Standard IO device handles - arbitrary, but any real file system handles must be</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> less than 0x8000. */</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor">#define STDIN 0x8001 </span><span class="comment">// Standard Input Stream</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor">#define STDOUT 0x8002 </span><span class="comment">// Standard Output Stream</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#define STDERR 0x8003 </span><span class="comment">// Standard Error Stream</span></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="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment">*</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment">* Public const</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">**********************************************************************</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="preprocessor">#if __ARMCC_VERSION &lt; 5000000</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment">//const char __stdin_name[] = &quot;STDIN&quot;;</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="keyword">const</span> <span class="keywordtype">char</span> __stdout_name[] = <span class="stringliteral">&quot;STDOUT&quot;</span>;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="keyword">const</span> <span class="keywordtype">char</span> __stderr_name[] = <span class="stringliteral">&quot;STDERR&quot;</span>;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment">*</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment">* Public code</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment">*</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">*/</span></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><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment">*</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment">* _ttywrch</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><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment">* Outputs a character to the console</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">* Parameters:</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment">* c - character to output</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="keywordtype">void</span> _ttywrch(<span class="keywordtype">int</span> c) {</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> fputc(c, stdout); <span class="comment">// stdout</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> fflush(stdout);</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> </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">* _sys_open</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment">*</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">* Opens the device/file in order to do read/write operations</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">* Parameters:</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment">* sName - sName of the device/file to open</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment">* OpenMode - This parameter is currently ignored</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">* Return value:</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment">* != 0 - Handle to the object to open, otherwise </span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment">* == 0 -&quot;device&quot; is not handled by this module</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>FILEHANDLE _sys_open(<span class="keyword">const</span> <span class="keywordtype">char</span> * sName, <span class="keywordtype">int</span> OpenMode) {</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> (void)OpenMode;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// Register standard Input Output devices.</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">if</span> (strcmp(sName, __stdout_name) == 0) {</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">return</span> (STDOUT);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(sName, __stderr_name) == 0) {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordflow">return</span> (STDERR);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> } <span class="keywordflow">else</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">return</span> (0); <span class="comment">// Not implemented</span></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> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment">/*********************************************************************</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">* _sys_close</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">* Function description:</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment">* Closes the handle to the open device/file</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment">*</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment">* hFile - Handle to a file opened via _sys_open</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment">* </span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="comment">* 0 - device/file closed</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">*/</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="keywordtype">int</span> _sys_close(FILEHANDLE hFile) {</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> (void)hFile;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">return</span> 0; <span class="comment">// Not implemented</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> </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">* _sys_write</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">* Function description:</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="comment">* Writes the data to an open handle.</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="comment">* Currently this function only outputs data to the console</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">* Parameters:</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="comment">* hFile - Handle to a file opened via _sys_open</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="comment">* pBuffer - Pointer to the data that shall be written</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="comment">* NumBytes - Number of bytes to write</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="comment">* Mode - The Mode that shall be used</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="comment">* </span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="comment">* Number of bytes *not* written to the file/device</span></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><span class="comment">*/</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="keywordtype">int</span> _sys_write(FILEHANDLE hFile, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * pBuffer, <span class="keywordtype">unsigned</span> NumBytes, <span class="keywordtype">int</span> Mode) {</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordtype">int</span> r = 0;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> (void)Mode;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">if</span> (hFile == STDOUT) {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> SEGGER_RTT_Write(0, (<span class="keyword">const</span> <span class="keywordtype">char</span>*)pBuffer, NumBytes);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">return</span> 0;</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="keywordflow">return</span> r;</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><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="comment">*</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="comment">* _sys_read</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">* Function description:</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="comment">* Reads data from an open handle.</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment">* Currently this modules does nothing.</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment">*</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment">* hFile - Handle to a file opened via _sys_open</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment">* pBuffer - Pointer to buffer to store the read data</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment">* NumBytes - Number of bytes to read</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment">* Mode - The Mode that shall be used</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment">* </span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment">* Number of bytes read from the file/device</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment">*</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="keywordtype">int</span> _sys_read(FILEHANDLE hFile, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * pBuffer, <span class="keywordtype">unsigned</span> NumBytes, <span class="keywordtype">int</span> Mode) {</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> (void)hFile;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> (void)pBuffer;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> (void)NumBytes;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> (void)Mode;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordflow">return</span> (0); <span class="comment">// Not implemented</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> </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="comment">*</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="comment">* _sys_istty</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="comment">* Function description:</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="comment">* This function shall return whether the opened file </span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="comment">* is a console device or not.</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="comment">*</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span><span class="comment">* hFile - Handle to a file opened via _sys_open</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment">* </span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="comment">* 1 - Device is a console</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="comment">* 0 - Device is not a console</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="comment">*</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="comment">*/</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="keywordtype">int</span> _sys_istty(FILEHANDLE hFile) {</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keywordflow">if</span> (hFile &gt; 0x8000) {</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="keywordflow">return</span> (1);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> }</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keywordflow">return</span> (0); <span class="comment">// Not implemented</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span>}</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="comment">/*********************************************************************</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><span class="comment">* _sys_seek</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="comment">*</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="comment">* Seeks via the file to a specific position</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">* Parameters:</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment">* hFile - Handle to a file opened via _sys_open</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment">* Pos - </span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="comment">* </span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="comment">* int - </span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span><span class="comment">*</span></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="comment">*/</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="keywordtype">int</span> _sys_seek(FILEHANDLE hFile, <span class="keywordtype">long</span> Pos) {</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> (void)hFile;</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> (void)Pos;</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordflow">return</span> (0); <span class="comment">// Not implemented</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> </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="comment">*</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="comment">* _sys_ensure</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">* Function description:</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span><span class="comment">* </span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="comment">*</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span><span class="comment">* hFile - Handle to a file opened via _sys_open</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span><span class="comment">* </span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span><span class="comment">* int - </span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span><span class="comment">*</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="comment">*/</span></div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span><span class="keywordtype">int</span> _sys_ensure(FILEHANDLE hFile) {</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> (void)hFile;</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">return</span> (-1); <span class="comment">// Not implemented</span></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> </div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><span class="comment">*</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span><span class="comment">* _sys_flen</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span><span class="comment">*</span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span><span class="comment">* Returns the length of the opened file handle</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="comment">*</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span><span class="comment">* hFile - Handle to a file opened via _sys_open</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="comment">* </span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="comment">* Length of the file</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="comment">*</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><span class="comment">*/</span></div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span><span class="keywordtype">long</span> _sys_flen(FILEHANDLE hFile) {</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> (void)hFile;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <span class="keywordflow">return</span> (0); <span class="comment">// Not implemented</span></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> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="comment">*</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span><span class="comment">* _sys_tmpnam</span></div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span><span class="comment">*</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="comment">* This function converts the file number fileno for a temporary </span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="comment">* file to a unique filename, for example, tmp0001.</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="comment">*</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span><span class="comment">* pBuffer - Pointer to a buffer to store the name</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="comment">* FileNum - file number to convert</span></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="comment">* MaxLen - Size of the buffer</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span><span class="comment">* </span></div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span><span class="comment">* 1 - Error</span></div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="comment">* 0 - Success </span></div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span><span class="comment">*</span></div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span><span class="comment">*/</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="keywordtype">int</span> _sys_tmpnam2(<span class="keywordtype">char</span> * pBuffer, <span class="keywordtype">int</span> FileNum, <span class="keywordtype">unsigned</span> MaxLen) {</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> (void)pBuffer;</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> (void)FileNum;</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> (void)MaxLen;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keywordflow">return</span> (1); <span class="comment">// Not implemented</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> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="comment">/*********************************************************************</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">* _sys_command_string</span></div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span><span class="comment">*</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span><span class="comment">* This function shall execute a system command.</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span><span class="comment">*</span></div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span><span class="comment">* cmd - Pointer to the command string</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span><span class="comment">* len - Length of the string</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span><span class="comment">* </span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span><span class="comment">* Return value:</span></div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span><span class="comment">* == NULL - Command was not successfully executed</span></div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span><span class="comment">* == sCmd - Command was passed successfully</span></div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span><span class="comment">*</span></div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span><span class="comment">*/</span></div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span><span class="keywordtype">char</span> * _sys_command_string(<span class="keywordtype">char</span> * cmd, <span class="keywordtype">int</span> len) {</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> (void)len;</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keywordflow">return</span> cmd; <span class="comment">// Not implemented</span></div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span>}</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> </div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span><span class="comment">*</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span><span class="comment">* _sys_exit</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><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span><span class="comment">* This function is called when the application returns from main</span></div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span><span class="comment">*</span></div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span><span class="comment">* ReturnCode - Return code from the main function</span></div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span><span class="comment">* </span></div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span><span class="comment">*</span></div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span><span class="comment">*/</span></div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span><span class="keywordtype">void</span> _sys_exit(<span class="keywordtype">int</span> ReturnCode) {</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> (void)ReturnCode;</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordflow">while</span> (1); <span class="comment">// Not implemented</span></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> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span><span class="preprocessor">#if __ARMCC_VERSION &gt;= 5000000</span></div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span><span class="comment">*</span></div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="comment">* stdout_putchar</span></div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span><span class="comment">*</span></div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span><span class="comment">* Function description:</span></div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span><span class="comment">* Put a character to the stdout</span></div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span><span class="comment">*</span></div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="comment">* Parameters:</span></div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span><span class="comment">* ch - Character to output</span></div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="comment">* </span></div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="comment">*</span></div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="comment">*/</span></div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span><span class="keywordtype">int</span> stdout_putchar(<span class="keywordtype">int</span> ch) {</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> (void)ch;</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="keywordflow">return</span> ch; <span class="comment">// Not implemented</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span>}</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span><span class="comment">/*************************** End of file ****************************/</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_7de012165f681bf20d3995ae88f6551e.html">RTT</a></li><li class="navelem"><b>SEGGER_RTT_Syscalls_KEIL.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,625 +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/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT_printf.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('_s_e_g_g_e_r___r_t_t__printf_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">SEGGER_RTT_printf.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">* SEGGER Microcontroller GmbH *</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* The Embedded Experts *</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="comment">* *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* (c) 1995 - 2021 SEGGER Microcontroller GmbH *</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">* www.segger.com Support: support@segger.com *</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">* SEGGER RTT * Real Time Transfer for embedded targets *</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">* All rights reserved. *</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">* SEGGER strongly recommends to not make any changes *</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">* to or modify the source code of this software in order to stay *</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">* compatible with the RTT protocol and J-Link. *</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">* Redistribution and use in source and binary forms, with or *</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">* without modification, are permitted provided that the following *</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">* condition is met: *</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">* o Redistributions of source code must retain the above copyright *</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">* notice, this condition and the following disclaimer. *</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">* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">* CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, *</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">* DAMAGE. *</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">* *</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">* RTT version: 8.10g *</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"></span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">---------------------------END-OF-HEADER------------------------------</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">File : SEGGER_RTT_printf.c</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">Purpose : Replacement for printf to write formatted data via RTT</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">Revision: $Rev: 17697 $</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="preprocessor">#include &quot;SEGGER_RTT.h&quot;</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor">#include &quot;SEGGER_RTT_Conf.h&quot;</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/*********************************************************************</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">* Defines, configurable</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="comment">*/</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">#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor"> #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64)</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#endif</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">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#include &lt;stdarg.h&gt;</span></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> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#define FORMAT_FLAG_LEFT_JUSTIFY (1u &lt;&lt; 0)</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">#define FORMAT_FLAG_PAD_ZERO (1u &lt;&lt; 1)</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#define FORMAT_FLAG_PRINT_SIGN (1u &lt;&lt; 2)</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="preprocessor">#define FORMAT_FLAG_ALTERNATE (1u &lt;&lt; 3)</span></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><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment">*</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment">* Types</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></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> </div>
<div class="foldopen" id="foldopen00085" data-start="{" data-end="};">
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html"> 85</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">char</span>* pBuffer;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">unsigned</span> BufferSize;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">unsigned</span> Cnt;</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="keywordtype">int</span> ReturnValue;</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="keywordtype">unsigned</span> RTTBufferIndex;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span>} <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html">SEGGER_RTT_PRINTF_DESC</a>;</div>
</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">* Function prototypes</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">*/</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="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">* Static code</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">**********************************************************************</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="comment">/*********************************************************************</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">* _StoreChar</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><span class="keyword">static</span> <span class="keywordtype">void</span> _StoreChar(<a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html">SEGGER_RTT_PRINTF_DESC</a> * p, <span class="keywordtype">char</span> c) {</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">unsigned</span> Cnt;</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> Cnt = p-&gt;Cnt;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">if</span> ((Cnt + 1u) &lt;= p-&gt;BufferSize) {</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> *(p-&gt;pBuffer + Cnt) = c;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> p-&gt;Cnt = Cnt + 1u;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> p-&gt;ReturnValue++;</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">// Write part of string, when the buffer is full</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="keywordflow">if</span> (p-&gt;Cnt == p-&gt;BufferSize) {</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">if</span> (SEGGER_RTT_Write(p-&gt;RTTBufferIndex, p-&gt;pBuffer, p-&gt;Cnt) != p-&gt;Cnt) {</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> p-&gt;ReturnValue = -1;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> p-&gt;Cnt = 0u;</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> }</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">/*********************************************************************</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">* _PrintUnsigned</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="keyword">static</span> <span class="keywordtype">void</span> _PrintUnsigned(<a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html">SEGGER_RTT_PRINTF_DESC</a> * pBufferDesc, <span class="keywordtype">unsigned</span> v, <span class="keywordtype">unsigned</span> Base, <span class="keywordtype">unsigned</span> NumDigits, <span class="keywordtype">unsigned</span> FieldWidth, <span class="keywordtype">unsigned</span> FormatFlags) {</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _aV2C[16] = {<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;E&#39;</span>, <span class="charliteral">&#39;F&#39;</span> };</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordtype">unsigned</span> Div;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordtype">unsigned</span> Digit;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordtype">unsigned</span> Number;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">unsigned</span> Width;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordtype">char</span> c;</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> Number = v;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> Digit = 1u;</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">// Get actual field width</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="comment">//</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> Width = 1u;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">while</span> (Number &gt;= Base) {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> Number = (Number / Base);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> Width++;</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="keywordflow">if</span> (NumDigits &gt; Width) {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> Width = NumDigits;</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">//</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// Print leading chars if necessary</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="keywordflow">if</span> ((FormatFlags &amp; FORMAT_FLAG_LEFT_JUSTIFY) == 0u) {</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordflow">if</span> (((FormatFlags &amp; FORMAT_FLAG_PAD_ZERO) == FORMAT_FLAG_PAD_ZERO) &amp;&amp; (NumDigits == 0u)) {</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> c = <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> c = <span class="charliteral">&#39; &#39;</span>;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> }</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">while</span> ((FieldWidth != 0u) &amp;&amp; (Width &lt; FieldWidth)) {</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> FieldWidth--;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> _StoreChar(pBufferDesc, c);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &lt; 0) {</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">break</span>;</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> }</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> }</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &gt;= 0) {</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">// Compute Digit.</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// Loop until Digit has the value of the highest digit required.</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// Example: If the output is 345 (Base 10), loop 2 times until Digit is 100.</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="keywordflow">while</span> (1) {</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">if</span> (NumDigits &gt; 1u) { <span class="comment">// User specified a min number of digits to print? =&gt; Make sure we loop at least that often, before checking anything else (&gt; 1 check avoids problems with NumDigits being signed / unsigned)</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> NumDigits--;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> Div = v / Digit;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">if</span> (Div &lt; Base) { <span class="comment">// Is our divider big enough to extract the highest digit from value? =&gt; Done</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">break</span>;</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> }</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> Digit *= Base;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> }</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="comment">//</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// Output digits</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> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> Div = v / Digit;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> v -= Div * Digit;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> _StoreChar(pBufferDesc, _aV2C[Div]);</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &lt; 0) {</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">break</span>;</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> Digit /= Base;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> } <span class="keywordflow">while</span> (Digit);</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">// Print trailing spaces if necessary</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="keywordflow">if</span> ((FormatFlags &amp; FORMAT_FLAG_LEFT_JUSTIFY) == FORMAT_FLAG_LEFT_JUSTIFY) {</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keywordflow">while</span> ((FieldWidth != 0u) &amp;&amp; (Width &lt; FieldWidth)) {</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> FieldWidth--;</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> _StoreChar(pBufferDesc, <span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &lt; 0) {</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">break</span>;</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> }</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</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> }</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> </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="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment">* _PrintInt</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="keyword">static</span> <span class="keywordtype">void</span> _PrintInt(<a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html">SEGGER_RTT_PRINTF_DESC</a> * pBufferDesc, <span class="keywordtype">int</span> v, <span class="keywordtype">unsigned</span> Base, <span class="keywordtype">unsigned</span> NumDigits, <span class="keywordtype">unsigned</span> FieldWidth, <span class="keywordtype">unsigned</span> FormatFlags) {</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordtype">unsigned</span> Width;</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordtype">int</span> Number;</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> Number = (v &lt; 0) ? -v : v;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="comment">//</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="comment">// Get actual field width</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="comment">//</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> Width = 1u;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">while</span> (Number &gt;= (<span class="keywordtype">int</span>)Base) {</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> Number = (Number / (int)Base);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> Width++;</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> }</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">if</span> (NumDigits &gt; Width) {</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> Width = NumDigits;</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="keywordflow">if</span> ((FieldWidth &gt; 0u) &amp;&amp; ((v &lt; 0) || ((FormatFlags &amp; FORMAT_FLAG_PRINT_SIGN) == FORMAT_FLAG_PRINT_SIGN))) {</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> FieldWidth--;</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> </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">// Print leading spaces if necessary</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="keywordflow">if</span> ((((FormatFlags &amp; FORMAT_FLAG_PAD_ZERO) == 0u) || (NumDigits != 0u)) &amp;&amp; ((FormatFlags &amp; FORMAT_FLAG_LEFT_JUSTIFY) == 0u)) {</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">while</span> ((FieldWidth != 0u) &amp;&amp; (Width &lt; FieldWidth)) {</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> FieldWidth--;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> _StoreChar(pBufferDesc, <span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &lt; 0) {</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> }</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> }</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> }</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="comment">//</span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="comment">// Print sign if necessary</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="comment">//</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &gt;= 0) {</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordflow">if</span> (v &lt; 0) {</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> v = -v;</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> _StoreChar(pBufferDesc, <span class="charliteral">&#39;-&#39;</span>);</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((FormatFlags &amp; FORMAT_FLAG_PRINT_SIGN) == FORMAT_FLAG_PRINT_SIGN) {</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> _StoreChar(pBufferDesc, <span class="charliteral">&#39;+&#39;</span>);</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> } <span class="keywordflow">else</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> }</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &gt;= 0) {</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="comment">//</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="comment">// Print leading zeros if necessary</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="comment">//</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">if</span> (((FormatFlags &amp; FORMAT_FLAG_PAD_ZERO) == FORMAT_FLAG_PAD_ZERO) &amp;&amp; ((FormatFlags &amp; FORMAT_FLAG_LEFT_JUSTIFY) == 0u) &amp;&amp; (NumDigits == 0u)) {</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordflow">while</span> ((FieldWidth != 0u) &amp;&amp; (Width &lt; FieldWidth)) {</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> FieldWidth--;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> _StoreChar(pBufferDesc, <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &lt; 0) {</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> }</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> }</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">if</span> (pBufferDesc-&gt;ReturnValue &gt;= 0) {</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="comment">//</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="comment">// Print number without sign</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="comment">//</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> _PrintUnsigned(pBufferDesc, (<span class="keywordtype">unsigned</span>)v, Base, NumDigits, FieldWidth, FormatFlags);</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> }</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>}</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="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span><span class="comment">*</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="comment">* Public code</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="comment">*</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="comment">*/</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span><span class="comment">*</span></div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span><span class="comment">* SEGGER_RTT_vprintf</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span><span class="comment">*</span></div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span><span class="comment">* Function description</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span><span class="comment">* Stores a formatted string in SEGGER RTT control block.</span></div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="comment">* This data is read by the host.</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="comment">*</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span><span class="comment">* Parameters</span></div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span><span class="comment">* BufferIndex Index of &quot;Up&quot;-buffer to be used. (e.g. 0 for &quot;Terminal&quot;)</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="comment">* sFormat Pointer to format string</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="comment">* pParamList Pointer to the list of arguments for the format string</span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="comment">*</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="comment">* Return values</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="comment">* &gt;= 0: Number of bytes which have been stored in the &quot;Up&quot;-buffer.</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span><span class="comment">* &lt; 0: Error</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="comment">*/</span></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="keywordtype">int</span> SEGGER_RTT_vprintf(<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span> * sFormat, va_list * pParamList) {</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordtype">char</span> c;</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <a class="code hl_struct" href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html">SEGGER_RTT_PRINTF_DESC</a> BufferDesc;</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordtype">int</span> v;</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordtype">unsigned</span> NumDigits;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordtype">unsigned</span> FormatFlags;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keywordtype">unsigned</span> FieldWidth;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="keywordtype">char</span> acBuffer[SEGGER_RTT_PRINTF_BUFFER_SIZE];</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> </div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> BufferDesc.pBuffer = acBuffer;</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> BufferDesc.BufferSize = SEGGER_RTT_PRINTF_BUFFER_SIZE;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> BufferDesc.Cnt = 0u;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> BufferDesc.RTTBufferIndex = BufferIndex;</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> BufferDesc.ReturnValue = 0;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> </div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> c = *sFormat;</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> sFormat++;</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="keywordflow">if</span> (c == 0u) {</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordflow">break</span>;</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="keywordflow">if</span> (c == <span class="charliteral">&#39;%&#39;</span>) {</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="comment">//</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="comment">// Filter out flags</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="comment">//</span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> FormatFlags = 0u;</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> v = 1;</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> c = *sFormat;</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="keywordflow">switch</span> (c) {</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;-&#39;</span>: FormatFlags |= FORMAT_FLAG_LEFT_JUSTIFY; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>: FormatFlags |= FORMAT_FLAG_PAD_ZERO; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;+&#39;</span>: FormatFlags |= FORMAT_FLAG_PRINT_SIGN; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;#&#39;</span>: FormatFlags |= FORMAT_FLAG_ALTERNATE; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <span class="keywordflow">default</span>: v = 0; <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> }</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> } <span class="keywordflow">while</span> (v);</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="comment">//</span></div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="comment">// filter out field with</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="comment">//</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> FieldWidth = 0u;</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> c = *sFormat;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">if</span> ((c &lt; <span class="charliteral">&#39;0&#39;</span>) || (c &gt; <span class="charliteral">&#39;9&#39;</span>)) {</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> }</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> sFormat++;</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> FieldWidth = (FieldWidth * 10u) + ((<span class="keywordtype">unsigned</span>)c - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> } <span class="keywordflow">while</span> (1);</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="comment">//</span></div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="comment">// Filter out precision (number of digits to display)</span></div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="comment">//</span></div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> NumDigits = 0u;</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> c = *sFormat;</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;.&#39;</span>) {</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> sFormat++;</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> c = *sFormat;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="keywordflow">if</span> ((c &lt; <span class="charliteral">&#39;0&#39;</span>) || (c &gt; <span class="charliteral">&#39;9&#39;</span>)) {</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> }</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> sFormat++;</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> NumDigits = NumDigits * 10u + ((unsigned)c - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> } <span class="keywordflow">while</span> (1);</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> }</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> <span class="comment">//</span></div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="comment">// Filter out length modifier</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="comment">//</span></div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> c = *sFormat;</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keywordflow">if</span> ((c == <span class="charliteral">&#39;l&#39;</span>) || (c == <span class="charliteral">&#39;h&#39;</span>)) {</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> sFormat++;</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> c = *sFormat;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> }</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> } <span class="keywordflow">while</span> (1);</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="comment">//</span></div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <span class="comment">// Handle specifiers</span></div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> <span class="comment">//</span></div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordflow">switch</span> (c) {</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;c&#39;</span>: {</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keywordtype">char</span> c0;</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> c0 = (char)v;</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> _StoreChar(&amp;BufferDesc, c0);</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> }</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;d&#39;</span>:</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> _PrintInt(&amp;BufferDesc, v, 10u, NumDigits, FieldWidth, FormatFlags);</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;u&#39;</span>:</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> _PrintUnsigned(&amp;BufferDesc, (<span class="keywordtype">unsigned</span>)v, 10u, NumDigits, FieldWidth, FormatFlags);</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;x&#39;</span>:</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;X&#39;</span>:</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> _PrintUnsigned(&amp;BufferDesc, (<span class="keywordtype">unsigned</span>)v, 16u, NumDigits, FieldWidth, FormatFlags);</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;s&#39;</span>:</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> {</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * s = va_arg(*pParamList, <span class="keyword">const</span> <span class="keywordtype">char</span> *);</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keywordflow">if</span> (s == NULL) {</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> s = <span class="stringliteral">&quot;(NULL)&quot;</span>; <span class="comment">// Print (NULL) instead of crashing or breaking, as it is more informative to the user.</span></div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> }</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> c = *s;</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> s++;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;\0&#39;</span>) {</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> }</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> _StoreChar(&amp;BufferDesc, c);</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> } <span class="keywordflow">while</span> (BufferDesc.ReturnValue &gt;= 0);</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> }</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;p&#39;</span>:</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> _PrintUnsigned(&amp;BufferDesc, (<span class="keywordtype">unsigned</span>)v, 16u, 8u, 8u, 0u);</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="keywordflow">case</span> <span class="charliteral">&#39;%&#39;</span>:</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> _StoreChar(&amp;BufferDesc, <span class="charliteral">&#39;%&#39;</span>);</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> }</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> sFormat++;</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> _StoreChar(&amp;BufferDesc, c);</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> }</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> } <span class="keywordflow">while</span> (BufferDesc.ReturnValue &gt;= 0);</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">if</span> (BufferDesc.ReturnValue &gt; 0) {</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="comment">//</span></div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <span class="comment">// Write remaining data, if any</span></div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="comment">//</span></div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="keywordflow">if</span> (BufferDesc.Cnt != 0u) {</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> SEGGER_RTT_Write(BufferIndex, acBuffer, BufferDesc.Cnt);</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> }</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> BufferDesc.ReturnValue += (int)BufferDesc.Cnt;</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> }</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="keywordflow">return</span> BufferDesc.ReturnValue;</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span>}</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span><span class="comment">*</span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="comment">* SEGGER_RTT_printf</span></div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span><span class="comment">*</span></div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span><span class="comment">* Function description</span></div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span><span class="comment">* Stores a formatted string in SEGGER RTT control block.</span></div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span><span class="comment">* This data is read by the host.</span></div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span><span class="comment">*</span></div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span><span class="comment">* Parameters</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span><span class="comment">* BufferIndex Index of &quot;Up&quot;-buffer to be used. (e.g. 0 for &quot;Terminal&quot;)</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span><span class="comment">* sFormat Pointer to format string, followed by the arguments for conversion</span></div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span><span class="comment">*</span></div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span><span class="comment">* Return values</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span><span class="comment">* &gt;= 0: Number of bytes which have been stored in the &quot;Up&quot;-buffer.</span></div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span><span class="comment">* &lt; 0: Error</span></div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span><span class="comment">*</span></div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span><span class="comment">* Notes</span></div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span><span class="comment">* (1) Conversion specifications have following syntax:</span></div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span><span class="comment">* %[flags][FieldWidth][.Precision]ConversionSpecifier</span></div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span><span class="comment">* (2) Supported flags:</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span><span class="comment">* -: Left justify within the field width</span></div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span><span class="comment">* +: Always print sign extension for signed conversions</span></div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span><span class="comment">* 0: Pad with 0 instead of spaces. Ignored when using &#39;-&#39;-flag or precision</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span><span class="comment">* Supported conversion specifiers:</span></div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span><span class="comment">* c: Print the argument as one char</span></div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="comment">* d: Print the argument as a signed integer</span></div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span><span class="comment">* u: Print the argument as an unsigned integer</span></div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span><span class="comment">* x: Print the argument as an hexadecimal integer</span></div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span><span class="comment">* s: Print the string pointed to by the argument</span></div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span><span class="comment">* p: Print the argument as an 8-digit hexadecimal integer. (Argument shall be a pointer to void.)</span></div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span><span class="comment">*/</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="keywordtype">int</span> SEGGER_RTT_printf(<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span> * sFormat, ...) {</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <span class="keywordtype">int</span> r;</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> va_list ParamList;</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> </div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> va_start(ParamList, sFormat);</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> r = SEGGER_RTT_vprintf(BufferIndex, sFormat, &amp;ParamList);</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> va_end(ParamList);</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keywordflow">return</span> r;</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span>}</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span><span class="comment">/*************************** End of file ****************************/</span></div>
<div class="ttc" id="astruct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_html"><div class="ttname"><a href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html">SEGGER_RTT_PRINTF_DESC</a></div><div class="ttdef"><b>Definition</b> <a href="#l00085">SEGGER_RTT_printf.c:85</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_7de012165f681bf20d3995ae88f6551e.html">RTT</a></li><li class="navelem"><b>SEGGER_RTT_printf.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,127 +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_gen_optimizer__t.html" target="_self">GenOptimizer_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_r_t_t___flash_header__t.html" target="_self">RTT_FlashHeader_t</a></td><td class="desc">Структура RTT, которая будет положена в Flash </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_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html" target="_self">SEGGER_RTT_BUFFER_DOWN</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_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html" target="_self">SEGGER_RTT_BUFFER_UP</a></td><td class="desc"></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_s_e_g_g_e_r___r_t_t___c_b.html" target="_self">SEGGER_RTT_CB</a></td><td class="desc"></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_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html" target="_self">SEGGER_RTT_PRINTF_DESC</a></td><td class="desc"></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="unionuint16___bit_type_def.html" target="_self">uint16_BitTypeDef</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="unionuint32___bit_type_def.html" target="_self">uint32_BitTypeDef</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="unionuint64___bit_type_def.html" target="_self">uint64_BitTypeDef</a></td><td class="desc"></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="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,13 +0,0 @@
var annotated_dup =
[
[ "GenOptimizer_t", "struct_gen_optimizer__t.html", null ],
[ "RTT_FlashHeader_t", "struct_r_t_t___flash_header__t.html", "struct_r_t_t___flash_header__t" ],
[ "SEGGER_RTT_BUFFER_DOWN", "struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html", null ],
[ "SEGGER_RTT_BUFFER_UP", "struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html", null ],
[ "SEGGER_RTT_CB", "struct_s_e_g_g_e_r___r_t_t___c_b.html", null ],
[ "SEGGER_RTT_PRINTF_DESC", "struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html", null ],
[ "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 ]
];

View File

@ -1,160 +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/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.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('bench__time_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">bench_time.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 />
</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 bench_time.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="bench__time_8h__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bench__time_8h" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bench__time_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bench__time_8h">
<area shape="rect" title="Заголовочный файл для измерения времени между событиями" alt="" coords="23,5,207,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="10,112,113,139"/>
<area shape="poly" title=" " alt="" coords="100,66,79,100,75,97,95,63"/>
<area shape="rect" title=" " alt="" coords="137,112,202,139"/>
<area shape="poly" title=" " alt="" coords="135,63,156,97,151,100,130,66"/>
<area shape="rect" title=" " alt="" coords="5,187,118,213"/>
<area shape="poly" title=" " alt="" coords="64,139,64,171,59,171,59,139"/>
</map>
</div>
</div>
<p><a href="bench__time_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-define-members" class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga31b9f2267c562f3ceb533606daf0b789" id="r_ga31b9f2267c562f3ceb533606daf0b789"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga31b9f2267c562f3ceb533606daf0b789">BenchTime_Init</a>()</td></tr>
<tr class="memitem:ga89ff6c06fc21fb2bbfbf8cbf863316f1" id="r_ga89ff6c06fc21fb2bbfbf8cbf863316f1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga89ff6c06fc21fb2bbfbf8cbf863316f1">BenchTime_Start</a>(channel, ticks, tick_period)</td></tr>
<tr class="memitem:gadddc120d43a10fad50fbdeeab8d086b5" id="r_gadddc120d43a10fad50fbdeeab8d086b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gadddc120d43a10fad50fbdeeab8d086b5">BenchTime_End</a>(channel, ticks)</td></tr>
<tr class="memitem:ga91e352219014c7ea5507bbbe4b15912d" id="r_ga91e352219014c7ea5507bbbe4b15912d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga91e352219014c7ea5507bbbe4b15912d">BenchTime_GetMin</a>(channel)</td></tr>
<tr class="memitem:gab8103362e89bad95d965ac668284065c" id="r_gab8103362e89bad95d965ac668284065c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gab8103362e89bad95d965ac668284065c">BenchTime_GetMax</a>(channel)</td></tr>
<tr class="memitem:ga9f82f5ed8cfae31292dc3dca41471dd5" id="r_ga9f82f5ed8cfae31292dc3dca41471dd5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga9f82f5ed8cfae31292dc3dca41471dd5">BenchTime_GetAverage</a>(channel)</td></tr>
<tr class="memitem:gaafbca7155cfc97b68428da2b0b1200ef" id="r_gaafbca7155cfc97b68428da2b0b1200ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gaafbca7155cfc97b68428da2b0b1200ef">BenchTime_GetCount</a>(channel)</td></tr>
<tr class="memitem:ga9911aa13a8fa67c35a261d1cb3dc11e7" id="r_ga9911aa13a8fa67c35a261d1cb3dc11e7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga9911aa13a8fa67c35a261d1cb3dc11e7">BenchTime_GetLast</a>(channel)</td></tr>
<tr class="memitem:ga09b9a6ef9b60605fc0015f6b379d8420" id="r_ga09b9a6ef9b60605fc0015f6b379d8420"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga09b9a6ef9b60605fc0015f6b379d8420">BenchTime_ResetStats</a>(channel)</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="bench__time_8h_source.html">bench_time.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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</a></li><li class="navelem"><a href="dir_8eb68c124db7670c3cb56141b10519ea.html">Inc</a></li><li class="navelem"><a href="bench__time_8h.html">bench_time.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,9 +0,0 @@
<map id="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h" name="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для измерения времени между событиями" alt="" coords="23,5,207,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="10,112,113,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="100,66,79,100,75,97,95,63"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="137,112,202,139"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="135,63,156,97,151,100,130,66"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="5,187,118,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="64,139,64,171,59,171,59,139"/>
</map>

View File

@ -1 +0,0 @@
042be7adef0103a8f71e0ad6e3dadf51

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,373 +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/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.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('bench__time_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">bench_time.h</div></div>
</div><!--header-->
<div class="contents">
<a href="bench__time_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 bench_time.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 BENCH_TIME Time measurement</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @brief Библиотека для измерения времени/тиков между событиями</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @details</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="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">- @ref BENCH_TIME_ENABLE - Включить бенч времени</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">- @ref BENCH_TIME_MAX_CHANNELS - Максимальное количество каналов измерения (по умолчанию 8)</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">@par Пример использования:</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">@code</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">#include &quot;bench_time.h&quot;</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">// Инициализация</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">BenchTime_Init();</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">// Измерение с SysTick</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF);</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">some_function();</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">uint32_t time = BenchTime_End(0, HAL_GetTick);</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">// Измерение с TIM2 (16-бит)</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">BenchTime_Start(1, TIM2-&gt;CNT, 0xFFFF);</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">fast_function(); </span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">uint32_t time2 = BenchTime_End(1, TIM2-&gt;CNT);</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">// Измерение с DWT цикловым счетчиком</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">BenchTime_Start(2, DWT-&gt;CYCCNT, 0xFFFFFFFF);</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">critical_function();</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">uint32_t cycles = BenchTime_End(2, DWT-&gt;CYCCNT);</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">BenchTime_Start(0, HAL_GetTick, 1000); // общее время</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">BenchTime_Start(1, TIM3-&gt;CNT, 500); // часть 1</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">// ... код 1</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">uint32_t part1 = BenchTime_End(1, TIM3-&gt;CNT);</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">BenchTime_Start(2, TIM4-&gt;CNT, 200); // часть 2 </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">// ... код 2</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">uint32_t part2 = BenchTime_End(2, TIM4-&gt;CNT);</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">uint32_t total = BenchTime_End(0, HAL_GetTick); // общее время</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">uint32_t min_time = BenchTime_GetMin(0);</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">uint32_t max_time = BenchTime_GetMax(0);</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">uint32_t avg_time = BenchTime_GetAverage(0);</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">uint32_t count = BenchTime_GetCount(0);</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">@endcode</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">*****************************************************************************/</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#ifndef __BENCH_TIME_H_</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#define __BENCH_TIME_H_</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#ifdef BENCH_TIME_ENABLE</span></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><span class="comment">// Конфигурация библиотеки</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#ifndef BENCH_TIME_MAX_CHANNELS</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">#define BENCH_TIME_MAX_CHANNELS 8 </span><span class="comment">///&lt; Максимальное количество каналов измерения</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#endif</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">/**</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> * @brief Структура статистики измерений</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> */</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> uint32_t min_ticks; <span class="comment">///&lt; Минимальное время в тиках</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> uint32_t max_ticks; <span class="comment">///&lt; Максимальное время в тиках </span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> uint32_t total_ticks; <span class="comment">///&lt; Суммарное время в тиках</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> uint32_t count; <span class="comment">///&lt; Количество измерений</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> uint32_t last_ticks; <span class="comment">///&lt; Последнее измеренное время</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>} BenchTimeStats_t;</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"> * @brief Структура канала измерения</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="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> uint32_t start_tick; <span class="comment">///&lt; Время старта в тиках</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> uint32_t tick_period; <span class="comment">///&lt; Период тиков для переполнения</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> uint32_t is_running; <span class="comment">///&lt; Флаг активного измерения</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> BenchTimeStats_t stats; <span class="comment">///&lt; Статистика измерений</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span>} BenchTimeChannel_t;</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="comment">/**</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> * @brief Основная структура менеджера измерений</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="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> BenchTimeChannel_t channels[<a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>]; <span class="comment">///&lt; Каналы измерения</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>} BenchTime_t;</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="keyword">static</span> BenchTime_t hbt = {0}; <span class="comment">///&lt; Внутренний экземпляр</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"></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="comment"> * @brief Инициализация системы измерения времени</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="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> BenchTime_Init(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>; i++) {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> hbt.channels[i].start_tick = 0;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> hbt.channels[i].tick_period = 0xFFFFFFFF;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> hbt.channels[i].is_running = 0;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> hbt.channels[i].stats.min_ticks = 0xFFFFFFFF;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> hbt.channels[i].stats.max_ticks = 0;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> hbt.channels[i].stats.total_ticks = 0;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> hbt.channels[i].stats.count = 0;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> hbt.channels[i].stats.last_ticks = 0;</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"> * @brief Начало измерения на указанном канале</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> * @param ticks Источник тиков (например: HAL_GetTick(), TIM2-&gt;CNT, DWT-&gt;CYCCNT)</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"> * @param tick_period Период тиков для переполнения</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> * @return 1 - успех, 0 - ошибка</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="keyword">static</span> <span class="keyword">inline</span> uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period) {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">if</span> (hbt.channels[channel].is_running) <span class="keywordflow">return</span> 0;</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> hbt.channels[channel].start_tick = ticks;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> hbt.channels[channel].tick_period = tick_period;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> hbt.channels[channel].is_running = 1;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">return</span> 1;</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><span class="comment"></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"> * @brief Окончание измерения на указанном канале</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * @param ticks Источник тиков (должен быть тот же что в Start)</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> * @return Измеренное время в тиках, 0 - в случае ошибки</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="keyword">static</span> <span class="keyword">inline</span> uint32_t BenchTime_End(uint8_t channel, uint32_t ticks) {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">if</span> (!hbt.channels[channel].is_running) <span class="keywordflow">return</span> 0;</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> uint32_t end_tick = ticks;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> uint32_t start_tick = hbt.channels[channel].start_tick;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> uint32_t tick_period = hbt.channels[channel].tick_period;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> uint32_t elapsed_ticks;</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="keywordflow">if</span> (end_tick &gt;= start_tick) {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> elapsed_ticks = end_tick - start_tick;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> elapsed_ticks = (tick_period - start_tick) + end_tick + 1;</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> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">if</span> (elapsed_ticks &gt; tick_period) {</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> elapsed_ticks = tick_period;</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> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> hbt.channels[channel].is_running = 0;</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">// Обновление статистики</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> BenchTimeStats_t* stats = &amp;hbt.channels[channel].stats;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> stats-&gt;last_ticks = elapsed_ticks;</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="keywordflow">if</span> (elapsed_ticks &lt; stats-&gt;min_ticks) {</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> stats-&gt;min_ticks = elapsed_ticks;</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> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">if</span> (elapsed_ticks &gt; stats-&gt;max_ticks) {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> stats-&gt;max_ticks = elapsed_ticks;</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> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> stats-&gt;total_ticks += elapsed_ticks;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> stats-&gt;count++;</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="keywordflow">return</span> elapsed_ticks;</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"></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 Получение минимального времени измерения</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="comment"> */</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t BenchTime_GetMin(uint8_t channel) {</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> hbt.channels[channel].stats.min_ticks;</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 Получение максимального времени измерения</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="comment"> */</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t BenchTime_GetMax(uint8_t channel) {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">return</span> hbt.channels[channel].stats.max_ticks;</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"></span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="comment">/**</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="comment"> * @brief Получение среднего времени измерения</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="comment"> */</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t BenchTime_GetAverage(uint8_t channel) {</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> BenchTimeStats_t* stats = &amp;hbt.channels[channel].stats;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">if</span> (stats-&gt;count == 0) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">return</span> stats-&gt;total_ticks / stats-&gt;count;</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="comment"></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 Получение количества измерений</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> */</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t BenchTime_GetCount(uint8_t channel) {</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordflow">return</span> hbt.channels[channel].stats.count;</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="comment"></span> </div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment">/**</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment"> * @brief Получение последнего измеренного времени</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="keyword">static</span> <span class="keyword">inline</span> uint32_t BenchTime_GetLast(uint8_t channel) {</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keywordflow">return</span> hbt.channels[channel].stats.last_ticks;</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><span class="comment"></span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="comment">/**</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="comment"> * @brief Сброс статистики для канала</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment"> */</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> BenchTime_ResetStats(uint8_t channel) {</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">if</span> (channel &gt;= <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> BenchTimeStats_t* stats = &amp;hbt.channels[channel].stats;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> stats-&gt;min_ticks = 0xFFFFFFFF;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> stats-&gt;max_ticks = 0;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> stats-&gt;total_ticks = 0;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> stats-&gt;count = 0;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> stats-&gt;last_ticks = 0;</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span>}</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="preprocessor">#else </span><span class="comment">//BENCH_TIME_ENABLE</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="preprocessor">#define BenchTime_Init()</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="preprocessor">#define BenchTime_Start(channel, ticks, tick_period) 0</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="preprocessor">#define BenchTime_End(channel, ticks) 0</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="preprocessor">#define BenchTime_GetMin(channel) 0</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="preprocessor">#define BenchTime_GetMax(channel) 0</span></div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="preprocessor">#define BenchTime_GetAverage(channel) 0</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="preprocessor">#define BenchTime_GetCount(channel) 0</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="preprocessor">#define BenchTime_GetLast(channel) 0</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="preprocessor">#define BenchTime_ResetStats(channel)</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="preprocessor">#endif </span><span class="comment">//BENCH_TIME_ENABLE</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="preprocessor">#endif </span><span class="comment">// __BENCH_TIME_H_</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment"></span> </div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="comment">/** BENCH_TIME</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="comment"> */</span></div>
<div class="ttc" id="agroup___g_e_n___c_o_n_f_i_g_html_ga74fdf777ceefa5e7d67120fbda4cde52"><div class="ttname"><a href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a></div><div class="ttdeci">#define BENCH_TIME_MAX_CHANNELS</div><div class="ttdoc">Максимальное количество каналов измерения</div><div class="ttdef"><b>Definition</b> <a href="____mylibs__config_8h_source.html#l00082">__mylibs_config.h:82</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><!-- 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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</a></li><li class="navelem"><a href="dir_8eb68c124db7670c3cb56141b10519ea.html">Inc</a></li><li class="navelem"><a href="bench__time_8h.html">bench_time.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,163 +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/STM_Libs/STM32_ExtendedLibs/MyLibs/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_m___libs_2_s_t_m32___extended_libs_2_my_libs_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_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8h">
<area shape="rect" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,190,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="46,112,149,139"/>
<area shape="poly" title=" " alt="" coords="100,64,100,96,95,96,95,64"/>
<area shape="rect" title=" " alt="" coords="41,187,154,213"/>
<area shape="poly" title=" " alt="" coords="100,139,100,171,95,171,95,139"/>
</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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</a></li><li class="navelem"><a href="dir_8eb68c124db7670c3cb56141b10519ea.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,7 +0,0 @@
<map id="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h" name="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h">
<area shape="rect" id="Node000001" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,190,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="46,112,149,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="100,64,100,96,95,96,95,64"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="41,187,154,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="100,139,100,171,95,171,95,139"/>
</map>

View File

@ -1 +0,0 @@
4026b3a01780e5dc9dda8421c6c9f225

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.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/STM_Libs/STM32_ExtendedLibs/MyLibs/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_TOOLS </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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</a></li><li class="navelem"><a href="dir_8eb68c124db7670c3cb56141b10519ea.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,128 +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_G">G</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_U">U</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_G" name="letter_G">G</a></dt>
<dd><a class="el" href="struct_gen_optimizer__t.html">GenOptimizer_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_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html">SEGGER_RTT_BUFFER_DOWN</a></dd><dd><a class="el" href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html">SEGGER_RTT_BUFFER_UP</a></dd><dd><a class="el" href="struct_s_e_g_g_e_r___r_t_t___c_b.html">SEGGER_RTT_CB</a></dd><dd><a class="el" href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html">SEGGER_RTT_PRINTF_DESC</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_U" name="letter_U">U</a></dt>
<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)
}
}
})

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,129 +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/STM_Libs/STM32_ExtendedLibs/RTT 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_7de012165f681bf20d3995ae88f6551e.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">RTT Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<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:SEGGER_5FRTT_2Ec" id="r_SEGGER_5FRTT_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="_s_e_g_g_e_r___r_t_t_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>SEGGER_RTT.c</b></td></tr>
<tr class="memitem:SEGGER_5FRTT_2Eh" id="r_SEGGER_5FRTT_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="_s_e_g_g_e_r___r_t_t_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>SEGGER_RTT.h</b></td></tr>
<tr class="memitem:SEGGER_5FRTT_5Fprintf_2Ec" id="r_SEGGER_5FRTT_5Fprintf_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="_s_e_g_g_e_r___r_t_t__printf_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>SEGGER_RTT_printf.c</b></td></tr>
<tr class="memitem:SEGGER_5FRTT_5FSyscalls_5FKEIL_2Ec" id="r_SEGGER_5FRTT_5FSyscalls_5FKEIL_2Ec"><td class="memItemLeft" align="right" valign="top"><a href="_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>SEGGER_RTT_Syscalls_KEIL.c</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_7de012165f681bf20d3995ae88f6551e.html">RTT</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 dir_7de012165f681bf20d3995ae88f6551e =
[
[ "SEGGER_RTT.c", "_s_e_g_g_e_r___r_t_t_8c_source.html", null ],
[ "SEGGER_RTT.h", "_s_e_g_g_e_r___r_t_t_8h_source.html", null ],
[ "SEGGER_RTT_printf.c", "_s_e_g_g_e_r___r_t_t__printf_8c_source.html", null ],
[ "SEGGER_RTT_Syscalls_KEIL.c", "_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html", null ]
];

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/STM_Libs/STM32_ExtendedLibs/MyLibs/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_8eb68c124db7670c3cb56141b10519ea.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_8eb68c124db7670c3cb56141b10519ea_dep.png" border="0" usemap="#adir__8eb68c124db7670c3cb56141b10519ea__dep" loading="lazy" alt="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc"/></div>
<map name="adir__8eb68c124db7670c3cb56141b10519ea__dep" id="adir__8eb68c124db7670c3cb56141b10519ea__dep">
<area shape="rect" href="dir_8eb68c124db7670c3cb56141b10519ea.html" title="Inc" alt="" coords="28,53,68,80"/>
<area shape="rect" href="dir_d4b2573a0c19afb61452cc3d00967af1.html" title="MyLibs" alt="" coords="16,16,80,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:bench_5Ftime_2Eh" id="r_bench_5Ftime_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="bench__time_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bench__time_8h.html">bench_time.h</a></td></tr>
<tr class="memdesc:bench__time_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголовочный файл для измерения времени между событиями <br /></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:gen_5Foptimizer_2Eh" id="r_gen_5Foptimizer_2Eh"><td class="memItemLeft" align="right" valign="top"><a href="gen__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="gen__optimizer_8h.html">gen_optimizer.h</a></td></tr>
<tr class="memdesc:gen__optimizer_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Заголовочный файл для адаптивного подбора параметров <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: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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</a></li><li class="navelem"><a href="dir_8eb68c124db7670c3cb56141b10519ea.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,9 +0,0 @@
var dir_8eb68c124db7670c3cb56141b10519ea =
[
[ "bench_time.h", "bench__time_8h.html", null ],
[ "bit_access.h", "bit__access_8h.html", "bit__access_8h" ],
[ "gen_optimizer.h", "gen__optimizer_8h.html", null ],
[ "mylibs_defs.h", "mylibs__defs_8h.html", "mylibs__defs_8h" ],
[ "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/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc" name="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc">
<area shape="rect" id="node1" href="dir_8eb68c124db7670c3cb56141b10519ea.html" title="Inc" alt="" coords="28,53,68,80"/>
<area shape="rect" id="clust1" href="dir_d4b2573a0c19afb61452cc3d00967af1.html" title="MyLibs" alt="" coords="16,16,80,91"/>
</map>

View File

@ -1 +0,0 @@
73fcb3fce434281cb487947e3a365eba

Binary file not shown.

Before

Width:  |  Height:  |  Size: 886 B

View File

@ -1,126 +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/STM_Libs/STM32_ExtendedLibs/MyLibs 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_d4b2573a0c19afb61452cc3d00967af1.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">MyLibs Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<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_8eb68c124db7670c3cb56141b10519ea.html">Inc</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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</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,4 +0,0 @@
var dir_d4b2573a0c19afb61452cc3d00967af1 =
[
[ "Inc", "dir_8eb68c124db7670c3cb56141b10519ea.html", "dir_8eb68c124db7670c3cb56141b10519ea" ]
];

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,169 +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="_____s_e_g_g_e_r___r_t_t___conf_8h_source.html"/>
<a href="____mylibs__config_8h_source.html"/>
<a href="____mylibs__include_8h_source.html"/>
<a href="_s_e_g_g_e_r___r_t_t_8c_source.html"/>
<a href="_s_e_g_g_e_r___r_t_t_8h_source.html"/>
<a href="_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html"/>
<a href="_s_e_g_g_e_r___r_t_t__printf_8c_source.html"/>
<a href="annotated.html"/>
<a href="bench__time_8h.html"/>
<a href="bench__time_8h_source.html"/>
<a href="bit__access_8h.html"/>
<a href="bit__access_8h_source.html"/>
<a href="classes.html"/>
<a href="dir_7de012165f681bf20d3995ae88f6551e.html"/>
<a href="dir_8eb68c124db7670c3cb56141b10519ea.html"/>
<a href="dir_d4b2573a0c19afb61452cc3d00967af1.html"/>
<a href="doxygen_crawl.html"/>
<a href="files.html"/>
<a href="functions.html"/>
<a href="functions_vars.html"/>
<a href="gen__optimizer_8h.html"/>
<a href="gen__optimizer_8h_source.html"/>
<a href="globals.html"/>
<a href="globals_defs.html"/>
<a href="globals_func.html"/>
<a href="graph_legend.html"/>
<a href="group___b_e_n_c_h___t_i_m_e.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___g_e_n___c_o_n_f_i_g.html"/>
<a href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869"/>
<a href="group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9"/>
<a href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52"/>
<a href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab"/>
<a href="group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c"/>
<a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html"/>
<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#ga3cdc9ef47fd3ff080d38481295327692"/>
<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#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___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_b_u_g___t_o_o_l_s.html"/>
<a href="group___m_y_l_i_b_s___t_o_o_l_s.html"/>
<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___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#ga0b87e0d3bf5853bcbb0b66a7c48fdc05"/>
<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#ga9c853b02c22f26023c34d1d404b6d653"/>
<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_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#инструкция-по-подключению"/>
<a href="index.html#общие-утилиты-mylibs-ref-mylibs_tools"/>
<a href="index.html#основные-возможности"/>
<a href="index.html#отладка-ref-mylibs_debug_tools"/>
<a href="index.html#структура-библиотеки"/>
<a href="mylibs__defs_8h.html"/>
<a href="mylibs__defs_8h_source.html"/>
<a href="struct_gen_optimizer__t-members.html"/>
<a href="struct_gen_optimizer__t.html"/>
<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#a1100df39b0eccb835946f4c13de23b4e"/>
<a href="struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57"/>
<a href="struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699"/>
<a href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n-members.html"/>
<a href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html"/>
<a href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p-members.html"/>
<a href="struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html"/>
<a href="struct_s_e_g_g_e_r___r_t_t___c_b-members.html"/>
<a href="struct_s_e_g_g_e_r___r_t_t___c_b.html"/>
<a href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c-members.html"/>
<a href="struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html"/>
<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,133 +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_d4b2573a0c19afb61452cc3d00967af1.html" target="_self">MyLibs</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_8eb68c124db7670c3cb56141b10519ea.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="bench__time_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="bench__time_8h.html" target="_self">bench_time.h</a></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="gen__optimizer_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="gen__optimizer_8h.html" target="_self">gen_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="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_4_" 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_5_" 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_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="dynsection.toggleFolder('1_')"><span class="arrowhead opened"></span></span><span id="img_1_" class="iconfolder" onclick="dynsection.toggleFolder('1_')"><div class="folder-icon open"></div></span><a class="el" href="dir_7de012165f681bf20d3995ae88f6551e.html" target="_self">RTT</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="_s_e_g_g_e_r___r_t_t_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>SEGGER_RTT.c</b></td><td class="desc"></td></tr>
<tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="_s_e_g_g_e_r___r_t_t_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>SEGGER_RTT.h</b></td><td class="desc"></td></tr>
<tr id="row_1_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="_s_e_g_g_e_r___r_t_t__printf_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>SEGGER_RTT_printf.c</b></td><td class="desc"></td></tr>
<tr id="row_1_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>SEGGER_RTT_Syscalls_KEIL.c</b></td><td class="desc"></td></tr>
<tr id="row_2_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="____mylibs__config_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>__mylibs_config.h</b></td><td class="desc"></td></tr>
<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="____mylibs__include_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>__mylibs_include.h</b></td><td class="desc"></td></tr>
<tr id="row_4_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_____s_e_g_g_e_r___r_t_t___conf_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>__SEGGER_RTT_Conf.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,8 +0,0 @@
var files_dup =
[
[ "MyLibs", "dir_d4b2573a0c19afb61452cc3d00967af1.html", "dir_d4b2573a0c19afb61452cc3d00967af1" ],
[ "RTT", "dir_7de012165f681bf20d3995ae88f6551e.html", "dir_7de012165f681bf20d3995ae88f6551e" ],
[ "__mylibs_config.h", "____mylibs__config_8h_source.html", null ],
[ "__mylibs_include.h", "____mylibs__include_8h_source.html", null ],
[ "__SEGGER_RTT_Conf.h", "_____s_e_g_g_e_r___r_t_t___conf_8h_source.html", null ]
];

View File

@ -1,115 +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><ul>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e">RTT_FlashHeader_t</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>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,115 +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><ul>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e">RTT_FlashHeader_t</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>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,162 +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/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/gen_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('gen__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">gen_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 gen_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="gen__optimizer_8h__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2gen__optimizer_8h" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2gen__optimizer_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2gen__optimizer_8h">
<area shape="rect" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="77,5,262,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="10,112,113,139"/>
<area shape="poly" title=" " alt="" coords="136,66,90,104,87,100,133,62"/>
<area shape="rect" title=" " alt="" coords="137,112,202,139"/>
<area shape="poly" title=" " alt="" coords="172,64,172,96,167,96,167,64"/>
<area shape="rect" title=" " alt="" coords="226,112,289,139"/>
<area shape="poly" title=" " alt="" coords="200,62,236,99,232,103,196,66"/>
<area shape="rect" title=" " alt="" coords="5,187,118,213"/>
<area shape="poly" title=" " alt="" coords="64,139,64,171,59,171,59,139"/>
</map>
</div>
</div>
<p><a href="gen__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:GenOptimizer_5Ft" id="r_GenOptimizer_5Ft"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gen_optimizer__t.html">GenOptimizer_t</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:ga3e654886869ea8182effbfcb99278670" id="r_ga3e654886869ea8182effbfcb99278670"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3e654886869ea8182effbfcb99278670">GenOptimizer_Init</a>(opt, n_params, n_cand, n_best, mutation_amp, start_params)</td></tr>
<tr class="memitem:ga33bbb9131ac7f94c3731dd4130321885" id="r_ga33bbb9131ac7f94c3731dd4130321885"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga33bbb9131ac7f94c3731dd4130321885">GenOptimizer_Step</a>(opt, params, LossFunc)</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___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e">PARAM_SCALE</a>(x, min_val, max_val)</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___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3">PARAM_UNSCALE</a>(val, min_val, max_val)</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="gen__optimizer_8h_source.html">gen_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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</a></li><li class="navelem"><a href="dir_8eb68c124db7670c3cb56141b10519ea.html">Inc</a></li><li class="navelem"><a href="gen__optimizer_8h.html">gen_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,11 +0,0 @@
<map id="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h" name="E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="77,5,262,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="10,112,113,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="136,66,90,104,87,100,133,62"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="137,112,202,139"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="172,64,172,96,167,96,167,64"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="226,112,289,139"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="200,62,236,99,232,103,196,66"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="5,187,118,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="64,139,64,171,59,171,59,139"/>
</map>

View File

@ -1 +0,0 @@
cd35cb5867481489f94cce70c426a646

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -1,458 +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/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/gen_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('gen__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">gen_optimizer.h</div></div>
</div><!--header-->
<div class="contents">
<a href="gen__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 gen_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 GEN_OPTIMIZER Genetic optimizer</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @brief Библиотека для эволюционного подбора параметров</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @details</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="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">- @ref GEN_OPTIMIZATION_ENABLE - Включить оптимизацию параметров</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> Если библиотека отключена @ref GEN_OPTIMIZATION_ENABLE, то вставляются </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">- @ref GEN_MAX_PARAMS - Максимальное количество параметров</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">- @ref GEN_MAX_CANDIDATES - Максимальное количество кандидатов для обучения</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">- (опционально) @ref GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">- (опционально) @ref GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">- (опционально) @ref ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений</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">@par Пример использования:</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">@code</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">#include &quot;gen_optimizer.h&quot;</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">#define N_PARAMS 4</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">#define N_CANDIDATES 100</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">#define N_BEST 10</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">#define MUTATION 0.1f</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">float params[N_PARAMS];</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">GenOptimizer_t optimizer;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"></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">uint16_t param_u16 = 800;</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">float param_f = 0.01f;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">uint8_t param_u8 = 40;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">int16_t param_i16 = 1600;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);</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">// Инициалиазция</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">GenOptimizer_Init(&amp;optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);</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">float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">GenOptimizer_Step(&amp;optimizer, params, loss);</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">param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">@endcode</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="preprocessor">#ifndef __GEN_OPTIMIZER_H_</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#define __GEN_OPTIMIZER_H_</span></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><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="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></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><span class="preprocessor">#ifdef GEN_OPTIMIZATION_ENABLE</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 Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="preprocessor">#define PARAM_SCALE(x, min_val, max_val) \</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">(((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))</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"> 75</span><span class="comment">/**</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"> * @brief Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]</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="preprocessor">#define PARAM_UNSCALE(val, min_val, max_val) \</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor">(((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))</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><span class="preprocessor">#ifndef local_time</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="preprocessor">#define local_time() HAL_GetTick() </span><span class="comment">///&lt; Локальное время</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="preprocessor">#endif</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> </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="preprocessor">#ifndef GEN_MUTATION_MIN_PCT</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor">#define GEN_MUTATION_MIN_PCT 10 </span><span class="comment">///&lt; Минимальная мутация (в процентах от Loss)</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor">#ifndef GEN_MUTATION_MAX_PCT</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#define GEN_MUTATION_MAX_PCT 100 </span><span class="comment">///&lt; Максимальная мутация (в процентах от Loss)</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#ifndef ELOVLE_N_ELITE_CANDIDATE</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor">#define ELOVLE_N_ELITE_CANDIDATE 2 </span><span class="comment">///&lt; Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</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="comment">/**</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> * @brief Структура эволюционного оптимизатора</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="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">float</span> stability; <span class="comment">///&lt; Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> uint16_t n_params; <span class="comment">///&lt; Количество параметров</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> uint16_t n_cand; <span class="comment">///&lt; Количество кандидатов в популяции</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> uint16_t n_best; <span class="comment">///&lt; Количество лучших, усредняемых</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordtype">float</span> mutation_amp; <span class="comment">///&lt; Амплитуда мутации (0..1)</span></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> uint16_t cand_index; <span class="comment">///&lt; Индекс текущего кандидата</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> uint16_t gen_index; <span class="comment">///&lt; Индекс популяции </span></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> <span class="comment">//INTERNAL</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">float</span> gen_mut; <span class="comment">///&lt; Амплитуда мутации у текущей популяции </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"> 115</span> <span class="keywordtype">float</span> loss[<a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>]; <span class="comment">///&lt; Loss для каждого кандидата</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">float</span> candidates[<a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>][<a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a>]; <span class="comment">///&lt; Параметры кандидатов</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> uint16_t sorted_idx[<a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>]; <span class="comment">///&lt; Индексы отсортированных кандидатов</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>} <a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>;</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> </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"> * @cond GEN_INTERNAL</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> */</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment">// Вспомогательный указатель для сортировки</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="keyword">static</span> <a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a> *g_sort_opt; <span class="comment">// глобальный указатель на текущий оптимизатор</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">// функция условия сортировки</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</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="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">if</span> (g_sort_opt-&gt;loss[*(<span class="keyword">const</span> uint16_t*)a] &lt; g_sort_opt-&gt;loss[*(<span class="keyword">const</span> uint16_t*)b]) </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">if</span> (g_sort_opt-&gt;loss[*(<span class="keyword">const</span> uint16_t*)a] &gt; g_sort_opt-&gt;loss[*(<span class="keyword">const</span> uint16_t*)b]) </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">return</span> 0;</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">/** @endcond */</span></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> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"></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"> * @brief Инициализация эволюционного оптимизатора.</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> * @param opt Указатель на структуру оптимизатора</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> * @param n_params Количество параметров в одном кандидате</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> * @param n_cand Количество кандидатов</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> * @param n_best Количество лучших, усредняемых</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment"> * @param mutation_amp Амплитуда мутации (в диапазоне 0.01.0)</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="comment"> * @param start_params Начальные параметры (в диапазоне 0.01.0)</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> * @return 0 — если окей, </span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"> * -1 — если ошибка</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="keyword">static</span> <span class="keywordtype">int</span> GenOptimizer_Init(<a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>* opt,</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> uint16_t n_params,</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> uint16_t n_cand,</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> uint16_t n_best,</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordtype">float</span> mutation_amp,</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">float</span>* start_params)</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="keywordflow">if</span>((opt == NULL) || (start_params == NULL))</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">return</span> -1;</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="keywordflow">if</span>(n_params &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a>)</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> opt-&gt;n_params = n_params;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">if</span>(n_cand &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>)</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> opt-&gt;n_cand = n_cand;</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> <span class="keywordflow">if</span>(n_best &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>/2)</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> opt-&gt;n_best = n_best;</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> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">if</span>((mutation_amp &gt; 1) || (mutation_amp &lt; 0))</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">if</span>(mutation_amp &lt;= 0.001f)</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> mutation_amp = 0.001f; </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> opt-&gt;mutation_amp = mutation_amp;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> uint32_t seed = <a class="code hl_define" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>();</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="preprocessor">#ifdef ADC1</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> seed += (ADC1-&gt;DR &amp; 0xFF);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> srand(seed);</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="keywordflow">for</span> (uint16_t i = 0; i &lt; n_cand; i++) {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">for</span> (uint16_t j = 0; j &lt; n_params; j++) {</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> <span class="keywordtype">float</span> base = start_params[j];</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordtype">float</span> inv_randmax = 1.0f / (float)RAND_MAX;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordtype">float</span> noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * mutation_amp;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> opt-&gt;candidates[i][j] = base + noise;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">if</span> (opt-&gt;candidates[i][j] &lt; 0.0f) opt-&gt;candidates[i][j] = 0.0f;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">if</span> (opt-&gt;candidates[i][j] &gt; 1.0f) opt-&gt;candidates[i][j] = 1.0f;</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> opt-&gt;loss[i] = 0.0f;</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> opt-&gt;cand_index = 0;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> opt-&gt;gen_index = 0;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="keywordflow">return</span> 0;</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> </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">/**</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment"> * @brief Один шаг эволюционного оптимизатора.</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment"> * @param opt Указатель на структуру оптимизатора</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment"> * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры)</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment"> * @param loss Loss текущего кандидата</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> * @return 0 — если окей, </span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment"> * -1 — если ошибка</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment"> * @details</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment"> * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата.</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment"> * Если накоплено n_cand кандидатов, генерируется новое поколение.</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment"> * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment"> *</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment"> * На выходе params содержит параметры следующего кандидата для измерений.</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment"> * @note Функция использует глобальную внутреннюю переменную для сортировки.</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="keyword">static</span> <span class="keywordtype">int</span> GenOptimizer_Step(<a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>* opt,</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordtype">float</span>* params,</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordtype">float</span> loss)</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span>{</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">if</span>((opt == NULL) || (params == NULL))</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">return</span> -1;</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> uint16_t n_params = opt-&gt;n_params; </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">if</span>(n_params &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a>)</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> uint16_t n_cand = opt-&gt;n_cand; </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">if</span>(n_cand &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>)</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> uint16_t n_best = opt-&gt;n_best; </div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">if</span>(n_best &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>/2)</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> </div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordtype">float</span> mut = opt-&gt;mutation_amp;</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordflow">if</span>((mut &gt; 1) ||(mut &lt; 0))</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">return</span> -1;</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">// 1. Сохраняем loss текущего кандидата</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> opt-&gt;loss[opt-&gt;cand_index] = loss;</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> opt-&gt;cand_index++;</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="keywordflow">if</span> (opt-&gt;cand_index &gt;= n_cand) {</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="comment">// 2. Сортируем текущее поколение по loss</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">for</span>(uint16_t i = 0; i &lt; opt-&gt;n_cand; i++)</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> opt-&gt;sorted_idx[i] = i;</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> g_sort_opt = opt;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> qsort(opt-&gt;sorted_idx, opt-&gt;n_cand, <span class="keyword">sizeof</span>(uint16_t), cmp_idx);</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> g_sort_opt = NULL;</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">// --- Адаптивная мутация в зависимости от Loss ---</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordtype">float</span> best_loss = opt-&gt;loss[opt-&gt;sorted_idx[0]];</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordtype">float</span> worst_loss = opt-&gt;loss[opt-&gt;sorted_idx[opt-&gt;n_cand - 1]];</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordtype">float</span> diff = worst_loss - best_loss;</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">float</span> sum_loss = 0.0f;</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_cand; i++)</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> sum_loss += opt-&gt;loss[i];</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordtype">float</span> avg_loss = sum_loss / (float)n_cand;</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> </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> <span class="keywordtype">float</span> loss_ratio = (diff &gt; 0.0f) ? ((avg_loss - best_loss) / diff) : 0.5f;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordflow">if</span> (loss_ratio &lt; 0.0f) loss_ratio = 0.0f;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordflow">if</span> (loss_ratio &gt; 1.0f) loss_ratio = 1.0f;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="comment">// Записываем стабильность популяции в структуру</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">if</span>(diff &lt; 0.0f) diff = 0.0f;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordflow">if</span>(diff &gt; 1.0f) diff = 1.0f;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> opt-&gt;stability = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">if</span>(opt-&gt;stability &lt; 0.0f) opt-&gt;stability = 0.0f;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordflow">if</span>(opt-&gt;stability &gt; 1.0f) opt-&gt;stability = 1.0f;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordtype">float</span> mut_pct = GEN_MUTATION_MIN_PCT +</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> (GEN_MUTATION_MAX_PCT - GEN_MUTATION_MIN_PCT) * loss_ratio;</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keywordtype">float</span> adaptive_mut = mut * (mut_pct / 100.0f);</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordflow">if</span> (adaptive_mut &lt; 0.0001f) adaptive_mut = 0.0001f;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> opt-&gt;gen_mut = adaptive_mut;</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="comment">// 3. Генерируем новое поколение</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> uint16_t n_elite = ELOVLE_N_ELITE_CANDIDATE;</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">for</span> (uint16_t c = 0; c &lt; n_cand; c++) {</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">if</span> (c &lt; n_elite) {</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_params; i++)</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> opt-&gt;candidates[c][i] = opt-&gt;candidates[opt-&gt;sorted_idx[c]][i];</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> opt-&gt;loss[c] = 0.0f;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_params; i++) {</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordtype">float</span> inv_randmax = 1.0f / (float)RAND_MAX;</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordtype">float</span> noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * adaptive_mut;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> uint16_t parent = opt-&gt;sorted_idx[rand() % opt-&gt;n_best];</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> opt-&gt;candidates[c][i] = opt-&gt;candidates[parent][i] + noise;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordflow">if</span> (opt-&gt;candidates[c][i] &lt; 0.0f) opt-&gt;candidates[c][i] = 0.0f;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">if</span> (opt-&gt;candidates[c][i] &gt; 1.0f) opt-&gt;candidates[c][i] = 1.0f;</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> opt-&gt;loss[c] = 0.0f;</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> }</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> opt-&gt;cand_index = 0;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> opt-&gt;gen_index++;</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> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="comment">// 4. Возвращаем параметры следующего кандидата</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; opt-&gt;n_params; i++)</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> params[i] = opt-&gt;candidates[opt-&gt;cand_index][i];</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="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><span class="preprocessor">#else </span><span class="comment">// GEN_OPTIMIZATION_ENABLE</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="comment">//заглушки</span></div>
<div class="foldopen" id="foldopen00319" data-start="{" data-end="};">
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html"> 319</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> uint16_t n_params; </div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> uint16_t n_cand; </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> uint16_t n_best; </div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordtype">float</span> mutation_amp; </div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">float</span> loss[0]; </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordtype">float</span> candidates[0][0]; </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span>} <a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>;</div>
</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span><span class="preprocessor">#define GenOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)</span></div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span><span class="preprocessor">#define GenOptimizer_Step(opt, params, LossFunc)</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="preprocessor">#define PARAM_SCALE(x, min_val, max_val) (x)</span></div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="preprocessor">#define PARAM_UNSCALE(val, min_val, max_val) (val)</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span><span class="preprocessor">#endif </span><span class="comment">// GEN_OPTIMIZATION_ENABLE</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> </div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span><span class="preprocessor">#endif </span><span class="comment">// __GEN_OPTIMIZER_H_</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span><span class="comment"></span> </div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span><span class="comment">/** GEN_OPTIMIZER</span></div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span><span class="comment"> */</span></div>
<div class="ttc" id="agroup___g_e_n___c_o_n_f_i_g_html_ga201cffde04ebc6540869c74bd1dae869"><div class="ttname"><a href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a></div><div class="ttdeci">#define GEN_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___g_e_n___c_o_n_f_i_g_html_ga8daf4b266a95353d580bd7946f47c0ab"><div class="ttname"><a href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a></div><div class="ttdeci">#define GEN_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___t_r_a_c_e___s_e_r_i_a_l_html_ga9c853b02c22f26023c34d1d404b6d653"><div class="ttname"><a href="group___t_r_a_c_e___s_e_r_i_a_l.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="trace_8h_source.html#l00097">trace.h:97</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_gen_optimizer__t_html"><div class="ttname"><a href="struct_gen_optimizer__t.html">GenOptimizer_t</a></div><div class="ttdef"><b>Definition</b> <a href="#l00319">gen_optimizer.h:319</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_d4b2573a0c19afb61452cc3d00967af1.html">MyLibs</a></li><li class="navelem"><a href="dir_8eb68c124db7670c3cb56141b10519ea.html">Inc</a></li><li class="navelem"><a href="gen__optimizer_8h.html">gen_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,202 +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 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('globals.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 file members with links to the documentation:</div>
<h3 class="doxsection"><a id="index_a" name="index_a"></a>- a -</h3><ul>
<li>ABS&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759">mylibs_defs.h</a></li>
<li>assert_usertracker&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_b" name="index_b"></a>- b -</h3><ul>
<li>ByteSwap16&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>check_null_ptr_1&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9">mylibs_defs.h</a></li>
<li>check_null_ptr_2&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">mylibs_defs.h</a></li>
<li>check_null_ptr_3&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2">mylibs_defs.h</a></li>
<li>check_null_ptr_4&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254">mylibs_defs.h</a></li>
<li>check_null_ptr_5&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490">mylibs_defs.h</a></li>
<li>ClearStruct&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>Divide_Up&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_i" name="index_i"></a>- i -</h3><ul>
<li>if_assert_usertracker&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>local_time&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">trace.h</a></li>
<li>LOG_LEVEL&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05">trace.h</a></li>
<li>log_printf&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26">trace.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>msDelay&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479">mylibs_defs.h</a></li>
<li>msDelayStart&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25">mylibs_defs.h</a></li>
<li>msDelayWaitDone&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518">mylibs_defs.h</a></li>
<li>msDelayWhileActive&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85">mylibs_defs.h</a></li>
<li>my_printf&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa">trace.h</a></li>
<li>MyLibs_Error_Handler&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_n" name="index_n"></a>- n -</h3><ul>
<li>num_of_usercnts&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>RTT_EraseFlash()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1">trace.h</a></li>
<li>RTT_FlashPrepare()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6">trace.h</a></li>
<li>RTT_ReadFromFlash()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146">trace.h</a></li>
<li>RTT_SaveToFlash()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63">trace.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_t" name="index_t"></a>- t -</h3><ul>
<li>tern_assert_usertracker&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30">trackers.h</a></li>
<li>TRACE_GPIO_RESET&#160;:&#160;<a class="el" href="group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a">trace.h</a></li>
<li>TRACE_GPIO_SET&#160;:&#160;<a class="el" href="group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb">trace.h</a></li>
<li>TrackerClear_All&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b">trackers.h</a></li>
<li>TrackerClear_Err&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74">trackers.h</a></li>
<li>TrackerClear_Ok&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9">trackers.h</a></li>
<li>TrackerClear_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d">trackers.h</a></li>
<li>TrackerClear_UserAll&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5">trackers.h</a></li>
<li>TrackerClear_Warn&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead">trackers.h</a></li>
<li>TrackerCnt_Err&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9">trackers.h</a></li>
<li>TrackerCnt_Ok&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1">trackers.h</a></li>
<li>TrackerCnt_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e">trackers.h</a></li>
<li>TrackerCnt_Warn&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57">trackers.h</a></li>
<li>TrackerGet_Err&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e">trackers.h</a></li>
<li>TrackerGet_Ok&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169">trackers.h</a></li>
<li>TrackerGet_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb">trackers.h</a></li>
<li>TrackerGet_Warn&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758">trackers.h</a></li>
<li>TrackerTypeDef&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4">trackers.h</a></li>
<li>TrackerWrite_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_u" name="index_u"></a>- u -</h3><ul>
<li>uint16_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086">bit_access.h</a></li>
<li>uint32_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1">bit_access.h</a></li>
<li>uint64_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a">bit_access.h</a></li>
<li>uint8_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396">bit_access.h</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,194 +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 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('globals_defs.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 macros with links to the documentation:</div>
<h3 class="doxsection"><a id="index_a" name="index_a"></a>- a -</h3><ul>
<li>ABS&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759">mylibs_defs.h</a></li>
<li>assert_usertracker&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_b" name="index_b"></a>- b -</h3><ul>
<li>ByteSwap16&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>check_null_ptr_1&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9">mylibs_defs.h</a></li>
<li>check_null_ptr_2&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3">mylibs_defs.h</a></li>
<li>check_null_ptr_3&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2">mylibs_defs.h</a></li>
<li>check_null_ptr_4&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254">mylibs_defs.h</a></li>
<li>check_null_ptr_5&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490">mylibs_defs.h</a></li>
<li>ClearStruct&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>Divide_Up&#160;:&#160;<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_i" name="index_i"></a>- i -</h3><ul>
<li>if_assert_usertracker&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>local_time&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">trace.h</a></li>
<li>LOG_LEVEL&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05">trace.h</a></li>
<li>log_printf&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26">trace.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>msDelay&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479">mylibs_defs.h</a></li>
<li>msDelayStart&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25">mylibs_defs.h</a></li>
<li>msDelayWaitDone&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518">mylibs_defs.h</a></li>
<li>msDelayWhileActive&#160;:&#160;<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85">mylibs_defs.h</a></li>
<li>my_printf&#160;:&#160;<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa">trace.h</a></li>
<li>MyLibs_Error_Handler&#160;:&#160;<a class="el" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f">mylibs_defs.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_n" name="index_n"></a>- n -</h3><ul>
<li>num_of_usercnts&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_t" name="index_t"></a>- t -</h3><ul>
<li>tern_assert_usertracker&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30">trackers.h</a></li>
<li>TRACE_GPIO_RESET&#160;:&#160;<a class="el" href="group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a">trace.h</a></li>
<li>TRACE_GPIO_SET&#160;:&#160;<a class="el" href="group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb">trace.h</a></li>
<li>TrackerClear_All&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b">trackers.h</a></li>
<li>TrackerClear_Err&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74">trackers.h</a></li>
<li>TrackerClear_Ok&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9">trackers.h</a></li>
<li>TrackerClear_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d">trackers.h</a></li>
<li>TrackerClear_UserAll&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5">trackers.h</a></li>
<li>TrackerClear_Warn&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead">trackers.h</a></li>
<li>TrackerCnt_Err&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9">trackers.h</a></li>
<li>TrackerCnt_Ok&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1">trackers.h</a></li>
<li>TrackerCnt_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e">trackers.h</a></li>
<li>TrackerCnt_Warn&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57">trackers.h</a></li>
<li>TrackerGet_Err&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e">trackers.h</a></li>
<li>TrackerGet_Ok&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169">trackers.h</a></li>
<li>TrackerGet_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb">trackers.h</a></li>
<li>TrackerGet_Warn&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758">trackers.h</a></li>
<li>TrackerTypeDef&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4">trackers.h</a></li>
<li>TrackerWrite_User&#160;:&#160;<a class="el" href="group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51">trackers.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_u" name="index_u"></a>- u -</h3><ul>
<li>uint16_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086">bit_access.h</a></li>
<li>uint32_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1">bit_access.h</a></li>
<li>uint64_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a">bit_access.h</a></li>
<li>uint8_bit&#160;:&#160;<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396">bit_access.h</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,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: File 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('globals_func.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 functions with links to the documentation:</div><ul>
<li>RTT_EraseFlash()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1">trace.h</a></li>
<li>RTT_FlashPrepare()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6">trace.h</a></li>
<li>RTT_ReadFromFlash()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146">trace.h</a></li>
<li>RTT_SaveToFlash()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63">trace.h</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,173 +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: Graph Legend</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('graph_legend.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">Graph Legend</div></div>
</div><!--header-->
<div class="contents">
<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
<p>Consider the following example: </p><div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div>
<div class="line"><span class="keyword">class </span>Invisible { };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div>
<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div>
<div class="line"> </div>
<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div>
<div class="line"><span class="keyword">class </span>Undocumented { };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div>
<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! A template class */</span></div>
<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div>
<div class="line"><span class="keyword">class </span>ProtectedBase { };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div>
<div class="line"><span class="keyword">class </span>PrivateBase { };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div>
<div class="line"><span class="keyword">class </span>Used { };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div>
<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div>
<div class="line"> <span class="keyword">protected</span> ProtectedBase,</div>
<div class="line"> <span class="keyword">private</span> PrivateBase,</div>
<div class="line"> <span class="keyword">public</span> Undocumented,</div>
<div class="line"> <span class="keyword">public</span> Templ&lt;int&gt;</div>
<div class="line">{</div>
<div class="line"> <span class="keyword">private</span>:</div>
<div class="line"> Used *m_usedClass;</div>
<div class="line">};</div>
</div><!-- fragment --><p> This will result in the following graph:</p>
<center><img src="graph_legend.png" alt="" class="inline"/></center><p>The boxes in the above graph have the following meaning: </p>
<ul>
<li>
A filled gray box represents the struct or class for which the graph is generated. </li>
<li>
A box with a black border denotes a documented struct or class. </li>
<li>
A box with a gray border denotes an undocumented struct or class. </li>
<li>
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
</ul>
<p>The arrows have the following meaning: </p>
<ul>
<li>
A blue arrow is used to visualize a public inheritance relation between two classes. </li>
<li>
A dark green arrow is used for protected inheritance. </li>
<li>
A dark red arrow is used for private inheritance. </li>
<li>
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </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 +0,0 @@
f74606a252eb303675caf37987d0b7af

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,392 +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: Time measurement</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('group___b_e_n_c_h___t_i_m_e.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">Time measurement <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a> &raquo; <a class="el" href="group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Библиотека для измерения времени/тиков между событиями
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Time measurement:</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="group___b_e_n_c_h___t_i_m_e.png" border="0" usemap="#agroup______b__e__n__c__h______t__i__m__e" loading="lazy" alt=""/></div>
<map name="agroup______b__e__n__c__h______t__i__m__e" id="agroup______b__e__n__c__h______t__i__m__e">
<area shape="rect" title="Библиотека для измерения времени/тиков между событиями" alt="" coords="147,5,280,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html" title="Утилиты для тестирования программы" alt="" coords="5,5,99,32"/>
</map>
</div>
<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:ga31b9f2267c562f3ceb533606daf0b789" id="r_ga31b9f2267c562f3ceb533606daf0b789"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga31b9f2267c562f3ceb533606daf0b789">BenchTime_Init</a>()</td></tr>
<tr class="memitem:ga89ff6c06fc21fb2bbfbf8cbf863316f1" id="r_ga89ff6c06fc21fb2bbfbf8cbf863316f1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga89ff6c06fc21fb2bbfbf8cbf863316f1">BenchTime_Start</a>(channel, ticks, tick_period)</td></tr>
<tr class="memitem:gadddc120d43a10fad50fbdeeab8d086b5" id="r_gadddc120d43a10fad50fbdeeab8d086b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gadddc120d43a10fad50fbdeeab8d086b5">BenchTime_End</a>(channel, ticks)</td></tr>
<tr class="memitem:ga91e352219014c7ea5507bbbe4b15912d" id="r_ga91e352219014c7ea5507bbbe4b15912d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga91e352219014c7ea5507bbbe4b15912d">BenchTime_GetMin</a>(channel)</td></tr>
<tr class="memitem:gab8103362e89bad95d965ac668284065c" id="r_gab8103362e89bad95d965ac668284065c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gab8103362e89bad95d965ac668284065c">BenchTime_GetMax</a>(channel)</td></tr>
<tr class="memitem:ga9f82f5ed8cfae31292dc3dca41471dd5" id="r_ga9f82f5ed8cfae31292dc3dca41471dd5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9f82f5ed8cfae31292dc3dca41471dd5">BenchTime_GetAverage</a>(channel)</td></tr>
<tr class="memitem:gaafbca7155cfc97b68428da2b0b1200ef" id="r_gaafbca7155cfc97b68428da2b0b1200ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaafbca7155cfc97b68428da2b0b1200ef">BenchTime_GetCount</a>(channel)</td></tr>
<tr class="memitem:ga9911aa13a8fa67c35a261d1cb3dc11e7" id="r_ga9911aa13a8fa67c35a261d1cb3dc11e7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9911aa13a8fa67c35a261d1cb3dc11e7">BenchTime_GetLast</a>(channel)</td></tr>
<tr class="memitem:ga09b9a6ef9b60605fc0015f6b379d8420" id="r_ga09b9a6ef9b60605fc0015f6b379d8420"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga09b9a6ef9b60605fc0015f6b379d8420">BenchTime_ResetStats</a>(channel)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<p>Библиотека для измерения времени/тиков между событиями </p>
<p>Поддерживает:</p><ul>
<li>Многоканальные измерения (несколько независимых таймеров)</li>
<li>Платформонезависимый интерфейс</li>
<li>Измерение в тиках или временных единицах</li>
<li>Статистику измерений (мин/макс/среднее)</li>
<li>Настраиваемый размер тиков для каждого канала</li>
</ul>
<p>Параметры для конфигурации:</p><ul>
<li><a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9">BENCH_TIME_ENABLE</a> - Включить бенч времени</li>
<li><a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a> - Максимальное количество каналов измерения (по умолчанию 8)</li>
</ul>
<dl class="section user"><dt>Пример использования:</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="bench__time_8h.html">bench_time.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// Инициализация</span></div>
<div class="line">BenchTime_Init();</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Измерение с SysTick</span></div>
<div class="line">BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF);</div>
<div class="line">some_function();</div>
<div class="line">uint32_t time = BenchTime_End(0, HAL_GetTick);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Измерение с TIM2 (16-бит)</span></div>
<div class="line">BenchTime_Start(1, TIM2-&gt;CNT, 0xFFFF);</div>
<div class="line">fast_function(); </div>
<div class="line">uint32_t time2 = BenchTime_End(1, TIM2-&gt;CNT);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Измерение с DWT цикловым счетчиком</span></div>
<div class="line">BenchTime_Start(2, DWT-&gt;CYCCNT, 0xFFFFFFFF);</div>
<div class="line">critical_function();</div>
<div class="line">uint32_t cycles = BenchTime_End(2, DWT-&gt;CYCCNT);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Многоканальное измерение</span></div>
<div class="line">BenchTime_Start(0, HAL_GetTick, 1000); <span class="comment">// общее время</span></div>
<div class="line">BenchTime_Start(1, TIM3-&gt;CNT, 500); <span class="comment">// часть 1</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// ... код 1</span></div>
<div class="line"> </div>
<div class="line">uint32_t part1 = BenchTime_End(1, TIM3-&gt;CNT);</div>
<div class="line">BenchTime_Start(2, TIM4-&gt;CNT, 200); <span class="comment">// часть 2 </span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// ... код 2</span></div>
<div class="line"> </div>
<div class="line">uint32_t part2 = BenchTime_End(2, TIM4-&gt;CNT);</div>
<div class="line">uint32_t total = BenchTime_End(0, HAL_GetTick); <span class="comment">// общее время</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// Статистика</span></div>
<div class="line">uint32_t min_time = BenchTime_GetMin(0);</div>
<div class="line">uint32_t max_time = BenchTime_GetMax(0);</div>
<div class="line">uint32_t avg_time = BenchTime_GetAverage(0);</div>
<div class="line">uint32_t count = BenchTime_GetCount(0);</div>
<div class="ttc" id="abench__time_8h_html"><div class="ttname"><a href="bench__time_8h.html">bench_time.h</a></div><div class="ttdoc">Заголовочный файл для измерения времени между событиями</div></div>
</div><!-- fragment --></dd></dl>
<a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
<a id="ga31b9f2267c562f3ceb533606daf0b789" name="ga31b9f2267c562f3ceb533606daf0b789"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga31b9f2267c562f3ceb533606daf0b789">&#9670;&#160;</a></span>BenchTime_Init</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_Init</td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00241">241</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="ga89ff6c06fc21fb2bbfbf8cbf863316f1" name="ga89ff6c06fc21fb2bbfbf8cbf863316f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga89ff6c06fc21fb2bbfbf8cbf863316f1">&#9670;&#160;</a></span>BenchTime_Start</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_Start</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>ticks</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tick_period</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">0</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00242">242</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="gadddc120d43a10fad50fbdeeab8d086b5" name="gadddc120d43a10fad50fbdeeab8d086b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadddc120d43a10fad50fbdeeab8d086b5">&#9670;&#160;</a></span>BenchTime_End</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_End</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>ticks</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">0</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00243">243</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="ga91e352219014c7ea5507bbbe4b15912d" name="ga91e352219014c7ea5507bbbe4b15912d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga91e352219014c7ea5507bbbe4b15912d">&#9670;&#160;</a></span>BenchTime_GetMin</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_GetMin</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">0</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00244">244</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="gab8103362e89bad95d965ac668284065c" name="gab8103362e89bad95d965ac668284065c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab8103362e89bad95d965ac668284065c">&#9670;&#160;</a></span>BenchTime_GetMax</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_GetMax</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">0</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00245">245</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="ga9f82f5ed8cfae31292dc3dca41471dd5" name="ga9f82f5ed8cfae31292dc3dca41471dd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9f82f5ed8cfae31292dc3dca41471dd5">&#9670;&#160;</a></span>BenchTime_GetAverage</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_GetAverage</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">0</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00246">246</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="gaafbca7155cfc97b68428da2b0b1200ef" name="gaafbca7155cfc97b68428da2b0b1200ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaafbca7155cfc97b68428da2b0b1200ef">&#9670;&#160;</a></span>BenchTime_GetCount</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_GetCount</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">0</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00247">247</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="ga9911aa13a8fa67c35a261d1cb3dc11e7" name="ga9911aa13a8fa67c35a261d1cb3dc11e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9911aa13a8fa67c35a261d1cb3dc11e7">&#9670;&#160;</a></span>BenchTime_GetLast</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_GetLast</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">0</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00248">248</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
<a id="ga09b9a6ef9b60605fc0015f6b379d8420" name="ga09b9a6ef9b60605fc0015f6b379d8420"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga09b9a6ef9b60605fc0015f6b379d8420">&#9670;&#160;</a></span>BenchTime_ResetStats</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BenchTime_ResetStats</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>channel</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00249">249</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</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="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 @@
<map id="Time measurement" name="Time measurement">
<area shape="rect" id="Node000001" title="Библиотека для измерения времени/тиков между событиями" alt="" coords="147,5,280,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html" title="Утилиты для тестирования программы" alt="" coords="5,5,99,32"/>
</map>

View File

@ -1 +0,0 @@
6705808550d728844cfae44f809a322b

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,317 +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: Bit access defines</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('group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.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 defines <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a> &raquo; <a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Макросы и typedef'ы для работы с битами в unsigned типах.
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Bit access defines:</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="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.png" border="0" usemap="#agroup______b__i__t______a__c__c__e__s__s______d__e__f__i__n__e__s" loading="lazy" alt=""/></div>
<map name="agroup______b__i__t______a__c__c__e__s__s______d__e__f__i__n__e__s" id="agroup______b__i__t______a__c__c__e__s__s______d__e__f__i__n__e__s">
<area shape="rect" title="Макросы и typedef&#39;ы для работы с битами в unsigned типах." alt="" coords="154,5,283,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
</map>
</div>
<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="#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="#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="#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="#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>
<p>Макросы и typedef'ы для работы с битами в unsigned типах. </p>
<p>В этом файле определены макросы для получения значения конкретного бита^</p><ul>
<li><a class="el" href="#ga57dc3bb3472a66fc92312f89d42d2396">uint8_bit</a></li>
<li><a class="el" href="#ga6a122b536ad99ae611c8cf01437af086">uint16_bit</a></li>
<li><a class="el" href="#gafaa2080168b1b6f7281e8bfabab022d1">uint32_bit</a></li>
<li><a class="el" href="#ga47eb69ce9330a1c73fe8031240f02f0a">uint64_bit</a></li>
</ul>
<p>Особенности использования:</p><ul>
<li>Индекс бита должен быть <b>константой на этапе компиляции</b>. Пример верного использования: <div class="fragment"><div class="line">uint8_t val = 0x05;</div>
<div class="line">uint8_t b2 = <a class="code hl_define" href="#ga57dc3bb3472a66fc92312f89d42d2396">uint8_bit</a>(val, 2); <span class="comment">// Получить бит 2</span></div>
<div class="line"><a class="code hl_define" href="#ga57dc3bb3472a66fc92312f89d42d2396">uint8_bit</a>(val, 6) = 1; <span class="comment">// Записать бит 6</span></div>
<div class="ttc" id="agroup___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_html_ga57dc3bb3472a66fc92312f89d42d2396"><div class="ttname"><a href="#ga57dc3bb3472a66fc92312f89d42d2396">uint8_bit</a></div><div class="ttdeci">#define uint8_bit(_uint8_, _bit_)</div><div class="ttdoc">Получить n-й бит из uint8_t.</div><div class="ttdef"><b>Definition</b> <a href="bit__access_8h_source.html#l00129">bit_access.h:129</a></div></div>
</div><!-- fragment --></li>
<li>Нельзя использовать переменные в качестве индекса: <div class="fragment"><div class="line">uint8_t i = 2;</div>
<div class="line"><a class="code hl_define" href="#ga57dc3bb3472a66fc92312f89d42d2396">uint8_bit</a>(val, i); <span class="comment">// Не сработает!</span></div>
</div><!-- fragment --></li>
<li>Макросы возвращают 0 или 1.</li>
<li>Доступ реализован через приведение к <span class="tt">union</span> с битовыми полями, поэтому это безопасный способ работы с отдельными битами без ручного сдвига и маскирования. </li>
</ul>
<a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
<a id="ga57dc3bb3472a66fc92312f89d42d2396" name="ga57dc3bb3472a66fc92312f89d42d2396"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga57dc3bb3472a66fc92312f89d42d2396">&#9670;&#160;</a></span>uint8_bit</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define uint8_bit</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_uint8_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_bit_</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(*(<a class="code hl_union" href="unionuint8___bit_type_def.html">uint8_BitTypeDef</a> *)(&amp;(_uint8_))).bit.bit##_bit_</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="bit__access_8h_source.html#l00039">bit_access.h:40</a></div></div>
</div><!-- fragment -->
<p>Получить n-й бит из uint8_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_uint8_</td><td>Переменная типа uint8_t </td></tr>
<tr><td class="paramname">_bit_</td><td>Константный номер бита (0..7) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Значение выбранного бита (0 или 1) </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Индекс бита должен быть известен на этапе компиляции! </dd></dl>
<p class="definition">Definition at line <a class="el" href="bit__access_8h_source.html#l00129">129</a> of file <a class="el" href="bit__access_8h_source.html">bit_access.h</a>.</p>
</div>
</div>
<a id="ga6a122b536ad99ae611c8cf01437af086" name="ga6a122b536ad99ae611c8cf01437af086"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6a122b536ad99ae611c8cf01437af086">&#9670;&#160;</a></span>uint16_bit</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define uint16_bit</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_uint8_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_bit_</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(*(<a class="code hl_union" href="unionuint16___bit_type_def.html">uint16_BitTypeDef</a> *)(&amp;(_uint8_))).bit.bit##_bit_</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="bit__access_8h_source.html#l00055">bit_access.h:56</a></div></div>
</div><!-- fragment -->
<p>Получить n-й бит из uint16_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_uint16_</td><td>Переменная типа uint16_t </td></tr>
<tr><td class="paramname">_bit_</td><td>Константный номер бита (0..15) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Значение выбранного бита (0 или 1) </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Индекс бита должен быть известен на этапе компиляции! </dd></dl>
<p class="definition">Definition at line <a class="el" href="bit__access_8h_source.html#l00137">137</a> of file <a class="el" href="bit__access_8h_source.html">bit_access.h</a>.</p>
</div>
</div>
<a id="gafaa2080168b1b6f7281e8bfabab022d1" name="gafaa2080168b1b6f7281e8bfabab022d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafaa2080168b1b6f7281e8bfabab022d1">&#9670;&#160;</a></span>uint32_bit</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define uint32_bit</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_uint8_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_bit_</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(*(<a class="code hl_union" href="unionuint32___bit_type_def.html">uint32_BitTypeDef</a> *)(&amp;(_uint8_))).bit.bit##_bit_</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="bit__access_8h_source.html#l00080">bit_access.h:81</a></div></div>
</div><!-- fragment -->
<p>Получить n-й бит из uint32_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_uint32_</td><td>Переменная типа uint32_t </td></tr>
<tr><td class="paramname">_bit_</td><td>Константный номер бита (0..31) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Значение выбранного бита (0 или 1) </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Индекс бита должен быть известен на этапе компиляции! </dd></dl>
<p class="definition">Definition at line <a class="el" href="bit__access_8h_source.html#l00145">145</a> of file <a class="el" href="bit__access_8h_source.html">bit_access.h</a>.</p>
</div>
</div>
<a id="ga47eb69ce9330a1c73fe8031240f02f0a" name="ga47eb69ce9330a1c73fe8031240f02f0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga47eb69ce9330a1c73fe8031240f02f0a">&#9670;&#160;</a></span>uint64_bit</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define uint64_bit</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_uint8_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_bit_</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(*(<a class="code hl_union" href="unionuint64___bit_type_def.html">uint64_BitTypeDef</a> *)(&amp;(_uint8_))).bit.bit##_bit_</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="bit__access_8h_source.html#l00097">bit_access.h:98</a></div></div>
</div><!-- fragment -->
<p>Получить n-й бит из uint64_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_uint64_</td><td>Переменная типа uint64_t </td></tr>
<tr><td class="paramname">_bit_</td><td>Константный номер бита (0..63) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Значение выбранного бита (0 или 1) </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Индекс бита должен быть известен на этапе компиляции! </dd></dl>
<p class="definition">Definition at line <a class="el" href="bit__access_8h_source.html#l00153">153</a> of file <a class="el" href="bit__access_8h_source.html">bit_access.h</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="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 group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s =
[
[ "uint8_BitTypeDef", "unionuint8___bit_type_def.html", null ],
[ "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_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,4 +0,0 @@
<map id="Bit access defines" name="Bit access defines">
<area shape="rect" id="Node000001" title="Макросы и typedef&#39;ы для работы с битами в unsigned типах." alt="" coords="154,5,283,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
</map>

View File

@ -1 +0,0 @@
b15e6059b024c1bd57db4f03c04931dd

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 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: Delays defines</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('group___d_e_l_a_y_s___d_e_f_i_n_e_s.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">Delays defines <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a> &raquo; <a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Макросы и определения для работы с задержками в миллисекундах.
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Delays defines:</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="group___d_e_l_a_y_s___d_e_f_i_n_e_s.png" border="0" usemap="#agroup______d__e__l__a__y__s______d__e__f__i__n__e__s" loading="lazy" alt=""/></div>
<map name="agroup______d__e__l__a__y__s______d__e__f__i__n__e__s" id="agroup______d__e__l__a__y__s______d__e__f__i__n__e__s">
<area shape="rect" title="Макросы и определения для работы с задержками в миллисекундах." alt="" coords="154,5,262,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
</map>
</div>
<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:gabeb97579daeb622c6651ed03c4a27479" id="r_gabeb97579daeb622c6651ed03c4a27479"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gabeb97579daeb622c6651ed03c4a27479">msDelay</a>(_ms_)</td></tr>
<tr class="memdesc:gabeb97579daeb622c6651ed03c4a27479"><td class="mdescLeft">&#160;</td><td class="mdescRight">Блокирующая задержка на указанное количество миллисекунд. <br /></td></tr>
<tr class="memitem:ga8a5051b1292d1019fe8dd3fc5521ab25" id="r_ga8a5051b1292d1019fe8dd3fc5521ab25"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8a5051b1292d1019fe8dd3fc5521ab25">msDelayStart</a>(_pvar_)</td></tr>
<tr class="memdesc:ga8a5051b1292d1019fe8dd3fc5521ab25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Начать отсчет задержки. <br /></td></tr>
<tr class="memitem:ga0b97e172659a59ee4fa56f851643ae85" id="r_ga0b97e172659a59ee4fa56f851643ae85"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga0b97e172659a59ee4fa56f851643ae85">msDelayWhileActive</a>(_ms_, _pvar_)</td></tr>
<tr class="memdesc:ga0b97e172659a59ee4fa56f851643ae85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверяет, активна ли задержка. <br /></td></tr>
<tr class="memitem:gaed082c07b9fc4d1894330d885b9b5518" id="r_gaed082c07b9fc4d1894330d885b9b5518"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaed082c07b9fc4d1894330d885b9b5518">msDelayWaitDone</a>(_ms_, _pvar_)</td></tr>
<tr class="memdesc:gaed082c07b9fc4d1894330d885b9b5518"><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>
<p>Макросы и определения для работы с задержками в миллисекундах. </p>
<p>Этот блок содержит макросы для реализации задержек с использованием HAL или FreeRTOS:</p><ul>
<li><a class="el" href="#gabeb97579daeb622c6651ed03c4a27479">msDelay</a> — простая задержка заданной длительности;</li>
<li><a class="el" href="#ga8a5051b1292d1019fe8dd3fc5521ab25">msDelayStart</a> — сохранение текущего времени начала задержки;</li>
<li><a class="el" href="#ga0b97e172659a59ee4fa56f851643ae85">msDelayWhileActive</a> — проверка, активна ли задержка;</li>
<li><a class="el" href="#gaed082c07b9fc4d1894330d885b9b5518">msDelayWaitDone</a> — проверка, завершена ли задержка. Эти макросы удобны для реализации неблокирующих задержек. </li>
</ul>
<a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
<a id="gabeb97579daeb622c6651ed03c4a27479" name="gabeb97579daeb622c6651ed03c4a27479"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabeb97579daeb622c6651ed03c4a27479">&#9670;&#160;</a></span>msDelay</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define msDelay</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_ms_</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <span class="keywordflow">do</span> { \</div>
<div class="line"> uint32_t _start_ = <a class="code hl_define" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>(); \</div>
<div class="line"> while (<a class="code hl_define" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>() - _start_ &lt; (_ms_)) {} \</div>
<div class="line"> } <span class="keywordflow">while</span>(0)</div>
<div class="ttc" id="agroup___t_r_a_c_e___s_e_r_i_a_l_html_ga9c853b02c22f26023c34d1d404b6d653"><div class="ttname"><a href="group___t_r_a_c_e___s_e_r_i_a_l.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="trace_8h_source.html#l00097">trace.h:97</a></div></div>
</div><!-- fragment -->
<p>Блокирующая задержка на указанное количество миллисекунд. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_ms_</td><td>Время задержки в миллисекундах. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Использует задержку через <a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a> или osDelay в зависимости от <a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151">FREERTOS_DELAY</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00097">97</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="ga8a5051b1292d1019fe8dd3fc5521ab25" name="ga8a5051b1292d1019fe8dd3fc5521ab25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8a5051b1292d1019fe8dd3fc5521ab25">&#9670;&#160;</a></span>msDelayStart</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define msDelayStart</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_pvar_</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">*(_pvar_) = <a class="code hl_define" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>()</div>
</div><!-- fragment -->
<p>Начать отсчет задержки. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_pvar_</td><td>Указатель на переменную типа uint32_t для хранения времени старта.</td></tr>
</table>
</dd>
</dl>
<p>После вызова этого макроса переменная <em>pvar</em> содержит текущее количество миллисекунд с момента запуска системы (<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>).</p>
<p>Используется для реализации неблокирующих задержек. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00113">113</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="ga0b97e172659a59ee4fa56f851643ae85" name="ga0b97e172659a59ee4fa56f851643ae85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0b97e172659a59ee4fa56f851643ae85">&#9670;&#160;</a></span>msDelayWhileActive</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define msDelayWhileActive</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_ms_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_pvar_</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code hl_define" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>() - *(_pvar_) &lt; _ms_)</div>
</div><!-- fragment -->
<p>Проверяет, активна ли задержка. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_ms_</td><td>Длительность задержки в миллисекундах. </td></tr>
<tr><td class="paramname">_pvar_</td><td>Указатель на переменную, в которой сохранено время начала (<a class="el" href="#ga8a5051b1292d1019fe8dd3fc5521ab25">msDelayStart</a>). </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">1</td><td>Задержка еще активна. </td></tr>
<tr><td class="paramname">0</td><td>Задержка завершена.</td></tr>
</table>
</dd>
</dl>
<p>Возвращает true, пока время задержки не истекло. Используется в проверках, когда нужно <b>действовать, пока задержка выполняется</b>. Пример: </p><div class="fragment"><div class="line"><span class="keywordflow">while</span>(<a class="code hl_define" href="#ga0b97e172659a59ee4fa56f851643ae85">msDelayWhileActive</a>(1000, &amp;tick)) {</div>
<div class="line"> <span class="comment">// выполняем другие задачи, задержка не блокирует поток</span></div>
<div class="line">}</div>
<div class="ttc" id="agroup___d_e_l_a_y_s___d_e_f_i_n_e_s_html_ga0b97e172659a59ee4fa56f851643ae85"><div class="ttname"><a href="#ga0b97e172659a59ee4fa56f851643ae85">msDelayWhileActive</a></div><div class="ttdeci">#define msDelayWhileActive(_ms_, _pvar_)</div><div class="ttdoc">Проверяет, активна ли задержка.</div><div class="ttdef"><b>Definition</b> <a href="mylibs__defs_8h_source.html#l00130">mylibs_defs.h:130</a></div></div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00130">130</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="gaed082c07b9fc4d1894330d885b9b5518" name="gaed082c07b9fc4d1894330d885b9b5518"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaed082c07b9fc4d1894330d885b9b5518">&#9670;&#160;</a></span>msDelayWaitDone</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define msDelayWaitDone</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_ms_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_pvar_</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code hl_define" href="group___t_r_a_c_e___s_e_r_i_a_l.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>() - *(_pvar_) &gt;= _ms_)</div>
</div><!-- fragment -->
<p>Проверяет, завершилась ли задержка. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">_ms_</td><td>Длительность задержки в миллисекундах. </td></tr>
<tr><td class="paramname">_pvar_</td><td>Указатель на переменную, в которой сохранено время начала (msDelayStart). </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">1</td><td>Задержка завершена. </td></tr>
<tr><td class="paramname">0</td><td>Задержка еще активна.</td></tr>
</table>
</dd>
</dl>
<p>Возвращает true, когда задержка уже завершена. Используется в проверках, когда нужно <b>выполнить действие только после окончания задержки</b>. Пример: </p><div class="fragment"><div class="line"><span class="keywordflow">if</span>(<a class="code hl_define" href="#gaed082c07b9fc4d1894330d885b9b5518">msDelayWaitDone</a>(1000, &amp;tick)) {</div>
<div class="line"> <span class="comment">// выполняем действие после завершения задержки</span></div>
<div class="line">}</div>
<div class="ttc" id="agroup___d_e_l_a_y_s___d_e_f_i_n_e_s_html_gaed082c07b9fc4d1894330d885b9b5518"><div class="ttname"><a href="#gaed082c07b9fc4d1894330d885b9b5518">msDelayWaitDone</a></div><div class="ttdeci">#define msDelayWaitDone(_ms_, _pvar_)</div><div class="ttdoc">Проверяет, завершилась ли задержка.</div><div class="ttdef"><b>Definition</b> <a href="mylibs__defs_8h_source.html#l00147">mylibs_defs.h:147</a></div></div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00147">147</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</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="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 group___d_e_l_a_y_s___d_e_f_i_n_e_s =
[
[ "msDelay", "group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479", null ],
[ "msDelayStart", "group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25", null ],
[ "msDelayWhileActive", "group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85", null ],
[ "msDelayWaitDone", "group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518", null ]
];

View File

@ -1,4 +0,0 @@
<map id="Delays defines" name="Delays defines">
<area shape="rect" id="Node000001" title="Макросы и определения для работы с задержками в миллисекундах." alt="" coords="154,5,262,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
</map>

View File

@ -1 +0,0 @@
9bb1fbf15e0d245a5219c269dfcf886b

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,335 +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: Error Handler defines</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('group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.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">Error Handler defines <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a> &raquo; <a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Дефайны для обработки ошибок
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Error Handler defines:</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="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.png" border="0" usemap="#agroup______e__r__r__o__r______h__a__n__d__l__e__r______d__e__f__i__n__e__s" loading="lazy" alt=""/></div>
<map name="agroup______e__r__r__o__r______h__a__n__d__l__e__r______d__e__f__i__n__e__s" id="agroup______e__r__r__o__r______h__a__n__d__l__e__r______d__e__f__i__n__e__s">
<area shape="rect" title="Дефайны для обработки ошибок" alt="" coords="154,5,298,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
</map>
</div>
<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:gae110df81afd885a390bbeb152d7b709f" id="r_gae110df81afd885a390bbeb152d7b709f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gae110df81afd885a390bbeb152d7b709f">MyLibs_Error_Handler</a>(params)</td></tr>
<tr class="memdesc:gae110df81afd885a390bbeb152d7b709f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error_Handler который будет вызыватся в библиотеке <br /></td></tr>
<tr class="memitem:ga5d066a5b9781f9437e75d98677489eb9" id="r_ga5d066a5b9781f9437e75d98677489eb9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga5d066a5b9781f9437e75d98677489eb9">check_null_ptr_1</a>(p1)</td></tr>
<tr class="memdesc:ga5d066a5b9781f9437e75d98677489eb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверить один указатель на NULL. <br /></td></tr>
<tr class="memitem:ga27b363f333cacdccc15f5174e096b5b3" id="r_ga27b363f333cacdccc15f5174e096b5b3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga27b363f333cacdccc15f5174e096b5b3">check_null_ptr_2</a>(p1, p2)</td></tr>
<tr class="memdesc:ga27b363f333cacdccc15f5174e096b5b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверить два указателя на NULL. <br /></td></tr>
<tr class="memitem:ga838b40542faa9aa273d18f921b21fda2" id="r_ga838b40542faa9aa273d18f921b21fda2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga838b40542faa9aa273d18f921b21fda2">check_null_ptr_3</a>(p1, p2, p3)</td></tr>
<tr class="memdesc:ga838b40542faa9aa273d18f921b21fda2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверить три указателя на NULL. <br /></td></tr>
<tr class="memitem:ga590973be111afc3f9ba15e6939530254" id="r_ga590973be111afc3f9ba15e6939530254"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga590973be111afc3f9ba15e6939530254">check_null_ptr_4</a>(p1, p2, p3, p4)</td></tr>
<tr class="memdesc:ga590973be111afc3f9ba15e6939530254"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверить четыре указателя на NULL. <br /></td></tr>
<tr class="memitem:gaab0aafd7a4a21ec4f338b19269f65490" id="r_gaab0aafd7a4a21ec4f338b19269f65490"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaab0aafd7a4a21ec4f338b19269f65490">check_null_ptr_5</a>(p1, p2, p3, p4, p5)</td></tr>
<tr class="memdesc:gaab0aafd7a4a21ec4f338b19269f65490"><td class="mdescLeft">&#160;</td><td class="mdescRight">Проверить пять указателей на NULL. <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:ga1730ffe1e560465665eb47d9264826f9" id="r_ga1730ffe1e560465665eb47d9264826f9"><td class="memItemLeft" align="right" valign="top"><a id="ga1730ffe1e560465665eb47d9264826f9" name="ga1730ffe1e560465665eb47d9264826f9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Error_Handler</b> (void)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<p>Дефайны для обработки ошибок </p>
<a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
<a id="gae110df81afd885a390bbeb152d7b709f" name="gae110df81afd885a390bbeb152d7b709f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae110df81afd885a390bbeb152d7b709f">&#9670;&#160;</a></span>MyLibs_Error_Handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MyLibs_Error_Handler</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>params</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">Error_Handler(params)</div>
</div><!-- fragment -->
<p>Error_Handler который будет вызыватся в библиотеке </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00046">46</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="ga5d066a5b9781f9437e75d98677489eb9" name="ga5d066a5b9781f9437e75d98677489eb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5d066a5b9781f9437e75d98677489eb9">&#9670;&#160;</a></span>check_null_ptr_1</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define check_null_ptr_1</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p1</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(p1 == NULL)</div>
</div><!-- fragment -->
<p>Проверить один указатель на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00053">53</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="ga27b363f333cacdccc15f5174e096b5b3" name="ga27b363f333cacdccc15f5174e096b5b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga27b363f333cacdccc15f5174e096b5b3">&#9670;&#160;</a></span>check_null_ptr_2</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define check_null_ptr_2</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p2</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((p1 == NULL) || (p1 != NULL &amp;&amp; p2 == NULL))</div>
</div><!-- fragment -->
<p>Проверить два указателя на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00056">56</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="ga838b40542faa9aa273d18f921b21fda2" name="ga838b40542faa9aa273d18f921b21fda2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga838b40542faa9aa273d18f921b21fda2">&#9670;&#160;</a></span>check_null_ptr_3</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define check_null_ptr_3</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p2</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p3</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((p1 == NULL) || (p1 != NULL &amp;&amp; ((p2 == NULL) || (p2 != NULL &amp;&amp; p3 == NULL))))</div>
</div><!-- fragment -->
<p>Проверить три указателя на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00059">59</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="ga590973be111afc3f9ba15e6939530254" name="ga590973be111afc3f9ba15e6939530254"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga590973be111afc3f9ba15e6939530254">&#9670;&#160;</a></span>check_null_ptr_4</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define check_null_ptr_4</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p2</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p3</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p4</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((p1 == NULL) || (p1 != NULL &amp;&amp; ((p2 == NULL) || (p2 != NULL &amp;&amp; ((p3 == NULL) || (p3 != NULL &amp;&amp; p4 == NULL))))))</div>
</div><!-- fragment -->
<p>Проверить четыре указателя на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00062">62</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
<a id="gaab0aafd7a4a21ec4f338b19269f65490" name="gaab0aafd7a4a21ec4f338b19269f65490"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaab0aafd7a4a21ec4f338b19269f65490">&#9670;&#160;</a></span>check_null_ptr_5</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define check_null_ptr_5</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p2</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p3</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p4</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p5</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((p1 == NULL) || (p1 != NULL &amp;&amp; ((p2 == NULL) || (p2 != NULL &amp;&amp; ((p3 == NULL) || (p3 != NULL &amp;&amp; ((p4 == NULL) || (p4 != NULL &amp;&amp; p5 == NULL))))))))</div>
</div><!-- fragment -->
<p>Проверить пять указателей на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00065">65</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</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="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,9 +0,0 @@
var group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s =
[
[ "MyLibs_Error_Handler", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f", null ],
[ "check_null_ptr_1", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9", null ],
[ "check_null_ptr_2", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3", null ],
[ "check_null_ptr_3", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2", null ],
[ "check_null_ptr_4", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254", null ],
[ "check_null_ptr_5", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490", null ]
];

View File

@ -1,4 +0,0 @@
<map id="Error Handler defines" name="Error Handler defines">
<area shape="rect" id="Node000001" title="Дефайны для обработки ошибок" alt="" coords="154,5,298,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
</map>

View File

@ -1 +0,0 @@
48759eae8e94aea68fae58ca8d91b5d1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,240 +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: Genetic configs</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('group___g_e_n___c_o_n_f_i_g.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">Genetic configs <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a> &raquo; <a class="el" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html">Configs</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Конфигурация генетического алгоритма обучения
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Genetic configs:</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="group___g_e_n___c_o_n_f_i_g.png" border="0" usemap="#agroup______g__e__n______c__o__n__f__i__g" loading="lazy" alt=""/></div>
<map name="agroup______g__e__n______c__o__n__f__i__g" id="agroup______g__e__n______c__o__n__f__i__g">
<area shape="rect" title="Конфигурация генетического алгоритма обучения" alt="" coords="120,5,232,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html" title="Конфигурации для библиотек MyLibs." alt="" coords="5,5,72,32"/>
</map>
</div>
<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:gae6d1db3c0b21f67cb0db2673d207b62c" id="r_gae6d1db3c0b21f67cb0db2673d207b62c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gae6d1db3c0b21f67cb0db2673d207b62c">GEN_OPTIMIZATION_ENABLE</a></td></tr>
<tr class="memdesc:gae6d1db3c0b21f67cb0db2673d207b62c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить оптимизацию параметров <br /></td></tr>
<tr class="memitem:ga8daf4b266a95353d580bd7946f47c0ab" id="r_ga8daf4b266a95353d580bd7946f47c0ab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a>&#160;&#160;&#160;20</td></tr>
<tr class="memdesc:ga8daf4b266a95353d580bd7946f47c0ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Максимальное количество параметров <br /></td></tr>
<tr class="memitem:ga201cffde04ebc6540869c74bd1dae869" id="r_ga201cffde04ebc6540869c74bd1dae869"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>&#160;&#160;&#160;100</td></tr>
<tr class="memdesc:ga201cffde04ebc6540869c74bd1dae869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Максимальное количество кандидатов для обучения <br /></td></tr>
<tr class="memitem:ga67c3c54503b9bbd5d175ac46d37866d9" id="r_ga67c3c54503b9bbd5d175ac46d37866d9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga67c3c54503b9bbd5d175ac46d37866d9">BENCH_TIME_ENABLE</a></td></tr>
<tr class="memdesc:ga67c3c54503b9bbd5d175ac46d37866d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Включить бенч времени <br /></td></tr>
<tr class="memitem:ga74fdf777ceefa5e7d67120fbda4cde52" id="r_ga74fdf777ceefa5e7d67120fbda4cde52"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga74fdf777ceefa5e7d67120fbda4cde52">BENCH_TIME_MAX_CHANNELS</a>&#160;&#160;&#160;16</td></tr>
<tr class="memdesc:ga74fdf777ceefa5e7d67120fbda4cde52"><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>
<p>Конфигурация генетического алгоритма обучения </p>
<a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
<a id="gae6d1db3c0b21f67cb0db2673d207b62c" name="gae6d1db3c0b21f67cb0db2673d207b62c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae6d1db3c0b21f67cb0db2673d207b62c">&#9670;&#160;</a></span>GEN_OPTIMIZATION_ENABLE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define GEN_OPTIMIZATION_ENABLE</td>
</tr>
</table>
</div><div class="memdoc">
<p>Включить оптимизацию параметров </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00064">64</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga8daf4b266a95353d580bd7946f47c0ab" name="ga8daf4b266a95353d580bd7946f47c0ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8daf4b266a95353d580bd7946f47c0ab">&#9670;&#160;</a></span>GEN_MAX_PARAMS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define GEN_MAX_PARAMS&#160;&#160;&#160;20</td>
</tr>
</table>
</div><div class="memdoc">
<p>Максимальное количество параметров </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00065">65</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga201cffde04ebc6540869c74bd1dae869" name="ga201cffde04ebc6540869c74bd1dae869"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga201cffde04ebc6540869c74bd1dae869">&#9670;&#160;</a></span>GEN_MAX_CANDIDATES</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define GEN_MAX_CANDIDATES&#160;&#160;&#160;100</td>
</tr>
</table>
</div><div class="memdoc">
<p>Максимальное количество кандидатов для обучения </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00066">66</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga67c3c54503b9bbd5d175ac46d37866d9" name="ga67c3c54503b9bbd5d175ac46d37866d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga67c3c54503b9bbd5d175ac46d37866d9">&#9670;&#160;</a></span>BENCH_TIME_ENABLE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BENCH_TIME_ENABLE</td>
</tr>
</table>
</div><div class="memdoc">
<p>Включить бенч времени </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00081">81</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga74fdf777ceefa5e7d67120fbda4cde52" name="ga74fdf777ceefa5e7d67120fbda4cde52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga74fdf777ceefa5e7d67120fbda4cde52">&#9670;&#160;</a></span>BENCH_TIME_MAX_CHANNELS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BENCH_TIME_MAX_CHANNELS&#160;&#160;&#160;16</td>
</tr>
</table>
</div><div class="memdoc">
<p>Максимальное количество каналов измерения </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00082">82</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</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="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 group___g_e_n___c_o_n_f_i_g =
[
[ "GEN_OPTIMIZATION_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c", null ],
[ "GEN_MAX_PARAMS", "group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab", null ],
[ "GEN_MAX_CANDIDATES", "group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869", null ],
[ "BENCH_TIME_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9", null ],
[ "BENCH_TIME_MAX_CHANNELS", "group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52", null ]
];

View File

@ -1,4 +0,0 @@
<map id="Genetic configs" name="Genetic configs">
<area shape="rect" id="Node000001" title="Конфигурация генетического алгоритма обучения" alt="" coords="120,5,232,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___c_o_n_f_i_g.html" title="Конфигурации для библиотек MyLibs." alt="" coords="5,5,72,32"/>
</map>

View File

@ -1 +0,0 @@
5f0295c96943053471a3de806e4b1afd

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,324 +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: Genetic optimizer</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('group___g_e_n___o_p_t_i_m_i_z_e_r.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">Genetic optimizer <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a> &raquo; <a class="el" href="group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Библиотека для эволюционного подбора параметров
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Genetic optimizer:</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="group___g_e_n___o_p_t_i_m_i_z_e_r.png" border="0" usemap="#agroup______g__e__n______o__p__t__i__m__i__z__e__r" loading="lazy" alt=""/></div>
<map name="agroup______g__e__n______o__p__t__i__m__i__z__e__r" id="agroup______g__e__n______o__p__t__i__m__i__z__e__r">
<area shape="rect" title="Библиотека для эволюционного подбора параметров" alt="" coords="147,5,270,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html" title="Утилиты для тестирования программы" alt="" coords="5,5,99,32"/>
</map>
</div>
<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:GenOptimizer_5Ft" id="r_GenOptimizer_5Ft"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gen_optimizer__t.html">GenOptimizer_t</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:ga3e654886869ea8182effbfcb99278670" id="r_ga3e654886869ea8182effbfcb99278670"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga3e654886869ea8182effbfcb99278670">GenOptimizer_Init</a>(opt, n_params, n_cand, n_best, mutation_amp, start_params)</td></tr>
<tr class="memitem:ga33bbb9131ac7f94c3731dd4130321885" id="r_ga33bbb9131ac7f94c3731dd4130321885"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga33bbb9131ac7f94c3731dd4130321885">GenOptimizer_Step</a>(opt, params, LossFunc)</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="#ga83abbcabaff9111c03ae2475ee72ea3e">PARAM_SCALE</a>(x, min_val, max_val)</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="#gaa1d5510fe5f0bd989473f3ebe324bde3">PARAM_UNSCALE</a>(val, min_val, max_val)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<p>Библиотека для эволюционного подбора параметров </p>
<p>Поддерживает:</p><ul>
<li>Любое количество параметров</li>
<li>Генерацию новых параметров на основе лучших кандидатов</li>
<li>Мутацию для поиска оптимальных параметров</li>
<li>Несколько независимых оптимизаторов в одной программе</li>
</ul>
<p>Параметры для конфигурации:</p><ul>
<li><a class="el" href="group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c">GEN_OPTIMIZATION_ENABLE</a> - Включить оптимизацию параметров Если библиотека отключена <a class="el" href="group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c">GEN_OPTIMIZATION_ENABLE</a>, то вставляются заглушки, никак не влияющие на параметры и остальную программу</li>
<li><a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a> - Максимальное количество параметров</li>
<li><a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a> - Максимальное количество кандидатов для обучения</li>
<li>(опционально) GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)</li>
<li>(опционально) GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)</li>
<li>(опционально) ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений</li>
</ul>
<dl class="section user"><dt>Пример использования:</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="gen__optimizer_8h.html">gen_optimizer.h</a>&quot;</span></div>
<div class="line"><span class="preprocessor">#define N_PARAMS 4</span></div>
<div class="line"><span class="preprocessor">#define N_CANDIDATES 100</span></div>
<div class="line"><span class="preprocessor">#define N_BEST 10</span></div>
<div class="line"><span class="preprocessor">#define MUTATION 0.1f</span></div>
<div class="line"><span class="keywordtype">float</span> params[N_PARAMS];</div>
<div class="line"><a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a> optimizer;</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Формирование параметров</span></div>
<div class="line">uint16_t param_u16 = 800;</div>
<div class="line"><span class="keywordtype">float</span> param_f = 0.01f;</div>
<div class="line">uint8_t param_u8 = 40;</div>
<div class="line">int16_t param_i16 = 1600;</div>
<div class="line">params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);</div>
<div class="line">params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);</div>
<div class="line">params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);</div>
<div class="line">params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Инициалиазция</span></div>
<div class="line">GenOptimizer_Init(&amp;optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Шаг эволюции</span></div>
<div class="line"><span class="keywordtype">float</span> loss = calc_loss(); <span class="comment">// расчет эффективности параметров (от 0 до 1)</span></div>
<div class="line">GenOptimizer_Step(&amp;optimizer, params, loss);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Взятие следующих для эволюции параметров</span></div>
<div class="line">param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);</div>
<div class="line">param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);</div>
<div class="line">param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);</div>
<div class="line">param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);</div>
<div class="ttc" id="agen__optimizer_8h_html"><div class="ttname"><a href="gen__optimizer_8h.html">gen_optimizer.h</a></div><div class="ttdoc">Заголовочный файл для адаптивного подбора параметров</div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html"><div class="ttname"><a href="struct_gen_optimizer__t.html">GenOptimizer_t</a></div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00319">gen_optimizer.h:319</a></div></div>
</div><!-- fragment --></dd></dl>
<a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
<a id="ga3e654886869ea8182effbfcb99278670" name="ga3e654886869ea8182effbfcb99278670"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3e654886869ea8182effbfcb99278670">&#9670;&#160;</a></span>GenOptimizer_Init</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define GenOptimizer_Init</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>opt</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>n_params</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>n_cand</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>n_best</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>mutation_amp</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>start_params</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00327">327</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
<a id="ga33bbb9131ac7f94c3731dd4130321885" name="ga33bbb9131ac7f94c3731dd4130321885"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga33bbb9131ac7f94c3731dd4130321885">&#9670;&#160;</a></span>GenOptimizer_Step</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define GenOptimizer_Step</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>opt</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>params</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>LossFunc</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00328">328</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
<a id="ga83abbcabaff9111c03ae2475ee72ea3e" name="ga83abbcabaff9111c03ae2475ee72ea3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga83abbcabaff9111c03ae2475ee72ea3e">&#9670;&#160;</a></span>PARAM_SCALE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PARAM_SCALE</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>x</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>min_val</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>max_val</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(x)</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00329">329</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
<a id="gaa1d5510fe5f0bd989473f3ebe324bde3" name="gaa1d5510fe5f0bd989473f3ebe324bde3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa1d5510fe5f0bd989473f3ebe324bde3">&#9670;&#160;</a></span>PARAM_UNSCALE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PARAM_UNSCALE</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>val</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>min_val</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>max_val</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(val)</div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00330">330</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</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="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 group___g_e_n___o_p_t_i_m_i_z_e_r =
[
[ "GenOptimizer_t", "struct_gen_optimizer__t.html", null ]
];

View File

@ -1,4 +0,0 @@
<map id="Genetic optimizer" name="Genetic optimizer">
<area shape="rect" id="Node000001" title="Библиотека для эволюционного подбора параметров" alt="" coords="147,5,270,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html" title="Утилиты для тестирования программы" alt="" coords="5,5,99,32"/>
</map>

View File

@ -1 +0,0 @@
117f38e130c123102c33539947be2ce0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,284 +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: Libraries configs</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('group___l_i_b_s___c_o_n_f_i_g.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">Libraries configs <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a> &raquo; <a class="el" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html">Configs</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Подключение различных модулей библиотеки
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Libraries configs:</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="group___l_i_b_s___c_o_n_f_i_g.png" border="0" usemap="#agroup______l__i__b__s______c__o__n__f__i__g" loading="lazy" alt=""/></div>
<map name="agroup______l__i__b__s______c__o__n__f__i__g" id="agroup______l__i__b__s______c__o__n__f__i__g">
<area shape="rect" title="Подключение различных модулей библиотеки" alt="" coords="120,5,236,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html" title="Конфигурации для библиотек MyLibs." alt="" coords="5,5,72,32"/>
</map>
</div>
<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:ga9c853b02c22f26023c34d1d404b6d653" id="r_ga9c853b02c22f26023c34d1d404b6d653"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>()</td></tr>
<tr class="memdesc:ga9c853b02c22f26023c34d1d404b6d653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Локальное время <br /></td></tr>
<tr class="memitem:ga3cdc9ef47fd3ff080d38481295327692" id="r_ga3cdc9ef47fd3ff080d38481295327692"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga3cdc9ef47fd3ff080d38481295327692">INCLUDE_GEN_OPTIMIZER</a></td></tr>
<tr class="memdesc:ga3cdc9ef47fd3ff080d38481295327692"><td class="mdescLeft">&#160;</td><td class="mdescRight">Подключить библиотеку для оптимизации параметров <br /></td></tr>
<tr class="memitem:gaf4ddb2a71ec0d05c2480e197cd17c0be" id="r_gaf4ddb2a71ec0d05c2480e197cd17c0be"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaf4ddb2a71ec0d05c2480e197cd17c0be">INCLUDE_BIT_ACCESS_LIB</a></td></tr>
<tr class="memdesc:gaf4ddb2a71ec0d05c2480e197cd17c0be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Подключить библиотеку с typedef с битовыми полями <br /></td></tr>
<tr class="memitem:ga4403055986b70bb02b8d37073a122e32" id="r_ga4403055986b70bb02b8d37073a122e32"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga4403055986b70bb02b8d37073a122e32">INCLUDE_TRACKERS_LIB</a></td></tr>
<tr class="memdesc:ga4403055986b70bb02b8d37073a122e32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Подключить библиотеку с трекерами <br /></td></tr>
<tr class="memitem:ga0a3ca94b616997069dd53e2c6c2687d7" id="r_ga0a3ca94b616997069dd53e2c6c2687d7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga0a3ca94b616997069dd53e2c6c2687d7">INCLUDE_TRACE_LIB</a></td></tr>
<tr class="memdesc:ga0a3ca94b616997069dd53e2c6c2687d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Подключить библиотеку с трейсами <br /></td></tr>
<tr class="memitem:ga181a46326e46b60afb160190832c7281" id="r_ga181a46326e46b60afb160190832c7281"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga181a46326e46b60afb160190832c7281">INCLUDE_GENERAL_PERIPH_LIBS</a></td></tr>
<tr class="memdesc:ga181a46326e46b60afb160190832c7281"><td class="mdescLeft">&#160;</td><td class="mdescRight">Подключить библиотеку с периферией <br /></td></tr>
<tr class="memitem:ga57c369737d5c0cfdb7baeecba0a4b151" id="r_ga57c369737d5c0cfdb7baeecba0a4b151"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga57c369737d5c0cfdb7baeecba0a4b151">FREERTOS_DELAY</a></td></tr>
<tr class="memdesc:ga57c369737d5c0cfdb7baeecba0a4b151"><td class="mdescLeft">&#160;</td><td class="mdescRight">Использовать FreeRTOS задержку, вместо HAL. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<p>Подключение различных модулей библиотеки </p>
<a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
<a id="ga9c853b02c22f26023c34d1d404b6d653" name="ga9c853b02c22f26023c34d1d404b6d653"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9c853b02c22f26023c34d1d404b6d653">&#9670;&#160;</a></span>local_time</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define local_time</td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">uwTick</div>
</div><!-- fragment -->
<p>Локальное время </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00097">97</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga3cdc9ef47fd3ff080d38481295327692" name="ga3cdc9ef47fd3ff080d38481295327692"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3cdc9ef47fd3ff080d38481295327692">&#9670;&#160;</a></span>INCLUDE_GEN_OPTIMIZER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define INCLUDE_GEN_OPTIMIZER</td>
</tr>
</table>
</div><div class="memdoc">
<p>Подключить библиотеку для оптимизации параметров </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00099">99</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="gaf4ddb2a71ec0d05c2480e197cd17c0be" name="gaf4ddb2a71ec0d05c2480e197cd17c0be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf4ddb2a71ec0d05c2480e197cd17c0be">&#9670;&#160;</a></span>INCLUDE_BIT_ACCESS_LIB</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define INCLUDE_BIT_ACCESS_LIB</td>
</tr>
</table>
</div><div class="memdoc">
<p>Подключить библиотеку с typedef с битовыми полями </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00100">100</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga4403055986b70bb02b8d37073a122e32" name="ga4403055986b70bb02b8d37073a122e32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4403055986b70bb02b8d37073a122e32">&#9670;&#160;</a></span>INCLUDE_TRACKERS_LIB</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define INCLUDE_TRACKERS_LIB</td>
</tr>
</table>
</div><div class="memdoc">
<p>Подключить библиотеку с трекерами </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00101">101</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga0a3ca94b616997069dd53e2c6c2687d7" name="ga0a3ca94b616997069dd53e2c6c2687d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0a3ca94b616997069dd53e2c6c2687d7">&#9670;&#160;</a></span>INCLUDE_TRACE_LIB</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define INCLUDE_TRACE_LIB</td>
</tr>
</table>
</div><div class="memdoc">
<p>Подключить библиотеку с трейсами </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00102">102</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga181a46326e46b60afb160190832c7281" name="ga181a46326e46b60afb160190832c7281"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga181a46326e46b60afb160190832c7281">&#9670;&#160;</a></span>INCLUDE_GENERAL_PERIPH_LIBS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define INCLUDE_GENERAL_PERIPH_LIBS</td>
</tr>
</table>
</div><div class="memdoc">
<p>Подключить библиотеку с периферией </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00103">103</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</a>.</p>
</div>
</div>
<a id="ga57c369737d5c0cfdb7baeecba0a4b151" name="ga57c369737d5c0cfdb7baeecba0a4b151"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga57c369737d5c0cfdb7baeecba0a4b151">&#9670;&#160;</a></span>FREERTOS_DELAY</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FREERTOS_DELAY</td>
</tr>
</table>
</div><div class="memdoc">
<p>Использовать FreeRTOS задержку, вместо HAL. </p>
<p class="definition">Definition at line <a class="el" href="____mylibs__config_8h_source.html#l00104">104</a> of file <a class="el" href="____mylibs__config_8h_source.html">__mylibs_config.h</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="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 group___l_i_b_s___c_o_n_f_i_g =
[
[ "local_time", "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653", null ],
[ "INCLUDE_GEN_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692", null ],
[ "INCLUDE_BIT_ACCESS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be", null ],
[ "INCLUDE_TRACKERS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32", null ],
[ "INCLUDE_TRACE_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7", null ],
[ "INCLUDE_GENERAL_PERIPH_LIBS", "group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281", null ],
[ "FREERTOS_DELAY", "group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151", null ]
];

View File

@ -1,4 +0,0 @@
<map id="Libraries configs" name="Libraries configs">
<area shape="rect" id="Node000001" title="Подключение различных модулей библиотеки" alt="" coords="120,5,236,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___c_o_n_f_i_g.html" title="Конфигурации для библиотек MyLibs." alt="" coords="5,5,72,32"/>
</map>

View File

@ -1 +0,0 @@
808022049140e07e55939aab8e99f2c8

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,155 +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: My Libs</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('group___m_y_l_i_b_s___a_l_l.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">My Libs </div></div>
</div><!--header-->
<div class="contents">
<p>Все используемые MyLibs библиотеки
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for My Libs:</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="group___m_y_l_i_b_s___a_l_l.png" border="0" usemap="#agroup______m__y__l__i__b__s______a__l__l" loading="lazy" alt=""/></div>
<map name="agroup______m__y__l__i__b__s______a__l__l" id="agroup______m__y__l__i__b__s______a__l__l">
<area shape="rect" title="Все используемые MyLibs библиотеки" alt="" coords="5,56,73,83"/>
<area shape="rect" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html" title="Конфигурации для библиотек MyLibs." alt="" coords="138,5,204,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html" title="Утилиты для тестирования программы" alt="" coords="124,56,218,83"/>
<area shape="rect" href="group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="121,107,221,133"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-groups" class="groupheader"><a id="groups" name="groups"></a>
Topics</h2></td></tr>
<tr class="memitem:MYLIBS_5FTOOLS" id="r_MYLIBS_5FTOOLS"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a></td></tr>
<tr class="memdesc:group___m_y_l_i_b_s___t_o_o_l_s"><td class="mdescLeft">&#160;</td><td class="mdescRight">Общие макросы и typedef'ы, используемые по всему проекту <br /></td></tr>
<tr class="memitem:MYLIBS_5FCONFIG" id="r_MYLIBS_5FCONFIG"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html">Configs</a></td></tr>
<tr class="memdesc:group___m_y_l_i_b_s___c_o_n_f_i_g"><td class="mdescLeft">&#160;</td><td class="mdescRight">Конфигурации для библиотек MyLibs. <br /></td></tr>
<tr class="memitem:MYLIBS_5FDEBUG_5FTOOLS" id="r_MYLIBS_5FDEBUG_5FTOOLS"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a></td></tr>
<tr class="memdesc:group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s"><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>
<p>Все используемые MyLibs библиотеки </p>
<p>Для подключения библиотеки необходимо:</p><ul>
<li>Сконфигурировать mylibs_config.h:<ul>
<li>Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx_hal.h)</li>
<li>Подключить другие заголовочные файлы которые общие для всего проекта и должны быть видны</li>
<li>Подключить mylibs_include.h туда, где необходим доступ к библиотекам. </li>
</ul>
</li>
</ul>
</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="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 group___m_y_l_i_b_s___a_l_l =
[
[ "General Tools", "group___m_y_l_i_b_s___t_o_o_l_s.html", "group___m_y_l_i_b_s___t_o_o_l_s" ],
[ "Configs", "group___m_y_l_i_b_s___c_o_n_f_i_g.html", "group___m_y_l_i_b_s___c_o_n_f_i_g" ],
[ "Debug Tools", "group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html", "group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s" ]
];

View File

@ -1,6 +0,0 @@
<map id="My Libs" name="My Libs">
<area shape="rect" id="Node000001" title="Все используемые MyLibs библиотеки" alt="" coords="5,56,73,83"/>
<area shape="rect" id="Node000003" href="$group___m_y_l_i_b_s___c_o_n_f_i_g.html" title="Конфигурации для библиотек MyLibs." alt="" coords="138,5,204,32"/>
<area shape="rect" id="Node000004" href="$group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html" title="Утилиты для тестирования программы" alt="" coords="124,56,218,83"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___t_o_o_l_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="121,107,221,133"/>
</map>

View File

@ -1 +0,0 @@
d31053abadc8e893fbaf954352b04bd8

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1,148 +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: Configs</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('group___m_y_l_i_b_s___c_o_n_f_i_g.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">Configs <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Конфигурации для библиотек MyLibs.
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Configs:</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="group___m_y_l_i_b_s___c_o_n_f_i_g.png" border="0" usemap="#agroup______m__y__l__i__b__s______c__o__n__f__i__g" loading="lazy" alt=""/></div>
<map name="agroup______m__y__l__i__b__s______c__o__n__f__i__g" id="agroup______m__y__l__i__b__s______c__o__n__f__i__g">
<area shape="rect" href="group___g_e_n___c_o_n_f_i_g.html" title="Конфигурация генетического алгоритма обучения" alt="" coords="237,5,349,32"/>
<area shape="rect" href="group___l_i_b_s___c_o_n_f_i_g.html" title="Подключение различных модулей библиотеки" alt="" coords="235,56,351,83"/>
<area shape="rect" href="group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,56,73,83"/>
<area shape="rect" title="Конфигурации для библиотек MyLibs." alt="" coords="121,56,187,83"/>
<area shape="rect" href="group___t_r_a_c_e___c_o_n_f_i_g.html" title="Конфигурация трекеров и трассировки" alt="" coords="243,107,343,133"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-groups" class="groupheader"><a id="groups" name="groups"></a>
Topics</h2></td></tr>
<tr class="memitem:TRACE_5FCONFIG" id="r_TRACE_5FCONFIG"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html">Trace configs</a></td></tr>
<tr class="memdesc:group___t_r_a_c_e___c_o_n_f_i_g"><td class="mdescLeft">&#160;</td><td class="mdescRight">Конфигурация трекеров и трассировки <br /></td></tr>
<tr class="memitem:GEN_5FCONFIG" id="r_GEN_5FCONFIG"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_e_n___c_o_n_f_i_g.html">Genetic configs</a></td></tr>
<tr class="memdesc:group___g_e_n___c_o_n_f_i_g"><td class="mdescLeft">&#160;</td><td class="mdescRight">Конфигурация генетического алгоритма обучения <br /></td></tr>
<tr class="memitem:LIBS_5FCONFIG" id="r_LIBS_5FCONFIG"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html">Libraries configs</a></td></tr>
<tr class="memdesc:group___l_i_b_s___c_o_n_f_i_g"><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>
<p>Конфигурации для библиотек MyLibs. </p>
</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="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 group___m_y_l_i_b_s___c_o_n_f_i_g =
[
[ "Trace configs", "group___t_r_a_c_e___c_o_n_f_i_g.html", "group___t_r_a_c_e___c_o_n_f_i_g" ],
[ "Genetic configs", "group___g_e_n___c_o_n_f_i_g.html", "group___g_e_n___c_o_n_f_i_g" ],
[ "Libraries configs", "group___l_i_b_s___c_o_n_f_i_g.html", "group___l_i_b_s___c_o_n_f_i_g" ]
];

View File

@ -1,7 +0,0 @@
<map id="Configs" name="Configs">
<area shape="rect" id="Node000004" href="$group___g_e_n___c_o_n_f_i_g.html" title="Конфигурация генетического алгоритма обучения" alt="" coords="237,5,349,32"/>
<area shape="rect" id="Node000005" href="$group___l_i_b_s___c_o_n_f_i_g.html" title="Подключение различных модулей библиотеки" alt="" coords="235,56,351,83"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,56,73,83"/>
<area shape="rect" id="Node000001" title="Конфигурации для библиотек MyLibs." alt="" coords="121,56,187,83"/>
<area shape="rect" id="Node000003" href="$group___t_r_a_c_e___c_o_n_f_i_g.html" title="Конфигурация трекеров и трассировки" alt="" coords="243,107,343,133"/>
</map>

View File

@ -1 +0,0 @@
d391fab11da478dd495954b9be42bbb6

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -1,151 +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: Debug Tools</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('group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.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">Debug Tools <div class="ingroups"><a class="el" href="group___m_y_l_i_b_s___a_l_l.html">My Libs</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Утилиты для тестирования программы
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Debug Tools:</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="group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.png" border="0" usemap="#agroup______m__y__l__i__b__s______d__e__b__u__g______t__o__o__l__s" loading="lazy" alt=""/></div>
<map name="agroup______m__y__l__i__b__s______d__e__b__u__g______t__o__o__l__s" id="agroup______m__y__l__i__b__s______d__e__b__u__g______t__o__o__l__s">
<area shape="rect" href="group___b_e_n_c_h___t_i_m_e.html" title="Библиотека для измерения времени/тиков между событиями" alt="" coords="262,5,395,32"/>
<area shape="rect" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html" title="Библиотека для эволюционного подбора параметров" alt="" coords="267,56,390,83"/>
<area shape="rect" href="group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,81,73,108"/>
<area shape="rect" title="Утилиты для тестирования программы" alt="" coords="121,81,214,108"/>
<area shape="rect" href="group___t_r_a_c_e.html" title="Дефайны для работы с трассировкой" alt="" coords="278,107,379,133"/>
<area shape="rect" href="group___t_r_a_c_k_e_r_s.html" title="Дефайны для работы с трекерами" alt="" coords="270,157,388,184"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-groups" class="groupheader"><a id="groups" name="groups"></a>
Topics</h2></td></tr>
<tr class="memitem:BENCH_5FTIME" id="r_BENCH_5FTIME"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_e_n_c_h___t_i_m_e.html">Time measurement</a></td></tr>
<tr class="memdesc:group___b_e_n_c_h___t_i_m_e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Библиотека для измерения времени/тиков между событиями <br /></td></tr>
<tr class="memitem:GEN_5FOPTIMIZER" id="r_GEN_5FOPTIMIZER"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html">Genetic optimizer</a></td></tr>
<tr class="memdesc:group___g_e_n___o_p_t_i_m_i_z_e_r"><td class="mdescLeft">&#160;</td><td class="mdescRight">Библиотека для эволюционного подбора параметров <br /></td></tr>
<tr class="memitem:TRACE" id="r_TRACE"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_r_a_c_e.html">Trace defines</a></td></tr>
<tr class="memdesc:group___t_r_a_c_e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Дефайны для работы с трассировкой <br /></td></tr>
<tr class="memitem:TRACKERS" id="r_TRACKERS"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_r_a_c_k_e_r_s.html">Trackers defines</a></td></tr>
<tr class="memdesc:group___t_r_a_c_k_e_r_s"><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>
<p>Утилиты для тестирования программы </p>
</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="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