Рефакторинг Doxygen

This commit is contained in:
Razvalyaev 2025-11-07 20:26:38 +03:00
parent 0cc8f417ee
commit 3718c1eb77
363 changed files with 16172 additions and 6104 deletions

View File

@ -991,9 +991,10 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = E:\.WORK\STM32\STM32_ExtendedLibs\MyLibs \
E:\.WORK\STM32\STM32_ExtendedLibs\STM32_General \
E:\.WORK\STM32\STM32_ExtendedLibs\mainpage.h
INPUT = ../MyLibs/Inc \
../MyLibs/Src \
../RTT \
../
# This tag can be used to specify the character encoding of the source files
# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses
@ -1088,7 +1089,7 @@ FILE_PATTERNS = *.c \
# be searched for input files as well.
# The default value is: NO.
RECURSIVE = YES
RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
@ -1208,7 +1209,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the Doxygen output.
USE_MDFILE_AS_MAINPAGE =
USE_MDFILE_AS_MAINPAGE = ..\README.md
# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub-
# directories of the project's root, is used as the documentation for that sub-
@ -2500,7 +2501,7 @@ MACRO_EXPANSION = YES
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = NO
EXPAND_ONLY_PREDEF = YES
# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.

File diff suppressed because it is too large Load Diff

View File

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

@ -0,0 +1,543 @@
<!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_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">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"><a href="dir_7de012165f681bf20d3995ae88f6551e.html">RTT</a></li><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

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

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

@ -106,18 +106,16 @@ $(function(){initNavTree('annotated.html','',''); });
<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_bench_time_channel__t.html" target="_self">BenchTimeChannel_t</a></td><td class="desc">Структура канала измерения </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_bench_time_stats__t.html" target="_self">BenchTimeStats_t</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_gen_optimizer__t.html" target="_self">GenOptimizer_t</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_g_p_i_o___l_e_d_type_def.html" target="_self">GPIO_LEDTypeDef</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_g_p_i_o___switch_type_def.html" target="_self">GPIO_SwitchTypeDef</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="struct_h_f___stack_frame__t.html" target="_self">HF_StackFrame_t</a></td><td class="desc">Контекст стек-фрейма процессора при HardFault </td></tr>
<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_r_t_t___flash_header__t.html" target="_self">RTT_FlashHeader_t</a></td><td class="desc">Структура RTT, которая будет положена в Flash </td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_s_p_i___settings_type_def.html" target="_self">SPI_SettingsTypeDef</a></td><td class="desc">Структура настроек SPI </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="struct_t_i_m___encoder_type_def.html" target="_self">TIM_EncoderTypeDef</a></td><td class="desc">Структура инициализации енкодера </td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_t_i_m___settings_type_def.html" target="_self">TIM_SettingsTypeDef</a></td><td class="desc">Структура инициализации таймера </td></tr>
<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_u_a_r_t___settings_type_def.html" target="_self">UART_SettingsTypeDef</a></td><td class="desc">Структура настроек UART </td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint16___bit_type_def.html" target="_self">uint16_BitTypeDef</a></td><td class="desc"></td></tr>
<tr id="row_13_" 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_14_" 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_15_" 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>
<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_h_f___stack_frame__t.html" target="_self">HF_StackFrame_t</a></td><td class="desc">Контекст стек-фрейма процессора при HardFault </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_r_t_t___flash_header__t.html" target="_self">RTT_FlashHeader_t</a></td><td class="desc">Структура RTT, которая будет положена в Flash </td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_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_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_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_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_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_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="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_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint16___bit_type_def.html" target="_self">uint16_BitTypeDef</a></td><td class="desc"></td></tr>
<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint32___bit_type_def.html" target="_self">uint32_BitTypeDef</a></td><td class="desc"></td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionuint64___bit_type_def.html" target="_self">uint64_BitTypeDef</a></td><td class="desc"></td></tr>
<tr id="row_13_" 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 -->

View File

@ -4,14 +4,12 @@ var annotated_dup =
[ "BenchTimeChannel_t", "struct_bench_time_channel__t.html", "struct_bench_time_channel__t" ],
[ "BenchTimeStats_t", "struct_bench_time_stats__t.html", "struct_bench_time_stats__t" ],
[ "GenOptimizer_t", "struct_gen_optimizer__t.html", "struct_gen_optimizer__t" ],
[ "GPIO_LEDTypeDef", "struct_g_p_i_o___l_e_d_type_def.html", "struct_g_p_i_o___l_e_d_type_def" ],
[ "GPIO_SwitchTypeDef", "struct_g_p_i_o___switch_type_def.html", "struct_g_p_i_o___switch_type_def" ],
[ "HF_StackFrame_t", "struct_h_f___stack_frame__t.html", "struct_h_f___stack_frame__t" ],
[ "RTT_FlashHeader_t", "struct_r_t_t___flash_header__t.html", "struct_r_t_t___flash_header__t" ],
[ "SPI_SettingsTypeDef", "struct_s_p_i___settings_type_def.html", "struct_s_p_i___settings_type_def" ],
[ "TIM_EncoderTypeDef", "struct_t_i_m___encoder_type_def.html", "struct_t_i_m___encoder_type_def" ],
[ "TIM_SettingsTypeDef", "struct_t_i_m___settings_type_def.html", "struct_t_i_m___settings_type_def" ],
[ "UART_SettingsTypeDef", "struct_u_a_r_t___settings_type_def.html", "struct_u_a_r_t___settings_type_def" ],
[ "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 ],

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h File Reference</title>
<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>
@ -109,9 +109,9 @@ $(function(){initNavTree('bench__time_8h.html','',''); });
<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_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_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_m32___extended_libs_2_my_libs_2_inc_2bench__time_8h">
<area shape="rect" title="Заголовочный файл для измерения времени между событиями" alt="" coords="29,5,206,64"/>
<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="25,5,210,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="13,112,115,139"/>
<area shape="poly" title=" " alt="" coords="102,66,82,100,77,97,98,63"/>
<area shape="rect" title=" " alt="" coords="140,112,204,139"/>

View File

@ -1,5 +1,5 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для измерения времени между событиями" alt="" coords="29,5,206,64"/>
<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="25,5,210,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="13,112,115,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="102,66,82,100,77,97,98,63"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="140,112,204,139"/>

View File

@ -1 +1 @@
e2f287c82f2aba927295813f84ac4e31
fbf298ac1272e30c44aac7b864c62a23

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h Source File</title>
<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>
@ -106,307 +106,306 @@ $(function(){initNavTree('bench__time_8h_source.html','',''); });
<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">* @ingroup MYLIBS_DEFINES</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @brief Библиотека для измерения времени/тиков между событиями</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* @details</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">Поддерживает:</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">- Многоканальные измерения (несколько независимых таймеров)</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">- Платформонезависимый интерфейс</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">- Измерение в тиках или временных единицах</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">- Статистику измерений (мин/макс/среднее)</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">- Настраиваемый размер тиков для каждого канала</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"></span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">Параметры для конфигурации:</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">- @ref BENCH_TIME_ENABLE - Включить бенч времени</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">- @ref BENCH_TIME_MAX_CHANNELS - Максимальное количество каналов измерения (по умолчанию 8)</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"></span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">@par Пример использования:</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">@code</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">#include &quot;bench_time.h&quot;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"></span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// Инициализация</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">BenchTime_Init();</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"></span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// Измерение с SysTick</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF);</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">some_function();</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">uint32_t time = BenchTime_End(0, HAL_GetTick);</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">// Измерение с TIM2 (16-бит)</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">BenchTime_Start(1, TIM2-&gt;CNT, 0xFFFF);</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">fast_function(); </span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">uint32_t time2 = BenchTime_End(1, TIM2-&gt;CNT);</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment"></span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">// Измерение с DWT цикловым счетчиком</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">BenchTime_Start(2, DWT-&gt;CYCCNT, 0xFFFFFFFF);</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">critical_function();</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">uint32_t cycles = BenchTime_End(2, DWT-&gt;CYCCNT);</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">BenchTime_Start(0, HAL_GetTick, 1000); // общее время</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">BenchTime_Start(1, TIM3-&gt;CNT, 500); // часть 1</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">// ... код 1</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">uint32_t part1 = BenchTime_End(1, TIM3-&gt;CNT);</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">BenchTime_Start(2, TIM4-&gt;CNT, 200); // часть 2 </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">// ... код 2</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">uint32_t part2 = BenchTime_End(2, TIM4-&gt;CNT);</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">uint32_t total = BenchTime_End(0, HAL_GetTick); // общее время</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">uint32_t min_time = BenchTime_GetMin(0);</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">uint32_t max_time = BenchTime_GetMax(0);</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">uint32_t avg_time = BenchTime_GetAverage(0);</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">uint32_t count = BenchTime_GetCount(0);</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">@endcode</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="preprocessor">#ifndef __BENCH_TIME_H_</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#define __BENCH_TIME_H_</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">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="preprocessor">#ifdef BENCH_TIME_ENABLE</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="comment">// Конфигурация библиотеки</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">#ifndef BENCH_TIME_MAX_CHANNELS</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#define BENCH_TIME_MAX_CHANNELS 8 </span><span class="comment">///&lt; Максимальное количество каналов измерения</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="preprocessor">#endif</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><span class="comment"> * @brief Структура статистики измерений</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00081" data-start="{" data-end="};">
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html"> 81</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8"> 82</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">min_ticks</a>; <span class="comment">///&lt; Минимальное время в тиках</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c"> 83</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a>; <span class="comment">///&lt; Максимальное время в тиках </span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec"> 84</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a>; <span class="comment">///&lt; Суммарное время в тиках</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71"> 85</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a>; <span class="comment">///&lt; Количество измерений</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0"> 86</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">last_ticks</a>; <span class="comment">///&lt; Последнее измеренное время</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span>} <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>;</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="foldopen" id="foldopen00080" data-start="{" data-end="};">
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html"> 80</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8"> 81</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">min_ticks</a>; <span class="comment">///&lt; Минимальное время в тиках</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c"> 82</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a>; <span class="comment">///&lt; Максимальное время в тиках </span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec"> 83</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a>; <span class="comment">///&lt; Суммарное время в тиках</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71"> 84</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a>; <span class="comment">///&lt; Количество измерений</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0"> 85</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">last_ticks</a>; <span class="comment">///&lt; Последнее измеренное время</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>} <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>;</div>
</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">/**</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> * @brief Структура канала измерения</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00092" data-start="{" data-end="};">
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html"> 92</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928"> 93</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928">start_tick</a>; <span class="comment">///&lt; Время старта в тиках</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd"> 94</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd">tick_period</a>; <span class="comment">///&lt; Период тиков для переполнения</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9"> 95</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9">is_running</a>; <span class="comment">///&lt; Флаг активного измерения</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c"> 96</a></span> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a> <a class="code hl_variable" href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c">stats</a>; <span class="comment">///&lt; Статистика измерений</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>} <a class="code hl_struct" href="struct_bench_time_channel__t.html">BenchTimeChannel_t</a>;</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="foldopen" id="foldopen00091" data-start="{" data-end="};">
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html"> 91</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928"> 92</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928">start_tick</a>; <span class="comment">///&lt; Время старта в тиках</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd"> 93</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd">tick_period</a>; <span class="comment">///&lt; Период тиков для переполнения</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9"> 94</a></span> uint32_t <a class="code hl_variable" href="struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9">is_running</a>; <span class="comment">///&lt; Флаг активного измерения</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c"> 95</a></span> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a> <a class="code hl_variable" href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c">stats</a>; <span class="comment">///&lt; Статистика измерений</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span>} <a class="code hl_struct" href="struct_bench_time_channel__t.html">BenchTimeChannel_t</a>;</div>
</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"></span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">/**</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * @brief Основная структура менеджера измерений</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00102" data-start="{" data-end="};">
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="struct_bench_time__t.html"> 102</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6"> 103</a></span> <a class="code hl_struct" href="struct_bench_time_channel__t.html">BenchTimeChannel_t</a> <a class="code hl_variable" href="struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6">channels</a>[<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="l00104" name="l00104"></a><span class="lineno"> 104</span>} <a class="code hl_struct" href="struct_bench_time__t.html">BenchTime_t</a>;</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="foldopen" id="foldopen00101" data-start="{" data-end="};">
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="struct_bench_time__t.html"> 101</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34"> 102</a></span> <a class="code hl_struct" href="struct_bench_time_channel__t.html">BenchTimeChannel_t</a> <a class="code hl_variable" href="struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34">channels</a>[<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>} <a class="code hl_struct" href="struct_bench_time__t.html">BenchTime_t</a>;</div>
</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"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d"> 106</a></span><span class="keyword">static</span> <a class="code hl_struct" href="struct_bench_time__t.html">BenchTime_t</a> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a> = {0}; <span class="comment">///&lt; Внутренний экземпляр</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"> * @brief Инициализация системы измерения времени</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00111" data-start="{" data-end="}">
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054"> 111</a></span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054">BenchTime_Init</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</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="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].start_tick = 0;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].tick_period = 0xFFFFFFFF;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].is_running = 0;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.min_ticks = 0xFFFFFFFF;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.max_ticks = 0;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.total_ticks = 0;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.count = 0;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.last_ticks = 0;</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>}</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d"> 105</a></span><span class="keyword">static</span> <a class="code hl_struct" href="struct_bench_time__t.html">BenchTime_t</a> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a> = {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="foldopen" id="foldopen00110" data-start="{" data-end="}">
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054"> 110</a></span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054">BenchTime_Init</a>(<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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].start_tick = 0;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].tick_period = 0xFFFFFFFF;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].is_running = 0;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.min_ticks = 0xFFFFFFFF;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.max_ticks = 0;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.total_ticks = 0;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[i].stats.count = 0;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.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>
<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">/**</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> * @brief Начало измерения на указанном канале</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"> * @param ticks Источник тиков (например: HAL_GetTick(), TIM2-&gt;CNT, DWT-&gt;CYCCNT)</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> * @param tick_period Период тиков для переполнения</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"> * @return 1 - успех, 0 - ошибка</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00131" data-start="{" data-end="}">
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349"> 131</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349">BenchTime_Start</a>(uint8_t channel, uint32_t ticks, uint32_t tick_period) {</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</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="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].is_running) <span class="keywordflow">return</span> 0;</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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].start_tick = ticks;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].tick_period = tick_period;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].is_running = 1;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</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="foldopen" id="foldopen00130" data-start="{" data-end="}">
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349"> 130</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349">BenchTime_Start</a>(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> (<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].start_tick = ticks;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].tick_period = tick_period;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.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>
<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">/**</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> * @brief Окончание измерения на указанном канале</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> * @param ticks Источник тиков (должен быть тот же что в Start)</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> * @return Измеренное время в тиках, 0 - в случае ошибки</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00147" data-start="{" data-end="}">
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439"> 147</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439">BenchTime_End</a>(uint8_t channel, uint32_t ticks) {</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</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="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].is_running) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> uint32_t end_tick = ticks;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> uint32_t start_tick = <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].start_tick;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> uint32_t tick_period = <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].tick_period;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> uint32_t elapsed_ticks;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">if</span> (end_tick &gt;= start_tick) {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> elapsed_ticks = end_tick - start_tick;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> elapsed_ticks = (tick_period - start_tick) + end_tick + 1;</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> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">if</span> (elapsed_ticks &gt; tick_period) {</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> elapsed_ticks = tick_period;</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> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].is_running = 0;</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="comment">// Обновление статистики</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>* stats = &amp;<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">last_ticks</a> = elapsed_ticks;</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> (elapsed_ticks &lt; stats-&gt;min_ticks) {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">min_ticks</a> = elapsed_ticks;</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> <span class="keywordflow">if</span> (elapsed_ticks &gt; stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a>) {</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a> = elapsed_ticks;</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> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a> += elapsed_ticks;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a>++;</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> <span class="keywordflow">return</span> elapsed_ticks;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</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="foldopen" id="foldopen00146" data-start="{" data-end="}">
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439"> 146</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439">BenchTime_End</a>(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> (!<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.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 = <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].start_tick;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> uint32_t tick_period = <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.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> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>* stats = &amp;<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">last_ticks</a> = 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;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">min_ticks</a> = 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;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a>) {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a> = 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;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a> += elapsed_ticks;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a>++;</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>
<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">/**</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="comment"> * @brief Получение минимального времени измерения</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00189" data-start="{" data-end="}">
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705"> 189</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705">BenchTime_GetMin</a>(uint8_t channel) {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</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="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.min_ticks;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</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="foldopen" id="foldopen00188" data-start="{" data-end="}">
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705"> 188</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705">BenchTime_GetMin</a>(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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.min_ticks;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span>}</div>
</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">/**</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="comment"> * @brief Получение максимального времени измерения</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00197" data-start="{" data-end="}">
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e"> 197</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e">BenchTime_GetMax</a>(uint8_t channel) {</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</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="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.max_ticks;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</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="foldopen" id="foldopen00196" data-start="{" data-end="}">
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e"> 196</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e">BenchTime_GetMax</a>(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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.max_ticks;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span>}</div>
</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">/**</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="comment"> * @brief Получение среднего времени измерения</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00205" data-start="{" data-end="}">
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8"> 205</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8">BenchTime_GetAverage</a>(uint8_t channel) {</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</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="l00207" name="l00207"></a><span class="lineno"> 207</span> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>* stats = &amp;<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">if</span> (stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a> == 0) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">return</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a> / stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a>;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</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="foldopen" id="foldopen00204" data-start="{" data-end="}">
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8"> 204</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8">BenchTime_GetAverage</a>(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> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>* stats = &amp;<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.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;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a> == 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;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a> / stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a>;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span>}</div>
</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">/**</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> * @brief Получение количества измерений</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00215" data-start="{" data-end="}">
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a"> 215</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a">BenchTime_GetCount</a>(uint8_t channel) {</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</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="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.count;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</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="foldopen" id="foldopen00214" data-start="{" data-end="}">
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a"> 214</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a">BenchTime_GetCount</a>(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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.count;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span>}</div>
</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="comment"> * @brief Получение последнего измеренного времени</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00223" data-start="{" data-end="}">
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed"> 223</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed">BenchTime_GetLast</a>(uint8_t channel) {</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</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="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.last_ticks;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</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="foldopen" id="foldopen00222" data-start="{" data-end="}">
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed"> 222</a></span><span class="keyword">static</span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed">BenchTime_GetLast</a>(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> <a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats.last_ticks;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span>}</div>
</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">/**</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment"> * @brief Сброс статистики для канала</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00231" data-start="{" data-end="}">
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35"> 231</a></span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35">BenchTime_ResetStats</a>(uint8_t channel) {</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</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="l00233" name="l00233"></a><span class="lineno"> 233</span> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>* stats = &amp;<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">min_ticks</a> = 0xFFFFFFFF;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a> = 0;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a> = 0;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a> = 0;</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">last_ticks</a> = 0;</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</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="foldopen" id="foldopen00230" data-start="{" data-end="}">
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35"> 230</a></span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35">BenchTime_ResetStats</a>(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> <a class="code hl_struct" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a>* stats = &amp;<a class="code hl_variable" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a>.channels[channel].stats;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">min_ticks</a> = 0xFFFFFFFF;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">max_ticks</a> = 0;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">total_ticks</a> = 0;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">count</a> = 0;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> stats-&gt;<a class="code hl_variable" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">last_ticks</a> = 0;</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span>}</div>
</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="preprocessor">#else </span><span class="comment">//BENCH_TIME_ENABLE</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="preprocessor">#define BenchTime_Init()</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="preprocessor">#define BenchTime_Start(channel, ticks, tick_period) 0</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="preprocessor">#define BenchTime_End(channel, ticks) 0</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="preprocessor">#define BenchTime_GetMin(channel) 0</span></div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="preprocessor">#define BenchTime_GetMax(channel) 0</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="preprocessor">#define BenchTime_GetAverage(channel) 0</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="preprocessor">#define BenchTime_GetCount(channel) 0</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="preprocessor">#define BenchTime_GetLast(channel) 0</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="preprocessor">#define BenchTime_ResetStats(channel)</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="preprocessor">#endif </span><span class="comment">//BENCH_TIME_ENABLE</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">#endif </span><span class="comment">// __BENCH_TIME_H_</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">/** BENCH_TIME</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="comment"> */</span></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga07e27d7b169c9fa1abd57281bb4e374e"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e">BenchTime_GetMax</a></div><div class="ttdeci">static uint32_t BenchTime_GetMax(uint8_t channel)</div><div class="ttdoc">Получение максимального времени измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00197">bench_time.h:197</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga24e2450d5ea921074ec5d7a1e4d56ba8"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8">BenchTime_GetAverage</a></div><div class="ttdeci">static uint32_t BenchTime_GetAverage(uint8_t channel)</div><div class="ttdoc">Получение среднего времени измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00205">bench_time.h:205</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga273d45255fe4403fc25648d60cca7705"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705">BenchTime_GetMin</a></div><div class="ttdeci">static uint32_t BenchTime_GetMin(uint8_t channel)</div><div class="ttdoc">Получение минимального времени измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00189">bench_time.h:189</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga31a6b2b181b92bcb15f46758f5d57f35"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35">BenchTime_ResetStats</a></div><div class="ttdeci">static void BenchTime_ResetStats(uint8_t channel)</div><div class="ttdoc">Сброс статистики для канала</div><div class="ttdef"><b>Definition</b> <a href="#l00231">bench_time.h:231</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga47a69851a2089140eac00cde18a12439"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439">BenchTime_End</a></div><div class="ttdeci">static uint32_t BenchTime_End(uint8_t channel, uint32_t ticks)</div><div class="ttdoc">Окончание измерения на указанном канале</div><div class="ttdef"><b>Definition</b> <a href="#l00147">bench_time.h:147</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga8e53ef7f7df233bd4e737a87bb203d9d"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a></div><div class="ttdeci">static BenchTime_t hbt</div><div class="ttdoc">Внутренний экземпляр</div><div class="ttdef"><b>Definition</b> <a href="#l00106">bench_time.h:106</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gabb7a665a9603ea2e4dbc4432e8cb6054"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054">BenchTime_Init</a></div><div class="ttdeci">static void BenchTime_Init(void)</div><div class="ttdoc">Инициализация системы измерения времени</div><div class="ttdef"><b>Definition</b> <a href="#l00111">bench_time.h:111</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gabd1301ca79a30c782970f89fd147df3a"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a">BenchTime_GetCount</a></div><div class="ttdeci">static uint32_t BenchTime_GetCount(uint8_t channel)</div><div class="ttdoc">Получение количества измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00215">bench_time.h:215</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gac65338df38129964ce3e9d9cb2fcb349"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349">BenchTime_Start</a></div><div class="ttdeci">static uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period)</div><div class="ttdoc">Начало измерения на указанном канале</div><div class="ttdef"><b>Definition</b> <a href="#l00131">bench_time.h:131</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gacf3a738d6423d71b238058a63558a4ed"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed">BenchTime_GetLast</a></div><div class="ttdeci">static uint32_t BenchTime_GetLast(uint8_t channel)</div><div class="ttdoc">Получение последнего измеренного времени</div><div class="ttdef"><b>Definition</b> <a href="#l00223">bench_time.h:223</a></div></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___b_e_n_c_h___t_i_m_e_html_ga07e27d7b169c9fa1abd57281bb4e374e"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e">BenchTime_GetMax</a></div><div class="ttdeci">static uint32_t BenchTime_GetMax(uint8_t channel)</div><div class="ttdoc">Получение максимального времени измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00196">bench_time.h:196</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga24e2450d5ea921074ec5d7a1e4d56ba8"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8">BenchTime_GetAverage</a></div><div class="ttdeci">static uint32_t BenchTime_GetAverage(uint8_t channel)</div><div class="ttdoc">Получение среднего времени измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00204">bench_time.h:204</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga273d45255fe4403fc25648d60cca7705"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705">BenchTime_GetMin</a></div><div class="ttdeci">static uint32_t BenchTime_GetMin(uint8_t channel)</div><div class="ttdoc">Получение минимального времени измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00188">bench_time.h:188</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga31a6b2b181b92bcb15f46758f5d57f35"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35">BenchTime_ResetStats</a></div><div class="ttdeci">static void BenchTime_ResetStats(uint8_t channel)</div><div class="ttdoc">Сброс статистики для канала</div><div class="ttdef"><b>Definition</b> <a href="#l00230">bench_time.h:230</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga47a69851a2089140eac00cde18a12439"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439">BenchTime_End</a></div><div class="ttdeci">static uint32_t BenchTime_End(uint8_t channel, uint32_t ticks)</div><div class="ttdoc">Окончание измерения на указанном канале</div><div class="ttdef"><b>Definition</b> <a href="#l00146">bench_time.h:146</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_ga8e53ef7f7df233bd4e737a87bb203d9d"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">hbt</a></div><div class="ttdeci">static BenchTime_t hbt</div><div class="ttdoc">Внутренний экземпляр</div><div class="ttdef"><b>Definition</b> <a href="#l00105">bench_time.h:105</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gabb7a665a9603ea2e4dbc4432e8cb6054"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054">BenchTime_Init</a></div><div class="ttdeci">static void BenchTime_Init(void)</div><div class="ttdoc">Инициализация системы измерения времени</div><div class="ttdef"><b>Definition</b> <a href="#l00110">bench_time.h:110</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gabd1301ca79a30c782970f89fd147df3a"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a">BenchTime_GetCount</a></div><div class="ttdeci">static uint32_t BenchTime_GetCount(uint8_t channel)</div><div class="ttdoc">Получение количества измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00214">bench_time.h:214</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gac65338df38129964ce3e9d9cb2fcb349"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349">BenchTime_Start</a></div><div class="ttdeci">static uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period)</div><div class="ttdoc">Начало измерения на указанном канале</div><div class="ttdef"><b>Definition</b> <a href="#l00130">bench_time.h:130</a></div></div>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gacf3a738d6423d71b238058a63558a4ed"><div class="ttname"><a href="group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed">BenchTime_GetLast</a></div><div class="ttdeci">static uint32_t BenchTime_GetLast(uint8_t channel)</div><div class="ttdoc">Получение последнего измеренного времени</div><div class="ttdef"><b>Definition</b> <a href="#l00222">bench_time.h:222</a></div></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 class="ttc" id="astruct_bench_time__t_html"><div class="ttname"><a href="struct_bench_time__t.html">BenchTime_t</a></div><div class="ttdoc">Основная структура менеджера измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00102">bench_time.h:102</a></div></div>
<div class="ttc" id="astruct_bench_time__t_html_a9ae6d45c610be9d4b7628a614ccb06d6"><div class="ttname"><a href="struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6">BenchTime_t::channels</a></div><div class="ttdeci">BenchTimeChannel_t channels[16]</div><div class="ttdoc">Каналы измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00103">bench_time.h:103</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html"><div class="ttname"><a href="struct_bench_time_channel__t.html">BenchTimeChannel_t</a></div><div class="ttdoc">Структура канала измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00092">bench_time.h:92</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a095d93e0228641f58b8661e263bc1bcd"><div class="ttname"><a href="struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd">BenchTimeChannel_t::tick_period</a></div><div class="ttdeci">uint32_t tick_period</div><div class="ttdoc">Период тиков для переполнения</div><div class="ttdef"><b>Definition</b> <a href="#l00094">bench_time.h:94</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a0f80bb194231df7921712d20bac603c9"><div class="ttname"><a href="struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9">BenchTimeChannel_t::is_running</a></div><div class="ttdeci">uint32_t is_running</div><div class="ttdoc">Флаг активного измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00095">bench_time.h:95</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a22a3913e7925aa89cc12ec1d24a6c16c"><div class="ttname"><a href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c">BenchTimeChannel_t::stats</a></div><div class="ttdeci">BenchTimeStats_t stats</div><div class="ttdoc">Статистика измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00096">bench_time.h:96</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a8140fe9e3d323404651f0cfeeae53928"><div class="ttname"><a href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928">BenchTimeChannel_t::start_tick</a></div><div class="ttdeci">uint32_t start_tick</div><div class="ttdoc">Время старта в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00093">bench_time.h:93</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html"><div class="ttname"><a href="struct_bench_time_stats__t.html">BenchTimeStats_t</a></div><div class="ttdoc">Структура статистики измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00081">bench_time.h:81</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a21499b0b19d1ed27f8cea069f674e8ec"><div class="ttname"><a href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">BenchTimeStats_t::total_ticks</a></div><div class="ttdeci">uint32_t total_ticks</div><div class="ttdoc">Суммарное время в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00084">bench_time.h:84</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a2c739e1db6b26ceac5db3f2c44c177a0"><div class="ttname"><a href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">BenchTimeStats_t::last_ticks</a></div><div class="ttdeci">uint32_t last_ticks</div><div class="ttdoc">Последнее измеренное время</div><div class="ttdef"><b>Definition</b> <a href="#l00086">bench_time.h:86</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a39b71a5d48c4a51a553a26a9fb961ac8"><div class="ttname"><a href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">BenchTimeStats_t::min_ticks</a></div><div class="ttdeci">uint32_t min_ticks</div><div class="ttdoc">Минимальное время в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00082">bench_time.h:82</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a3da36eb65b03ba995b5905b4650ea93c"><div class="ttname"><a href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">BenchTimeStats_t::max_ticks</a></div><div class="ttdeci">uint32_t max_ticks</div><div class="ttdoc">Максимальное время в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00083">bench_time.h:83</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a5e95ef31dd0daf973894ef2f034d1f71"><div class="ttname"><a href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">BenchTimeStats_t::count</a></div><div class="ttdeci">uint32_t count</div><div class="ttdoc">Количество измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00085">bench_time.h:85</a></div></div>
<div class="ttc" id="astruct_bench_time__t_html"><div class="ttname"><a href="struct_bench_time__t.html">BenchTime_t</a></div><div class="ttdoc">Основная структура менеджера измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00101">bench_time.h:101</a></div></div>
<div class="ttc" id="astruct_bench_time__t_html_a51376c064bdcffba23cf65d0733e3d34"><div class="ttname"><a href="struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34">BenchTime_t::channels</a></div><div class="ttdeci">BenchTimeChannel_t channels[BENCH_TIME_MAX_CHANNELS]</div><div class="ttdoc">Каналы измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00102">bench_time.h:102</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html"><div class="ttname"><a href="struct_bench_time_channel__t.html">BenchTimeChannel_t</a></div><div class="ttdoc">Структура канала измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00091">bench_time.h:91</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a095d93e0228641f58b8661e263bc1bcd"><div class="ttname"><a href="struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd">BenchTimeChannel_t::tick_period</a></div><div class="ttdeci">uint32_t tick_period</div><div class="ttdoc">Период тиков для переполнения</div><div class="ttdef"><b>Definition</b> <a href="#l00093">bench_time.h:93</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a0f80bb194231df7921712d20bac603c9"><div class="ttname"><a href="struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9">BenchTimeChannel_t::is_running</a></div><div class="ttdeci">uint32_t is_running</div><div class="ttdoc">Флаг активного измерения</div><div class="ttdef"><b>Definition</b> <a href="#l00094">bench_time.h:94</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a22a3913e7925aa89cc12ec1d24a6c16c"><div class="ttname"><a href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c">BenchTimeChannel_t::stats</a></div><div class="ttdeci">BenchTimeStats_t stats</div><div class="ttdoc">Статистика измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00095">bench_time.h:95</a></div></div>
<div class="ttc" id="astruct_bench_time_channel__t_html_a8140fe9e3d323404651f0cfeeae53928"><div class="ttname"><a href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928">BenchTimeChannel_t::start_tick</a></div><div class="ttdeci">uint32_t start_tick</div><div class="ttdoc">Время старта в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00092">bench_time.h:92</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html"><div class="ttname"><a href="struct_bench_time_stats__t.html">BenchTimeStats_t</a></div><div class="ttdoc">Структура статистики измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00080">bench_time.h:80</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a21499b0b19d1ed27f8cea069f674e8ec"><div class="ttname"><a href="struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec">BenchTimeStats_t::total_ticks</a></div><div class="ttdeci">uint32_t total_ticks</div><div class="ttdoc">Суммарное время в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00083">bench_time.h:83</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a2c739e1db6b26ceac5db3f2c44c177a0"><div class="ttname"><a href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">BenchTimeStats_t::last_ticks</a></div><div class="ttdeci">uint32_t last_ticks</div><div class="ttdoc">Последнее измеренное время</div><div class="ttdef"><b>Definition</b> <a href="#l00085">bench_time.h:85</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a39b71a5d48c4a51a553a26a9fb961ac8"><div class="ttname"><a href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">BenchTimeStats_t::min_ticks</a></div><div class="ttdeci">uint32_t min_ticks</div><div class="ttdoc">Минимальное время в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00081">bench_time.h:81</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a3da36eb65b03ba995b5905b4650ea93c"><div class="ttname"><a href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">BenchTimeStats_t::max_ticks</a></div><div class="ttdeci">uint32_t max_ticks</div><div class="ttdoc">Максимальное время в тиках</div><div class="ttdef"><b>Definition</b> <a href="#l00082">bench_time.h:82</a></div></div>
<div class="ttc" id="astruct_bench_time_stats__t_html_a5e95ef31dd0daf973894ef2f034d1f71"><div class="ttname"><a href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">BenchTimeStats_t::count</a></div><div class="ttdeci">uint32_t count</div><div class="ttdoc">Количество измерений</div><div class="ttdef"><b>Definition</b> <a href="#l00084">bench_time.h:84</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h File Reference</title>
<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>
@ -108,26 +108,26 @@ $(function(){initNavTree('bit__access_8h.html','',''); });
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="bit__access_8h__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8h" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8h" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8h">
<area shape="rect" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,182,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="42,112,145,139"/>
<area shape="poly" title=" " alt="" coords="96,64,96,96,91,96,91,64"/>
<area shape="rect" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="37,187,150,213"/>
<area shape="poly" title=" " alt="" coords="96,139,96,171,91,171,91,139"/>
<area shape="rect" title=" " alt="" coords="35,261,152,288"/>
<area shape="poly" title=" " alt="" coords="96,214,96,246,91,246,91,214"/>
<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" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="41,187,154,213"/>
<area shape="poly" title=" " alt="" coords="100,139,100,171,95,171,95,139"/>
<area shape="rect" title=" " alt="" coords="39,261,156,288"/>
<area shape="poly" title=" " alt="" coords="100,214,100,246,95,246,95,214"/>
</map>
</div>
</div><div class="textblock"><div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>This graph shows which files directly or indirectly include this file:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="bit__access_8h__dep__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8hdep" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8hdep" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8hdep">
<area shape="rect" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,182,64"/>
<area shape="rect" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,182,171"/>
<area shape="poly" title=" " alt="" coords="96,80,96,112,91,112,91,80"/>
<div class="center"><img src="bit__access_8h__dep__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8hdep" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_my_libs_2_inc_2bit__access_8hdep" 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_8hdep">
<area shape="rect" title="Заголочный файл для дефайнов битового доступа." alt="" coords="8,5,193,64"/>
<area shape="rect" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,196,171"/>
<area shape="poly" title=" " alt="" coords="103,80,103,112,98,112,98,80"/>
</map>
</div>
</div>

View File

@ -1,5 +1,5 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h">
<area shape="rect" id="Node000001" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,182,64"/>
<area shape="rect" id="Node000002" href="$mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,182,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="96,80,96,112,91,112,91,80"/>
<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="8,5,193,64"/>
<area shape="rect" id="Node000002" href="$mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,196,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="103,80,103,112,98,112,98,80"/>
</map>

View File

@ -1 +1 @@
90cf62b6f2167bce533474179c32e7c8
2c31726c367195a8a8a4de71516ca02f

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,9 +1,9 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h">
<area shape="rect" id="Node000001" title="Заголочный файл для дефайнов битового доступа." alt="" coords="5,5,182,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="42,112,145,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="96,64,96,96,91,96,91,64"/>
<area shape="rect" id="Node000003" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="37,187,150,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="96,139,96,171,91,171,91,139"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="35,261,152,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="96,214,96,246,91,246,91,214"/>
<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" href="$mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs." alt="" coords="41,187,154,213"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="100,139,100,171,95,171,95,139"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="39,261,156,288"/>
<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="100,214,100,246,95,246,95,214"/>
</map>

View File

@ -1 +1 @@
5594521ddd55c9695dfd6f9ee1107722
a9e9953d332b9335ffe62b621a875479

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h Source File</title>
<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>
@ -106,7 +106,7 @@ $(function(){initNavTree('bit__access_8h_source.html','',''); });
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Заголочный файл для дефайнов битового доступа.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">**************************************************************************</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* @defgroup BIT_ACCESS_DEFINES Bit access defines</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* @ingroup MYLIBS_DEFINES</span></div>
<div class="line"><a id="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>

View File

@ -100,14 +100,14 @@ $(function(){initNavTree('classes.html','',''); });
<div class="headertitle"><div class="title">Class Index</div></div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
<div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_B" name="letter_B">B</a></dt>
<dd><a class="el" href="struct_bench_time__t.html">BenchTime_t</a></dd><dd><a class="el" href="struct_bench_time_channel__t.html">BenchTimeChannel_t</a></dd><dd><a class="el" href="struct_bench_time_stats__t.html">BenchTimeStats_t</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_G" name="letter_G">G</a></dt>
<dd><a class="el" href="struct_gen_optimizer__t.html">GenOptimizer_t</a></dd><dd><a class="el" href="struct_g_p_i_o___l_e_d_type_def.html">GPIO_LEDTypeDef</a></dd><dd><a class="el" href="struct_g_p_i_o___switch_type_def.html">GPIO_SwitchTypeDef</a></dd></dl>
<dd><a class="el" href="struct_gen_optimizer__t.html">GenOptimizer_t</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_H" name="letter_H">H</a></dt>
<dd><a class="el" href="struct_h_f___stack_frame__t.html">HF_StackFrame_t</a></dd></dl>
@ -116,13 +116,10 @@ $(function(){initNavTree('classes.html','',''); });
<dd><a class="el" href="struct_r_t_t___flash_header__t.html">RTT_FlashHeader_t</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
<dd><a class="el" href="struct_s_p_i___settings_type_def.html">SPI_SettingsTypeDef</a></dd></dl>
<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_T" name="letter_T">T</a></dt>
<dd><a class="el" href="struct_t_i_m___encoder_type_def.html">TIM_EncoderTypeDef</a></dd><dd><a class="el" href="struct_t_i_m___settings_type_def.html">TIM_SettingsTypeDef</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_U" name="letter_U">U</a></dt>
<dd><a class="el" href="struct_u_a_r_t___settings_type_def.html">UART_SettingsTypeDef</a></dd><dd><a class="el" href="unionuint16___bit_type_def.html">uint16_BitTypeDef</a></dd><dd><a class="el" href="unionuint32___bit_type_def.html">uint32_BitTypeDef</a></dd><dd><a class="el" href="unionuint64___bit_type_def.html">uint64_BitTypeDef</a></dd><dd><a class="el" href="unionuint8___bit_type_def.html">uint8_BitTypeDef</a></dd></dl>
<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 -->

View File

@ -0,0 +1,130 @@
<!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_5FConf_2Eh" id="r_SEGGER_5FRTT_5FConf_2Eh"><td class="memItemLeft" align="right" valign="top"><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>&#160;</td><td class="memItemRight" valign="bottom"><b>SEGGER_RTT_Conf.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

@ -0,0 +1,8 @@
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_Conf.h", "_s_e_g_g_e_r___r_t_t___conf_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

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc Directory Reference</title>
<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>
@ -104,13 +104,10 @@ $(function(){initNavTree('dir_8eb68c124db7670c3cb56141b10519ea.html','',''); });
<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/STM32_ExtendedLibs/MyLibs/Inc"/></div>
<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="43,53,83,80"/>
<area shape="rect" href="dir_57feeba75fefbd1a9c832b76e3bce520.html" title="STM32_General" alt="" coords="5,128,121,155"/>
<area shape="poly" href="dir_000000_000004.html" alt="" coords="66,81,66,112,60,112,60,81"/>
<area shape="rect" href="dir_000000_000004.html" title="1" alt="" coords="68,101,75,117"/>
<area shape="rect" href="dir_d4b2573a0c19afb61452cc3d00967af1.html" title="MyLibs" alt="" coords="31,16,95,91"/>
<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">

View File

@ -1,7 +1,4 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc">
<area shape="rect" id="node1" href="dir_8eb68c124db7670c3cb56141b10519ea.html" title="Inc" alt="" coords="43,53,83,80"/>
<area shape="rect" id="node2" href="dir_57feeba75fefbd1a9c832b76e3bce520.html" title="STM32_General" alt="" coords="5,128,121,155"/>
<area shape="poly" id="edge1" href="dir_000000_000004.html" alt="" coords="66,81,66,112,60,112,60,81"/>
<area shape="rect" id="edge1-headlabel" href="dir_000000_000004.html" title="1" alt="" coords="68,101,75,117"/>
<area shape="rect" id="clust1" href="dir_d4b2573a0c19afb61452cc3d00967af1.html" title="MyLibs" alt="" coords="31,16,95,91"/>
<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 +1 @@
ae7b3aba5d71eb1d9172fce905d93d12
73fcb3fce434281cb487947e3a365eba

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 886 B

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs Directory Reference</title>
<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>
@ -100,19 +100,6 @@ $(function(){initNavTree('dir_d4b2573a0c19afb61452cc3d00967af1.html','',''); });
<div class="headertitle"><div class="title">MyLibs 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 MyLibs:</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_d4b2573a0c19afb61452cc3d00967af1_dep.png" border="0" usemap="#adir__d4b2573a0c19afb61452cc3d00967af1__dep" loading="lazy" alt="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs"/></div>
<map name="adir__d4b2573a0c19afb61452cc3d00967af1__dep" id="adir__d4b2573a0c19afb61452cc3d00967af1__dep">
<area shape="rect" href="dir_8eb68c124db7670c3cb56141b10519ea.html" title="Inc" alt="" coords="115,27,154,53"/>
<area shape="rect" href="dir_57feeba75fefbd1a9c832b76e3bce520.html" title="STM32_General" alt="" coords="77,101,192,128"/>
<area shape="poly" href="dir_000000_000004.html" alt="" coords="137,54,137,86,132,86,132,54"/>
<area shape="rect" href="dir_000000_000004.html" title="1" alt="" coords="140,75,147,91"/>
<area shape="rect" href="dir_d4b2573a0c19afb61452cc3d00967af1.html" alt="" coords="16,16,165,64"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-subdirs" class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>

View File

@ -8,20 +8,18 @@
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<body>
<a href="____general__flash_8c_source.html"/>
<a href="____general__flash_8h_source.html"/>
<a href="_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___conf_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_000000_000004.html"/>
<a href="dir_000001_000002.html"/>
<a href="dir_000003_000001.html"/>
<a href="dir_2cad7b5fa94233a09111fd73c6202518.html"/>
<a href="dir_3d5e348fed410a00f9c665596ca3b887.html"/>
<a href="dir_57feeba75fefbd1a9c832b76e3bce520.html"/>
<a href="dir_7de012165f681bf20d3995ae88f6551e.html"/>
<a href="dir_8eb68c124db7670c3cb56141b10519ea.html"/>
<a href="dir_d4b2573a0c19afb61452cc3d00967af1.html"/>
<a href="doxygen_crawl.html"/>
@ -30,46 +28,9 @@
<a href="functions_vars.html"/>
<a href="gen__optimizer_8h.html"/>
<a href="gen__optimizer_8h_source.html"/>
<a href="general__gpio_8c.html"/>
<a href="general__gpio_8c_source.html"/>
<a href="general__gpio_8h.html"/>
<a href="general__gpio_8h_source.html"/>
<a href="general__spi_8c.html"/>
<a href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5"/>
<a href="general__spi_8c_source.html"/>
<a href="general__spi_8h.html"/>
<a href="general__spi_8h_source.html"/>
<a href="general__tim_8c.html"/>
<a href="general__tim_8c_source.html"/>
<a href="general__tim_8h.html"/>
<a href="general__tim_8h_source.html"/>
<a href="general__uart_8c.html"/>
<a href="general__uart_8c.html#a3abae05bbde5f3b402bf18ca13dc6a0b"/>
<a href="general__uart_8c.html#ad82d0cbd19151675135fd75dad315d05"/>
<a href="general__uart_8c_source.html"/>
<a href="general__uart_8h.html"/>
<a href="general__uart_8h_source.html"/>
<a href="globals.html"/>
<a href="globals_b.html"/>
<a href="globals_c.html"/>
<a href="globals_d.html"/>
<a href="globals_defs.html"/>
<a href="globals_e.html"/>
<a href="globals_enum.html"/>
<a href="globals_eval.html"/>
<a href="globals_f.html"/>
<a href="globals_func.html"/>
<a href="globals_g.html"/>
<a href="globals_h.html"/>
<a href="globals_i.html"/>
<a href="globals_l.html"/>
<a href="globals_m.html"/>
<a href="globals_n.html"/>
<a href="globals_p.html"/>
<a href="globals_r.html"/>
<a href="globals_s.html"/>
<a href="globals_t.html"/>
<a href="globals_u.html"/>
<a href="globals_vars.html"/>
<a href="graph_legend.html"/>
<a href="group___b_e_n_c_h___t_i_m_e.html"/>
@ -114,13 +75,6 @@
<a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e"/>
<a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3"/>
<a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628"/>
<a href="group___g_p_i_o___i_n_i_t.html"/>
<a href="group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9"/>
<a href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023"/>
<a href="group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29"/>
<a href="group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653"/>
<a href="group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067"/>
<a href="group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7"/>
<a href="group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281"/>
@ -129,86 +83,10 @@
<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___g_p_i_o.html"/>
<a href="group___m_y___l_i_b_s___s_p_i.html"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac"/>
<a href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4"/>
<a href="group___m_y___l_i_b_s___t_i_m.html"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb"/>
<a href="group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154"/>
<a href="group___m_y_l_i_b_s___a_l_l.html"/>
<a href="group___m_y_l_i_b_s___c_o_n_f_i_g.html"/>
<a href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70"/>
<a href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7"/>
<a href="group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834"/>
<a href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc"/>
<a href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c"/>
<a href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8"/>
<a href="group___m_y_l_i_b_s___t_i_m___o_c.html"/>
<a href="group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6"/>
<a href="group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889"/>
<a href="group___s_p_i___i_n_i_t.html"/>
<a href="group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf"/>
<a href="group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b"/>
<a href="group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc"/>
<a href="group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c"/>
<a href="group___t_i_m___i_n_i_t.html"/>
<a href="group___t_i_m___i_n_i_t.html#ga1493b39c9214501180b81b4c892f9be0"/>
<a href="group___t_i_m___i_n_i_t.html#ga176c97f06ebcf14e06e5c5bdbfac44c2"/>
<a href="group___t_i_m___i_n_i_t.html#ga252f4fba93fc265110e83760e0590af3"/>
<a href="group___t_i_m___i_n_i_t.html#ga28ba33d7c6bf22821dafa5bcee4854be"/>
<a href="group___t_i_m___i_n_i_t.html#ga4e2b0e6cdf9eed74581b575c3fd9516b"/>
<a href="group___t_i_m___i_n_i_t.html#ga54a98c21365e0bc45b81555d2b101f2b"/>
<a href="group___t_i_m___i_n_i_t.html#ga5b5685a43273b6e37242a4aba3ee0617"/>
<a href="group___t_i_m___i_n_i_t.html#ga72535a44955b43cbcd56e25039ab32eb"/>
<a href="group___t_i_m___i_n_i_t.html#ga7cdc54cc8cbbb6e9f60001f1e3e6ec67"/>
<a href="group___t_i_m___i_n_i_t.html#ga8fe31b98160627d19038222910be3f46"/>
<a href="group___t_i_m___i_n_i_t.html#ga98c0691052d1da2c4053dd3586ff7ce9"/>
<a href="group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c"/>
<a href="group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a"/>
<a href="group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac"/>
<a href="group___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"/>
@ -262,30 +140,17 @@
<a href="group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07"/>
<a href="group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e"/>
<a href="group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74"/>
<a href="group___u_a_r_t___i_n_i_t.html"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976"/>
<a href="group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7"/>
<a href="group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d"/>
<a href="group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b"/>
<a href="group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e"/>
<a href="group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be"/>
<a href="index.html"/>
<a href="index.html#features"/>
<a href="index.html#gpio_module"/>
<a href="index.html#overview"/>
<a href="index.html#spi_module"/>
<a href="index.html#structure"/>
<a href="index.html#tim_module"/>
<a href="index.html#trace_module"/>
<a href="index.html#uart_module"/>
<a href="index.html#usage_basic"/>
<a href="index.html#utils_module"/>
<a href="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="mainpage_8h_source.html"/>
<a href="mylibs__config_8h.html"/>
<a href="mylibs__config_8h_source.html"/>
@ -295,7 +160,7 @@
<a href="mylibs__include_8h_source.html"/>
<a href="struct_bench_time__t-members.html"/>
<a href="struct_bench_time__t.html"/>
<a href="struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6"/>
<a href="struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34"/>
<a href="struct_bench_time_channel__t-members.html"/>
<a href="struct_bench_time_channel__t.html"/>
<a href="struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd"/>
@ -309,32 +174,18 @@
<a href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8"/>
<a href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c"/>
<a href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71"/>
<a href="struct_g_p_i_o___l_e_d_type_def-members.html"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816"/>
<a href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435"/>
<a href="struct_g_p_i_o___switch_type_def-members.html"/>
<a href="struct_g_p_i_o___switch_type_def.html"/>
<a href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89"/>
<a href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06"/>
<a href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405"/>
<a href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032"/>
<a href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a"/>
<a href="struct_gen_optimizer__t-members.html"/>
<a href="struct_gen_optimizer__t.html"/>
<a href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc"/>
<a href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df"/>
<a href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320"/>
<a href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9"/>
<a href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73"/>
<a href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c"/>
<a href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9"/>
<a href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192"/>
<a href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1"/>
<a href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12"/>
<a href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c"/>
<a href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa"/>
<a href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947"/>
<a href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5"/>
<a href="struct_h_f___stack_frame__t-members.html"/>
<a href="struct_h_f___stack_frame__t.html"/>
@ -348,54 +199,17 @@
<a href="struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9"/>
<a href="struct_r_t_t___flash_header__t-members.html"/>
<a href="struct_r_t_t___flash_header__t.html"/>
<a href="struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e"/>
<a href="struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57"/>
<a href="struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a"/>
<a href="struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699"/>
<a href="struct_s_p_i___settings_type_def-members.html"/>
<a href="struct_s_p_i___settings_type_def.html"/>
<a href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820"/>
<a href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95"/>
<a href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a"/>
<a href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc"/>
<a href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95"/>
<a href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1"/>
<a href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979"/>
<a href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176"/>
<a href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474"/>
<a href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422"/>
<a href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14"/>
<a href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab"/>
<a href="struct_t_i_m___encoder_type_def-members.html"/>
<a href="struct_t_i_m___encoder_type_def.html"/>
<a href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5"/>
<a href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2"/>
<a href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e"/>
<a href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5"/>
<a href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80"/>
<a href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3"/>
<a href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45"/>
<a href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9"/>
<a href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c"/>
<a href="struct_t_i_m___settings_type_def-members.html"/>
<a href="struct_t_i_m___settings_type_def.html"/>
<a href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718"/>
<a href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21"/>
<a href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0"/>
<a href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e"/>
<a href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014"/>
<a href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7"/>
<a href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969"/>
<a href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0"/>
<a href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c"/>
<a href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4"/>
<a href="struct_u_a_r_t___settings_type_def-members.html"/>
<a href="struct_u_a_r_t___settings_type_def.html"/>
<a href="struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19"/>
<a href="struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613"/>
<a href="struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49"/>
<a href="struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef"/>
<a href="struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea"/>
<a href="struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f"/>
<a href="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"/>

View File

@ -112,20 +112,13 @@ $(function(){initNavTree('files.html','',''); });
<tr id="row_0_0_5_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="mylibs__include_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="mylibs__include_8h.html" target="_self">mylibs_include.h</a></td><td class="desc">Заголочный файл для всех библиотек </td></tr>
<tr id="row_0_0_6_" 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_7_" 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_57feeba75fefbd1a9c832b76e3bce520.html" target="_self">STM32_General</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="dynsection.toggleFolder('1_0_')"><span class="arrowhead opened"></span></span><span id="img_1_0_" class="iconfolder" onclick="dynsection.toggleFolder('1_0_')"><div class="folder-icon open"></div></span><a class="el" href="dir_2cad7b5fa94233a09111fd73c6202518.html" target="_self">Inc</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="____general__flash_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>__general_flash.h</b></td><td class="desc"></td></tr>
<tr id="row_1_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__gpio_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__gpio_8h.html" target="_self">general_gpio.h</a></td><td class="desc">Заголовочный файл для модуля инициализации портов и работы с ними </td></tr>
<tr id="row_1_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__spi_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__spi_8h.html" target="_self">general_spi.h</a></td><td class="desc">Заголовочный файл для модуля инициализации SPI </td></tr>
<tr id="row_1_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__tim_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__tim_8h.html" target="_self">general_tim.h</a></td><td class="desc">Заголовочный файл для модуля инициализации таймеров и работы с ними </td></tr>
<tr id="row_1_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__uart_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__uart_8h.html" target="_self">general_uart.h</a></td><td class="desc">Заголовочный файл для модуля инициализации UART </td></tr>
<tr id="row_1_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_1_" class="arrow" onclick="dynsection.toggleFolder('1_1_')"><span class="arrowhead opened"></span></span><span id="img_1_1_" class="iconfolder" onclick="dynsection.toggleFolder('1_1_')"><div class="folder-icon open"></div></span><a class="el" href="dir_3d5e348fed410a00f9c665596ca3b887.html" target="_self">Src</a></td><td class="desc"></td></tr>
<tr id="row_1_1_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="____general__flash_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>__general_flash.c</b></td><td class="desc"></td></tr>
<tr id="row_1_1_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__gpio_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__gpio_8c.html" target="_self">general_gpio.c</a></td><td class="desc">Модуль для инициализации портов и работы с ними </td></tr>
<tr id="row_1_1_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__spi_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__spi_8c.html" target="_self">general_spi.c</a></td><td class="desc">Модуль для инициализации SPI </td></tr>
<tr id="row_1_1_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__tim_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__tim_8c.html" target="_self">general_tim.c</a></td><td class="desc">Модуль для инициализации таймеров и работы с ними </td></tr>
<tr id="row_1_1_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="general__uart_8c_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><a class="el" href="general__uart_8c.html" target="_self">general_uart.c</a></td><td class="desc">Модуль для инициализации UART </td></tr>
<tr id="row_2_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="mainpage_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>mainpage.h</b></td><td class="desc"></td></tr>
<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___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>
<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__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_4_" 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___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="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="mainpage_8h_source.html"><span class="icondoc"><div class="doc-icon"></div></span></a><b>mainpage.h</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->

View File

@ -1,6 +1,6 @@
var files_dup =
[
[ "MyLibs", "dir_d4b2573a0c19afb61452cc3d00967af1.html", "dir_d4b2573a0c19afb61452cc3d00967af1" ],
[ "STM32_General", "dir_57feeba75fefbd1a9c832b76e3bce520.html", "dir_57feeba75fefbd1a9c832b76e3bce520" ],
[ "RTT", "dir_7de012165f681bf20d3995ae88f6551e.html", "dir_7de012165f681bf20d3995ae88f6551e" ],
[ "mainpage.h", "mainpage_8h_source.html", null ]
];

View File

@ -101,44 +101,20 @@ $(function(){initNavTree('functions.html','',''); });
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>cand_index&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">GenOptimizer_t</a></li>
<li>candidates&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">GenOptimizer_t</a></li>
<li>channels&#160;:&#160;<a class="el" href="struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6">BenchTime_t</a></li>
<li>CLK_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">SPI_SettingsTypeDef</a></li>
<li>CLK_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">SPI_SettingsTypeDef</a></li>
<li>CLK_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">SPI_SettingsTypeDef</a></li>
<li>candidates&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">GenOptimizer_t</a></li>
<li>channels&#160;:&#160;<a class="el" href="struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34">BenchTime_t</a></li>
<li>count&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">BenchTimeStats_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a">RTT_FlashHeader_t</a></li>
<li>DMA_CHANNEL_X&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19">UART_SettingsTypeDef</a></li>
<li>DMAChannel&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>Encoder_Diff&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3">TIM_EncoderTypeDef</a></li>
<li>Encoder_Shdw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2">TIM_EncoderTypeDef</a></li>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e">RTT_FlashHeader_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>gen_index&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">GenOptimizer_t</a></li>
<li>gen_mut&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">GenOptimizer_t</a></li>
<li>GPIO_PIN_RX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49">UART_SettingsTypeDef</a></li>
<li>GPIO_PIN_SW&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI1&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI2&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef">UART_SettingsTypeDef</a></li>
<li>GPIOx&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">TIM_EncoderTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>hspi&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">SPI_SettingsTypeDef</a></li>
<li>htim&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">TIM_EncoderTypeDef</a>, <a class="el" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">TIM_SettingsTypeDef</a></li>
<li>huart&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea">UART_SettingsTypeDef</a></li>
</ul>
@ -149,11 +125,7 @@ $(function(){initNavTree('functions.html','',''); });
<h3 class="doxsection"><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>last_ticks&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">BenchTimeStats_t</a></li>
<li>LED_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">GPIO_LEDTypeDef</a></li>
<li>LED_Period&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">GPIO_LEDTypeDef</a></li>
<li>LED_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">GPIO_LEDTypeDef</a></li>
<li>LED_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">GPIO_LEDTypeDef</a></li>
<li>loss&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">GenOptimizer_t</a></li>
<li>loss&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">GenOptimizer_t</a></li>
<li>lr&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577">HF_StackFrame_t</a></li>
</ul>
@ -161,12 +133,6 @@ $(function(){initNavTree('functions.html','',''); });
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>max_ticks&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">BenchTimeStats_t</a></li>
<li>min_ticks&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">BenchTimeStats_t</a></li>
<li>MISO_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">SPI_SettingsTypeDef</a></li>
<li>MISO_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">SPI_SettingsTypeDef</a></li>
<li>MISO_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">SPI_SettingsTypeDef</a></li>
<li>MOSI_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">SPI_SettingsTypeDef</a></li>
<li>mutation_amp&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">GenOptimizer_t</a></li>
</ul>
@ -194,28 +160,11 @@ $(function(){initNavTree('functions.html','',''); });
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>sBreakDeadTimeConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7">TIM_SettingsTypeDef</a></li>
<li>sClockSourceConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">TIM_SettingsTypeDef</a></li>
<li>sConfig&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5">TIM_EncoderTypeDef</a></li>
<li>size&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699">RTT_FlashHeader_t</a></li>
<li>sMasterConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21">TIM_SettingsTypeDef</a></li>
<li>sorted_idx&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">GenOptimizer_t</a></li>
<li>sSlaveConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969">TIM_SettingsTypeDef</a></li>
<li>sorted_idx&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">GenOptimizer_t</a></li>
<li>stability&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">GenOptimizer_t</a></li>
<li>start_tick&#160;:&#160;<a class="el" href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928">BenchTimeChannel_t</a></li>
<li>state&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">GPIO_LEDTypeDef</a></li>
<li>stats&#160;:&#160;<a class="el" href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c">BenchTimeChannel_t</a></li>
<li>sTickBasePrescaler&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">TIM_SettingsTypeDef</a></li>
<li>sTickBaseUS&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">TIM_SettingsTypeDef</a></li>
<li>sTimAHBFreqMHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">TIM_SettingsTypeDef</a></li>
<li>sTimFreqHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">TIM_SettingsTypeDef</a></li>
<li>sTimMode&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0">TIM_SettingsTypeDef</a></li>
<li>Sw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45">TIM_EncoderTypeDef</a></li>
<li>Sw_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">GPIO_SwitchTypeDef</a></li>
<li>Sw_FilterDelay&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">GPIO_SwitchTypeDef</a></li>
<li>Sw_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">GPIO_SwitchTypeDef</a></li>
<li>Sw_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">GPIO_SwitchTypeDef</a></li>
<li>Sw_PrevState&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">GPIO_SwitchTypeDef</a></li>
</ul>

View File

@ -101,44 +101,20 @@ $(function(){initNavTree('functions_vars.html','',''); });
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>cand_index&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">GenOptimizer_t</a></li>
<li>candidates&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">GenOptimizer_t</a></li>
<li>channels&#160;:&#160;<a class="el" href="struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6">BenchTime_t</a></li>
<li>CLK_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1">SPI_SettingsTypeDef</a></li>
<li>CLK_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979">SPI_SettingsTypeDef</a></li>
<li>CLK_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc">SPI_SettingsTypeDef</a></li>
<li>candidates&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">GenOptimizer_t</a></li>
<li>channels&#160;:&#160;<a class="el" href="struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34">BenchTime_t</a></li>
<li>count&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71">BenchTimeStats_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a">RTT_FlashHeader_t</a></li>
<li>DMA_CHANNEL_X&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19">UART_SettingsTypeDef</a></li>
<li>DMAChannel&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95">SPI_SettingsTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>Encoder_Diff&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3">TIM_EncoderTypeDef</a></li>
<li>Encoder_Shdw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2">TIM_EncoderTypeDef</a></li>
<li>data&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e">RTT_FlashHeader_t</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>gen_index&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">GenOptimizer_t</a></li>
<li>gen_mut&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">GenOptimizer_t</a></li>
<li>GPIO_PIN_RX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49">UART_SettingsTypeDef</a></li>
<li>GPIO_PIN_SW&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI1&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TI2&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5">TIM_EncoderTypeDef</a></li>
<li>GPIO_PIN_TX&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef">UART_SettingsTypeDef</a></li>
<li>GPIOx&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9">TIM_EncoderTypeDef</a>, <a class="el" href="struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f">UART_SettingsTypeDef</a></li>
</ul>
<h3 class="doxsection"><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>hspi&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422">SPI_SettingsTypeDef</a></li>
<li>htim&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c">TIM_EncoderTypeDef</a>, <a class="el" href="struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c">TIM_SettingsTypeDef</a></li>
<li>huart&#160;:&#160;<a class="el" href="struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea">UART_SettingsTypeDef</a></li>
</ul>
@ -149,11 +125,7 @@ $(function(){initNavTree('functions_vars.html','',''); });
<h3 class="doxsection"><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>last_ticks&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0">BenchTimeStats_t</a></li>
<li>LED_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816">GPIO_LEDTypeDef</a></li>
<li>LED_Period&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec">GPIO_LEDTypeDef</a></li>
<li>LED_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978">GPIO_LEDTypeDef</a></li>
<li>LED_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf">GPIO_LEDTypeDef</a></li>
<li>loss&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">GenOptimizer_t</a></li>
<li>loss&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">GenOptimizer_t</a></li>
<li>lr&#160;:&#160;<a class="el" href="struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577">HF_StackFrame_t</a></li>
</ul>
@ -161,12 +133,6 @@ $(function(){initNavTree('functions_vars.html','',''); });
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>max_ticks&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c">BenchTimeStats_t</a></li>
<li>min_ticks&#160;:&#160;<a class="el" href="struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8">BenchTimeStats_t</a></li>
<li>MISO_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14">SPI_SettingsTypeDef</a></li>
<li>MISO_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95">SPI_SettingsTypeDef</a></li>
<li>MISO_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIO_AlternageFunc&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab">SPI_SettingsTypeDef</a></li>
<li>MOSI_GPIOx&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820">SPI_SettingsTypeDef</a></li>
<li>MOSI_PIN&#160;:&#160;<a class="el" href="struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176">SPI_SettingsTypeDef</a></li>
<li>mutation_amp&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">GenOptimizer_t</a></li>
</ul>
@ -194,28 +160,11 @@ $(function(){initNavTree('functions_vars.html','',''); });
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>sBreakDeadTimeConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7">TIM_SettingsTypeDef</a></li>
<li>sClockSourceConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0">TIM_SettingsTypeDef</a></li>
<li>sConfig&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5">TIM_EncoderTypeDef</a></li>
<li>size&#160;:&#160;<a class="el" href="struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699">RTT_FlashHeader_t</a></li>
<li>sMasterConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21">TIM_SettingsTypeDef</a></li>
<li>sorted_idx&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">GenOptimizer_t</a></li>
<li>sSlaveConfig&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969">TIM_SettingsTypeDef</a></li>
<li>sorted_idx&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">GenOptimizer_t</a></li>
<li>stability&#160;:&#160;<a class="el" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">GenOptimizer_t</a></li>
<li>start_tick&#160;:&#160;<a class="el" href="struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928">BenchTimeChannel_t</a></li>
<li>state&#160;:&#160;<a class="el" href="struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435">GPIO_LEDTypeDef</a></li>
<li>stats&#160;:&#160;<a class="el" href="struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c">BenchTimeChannel_t</a></li>
<li>sTickBasePrescaler&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718">TIM_SettingsTypeDef</a></li>
<li>sTickBaseUS&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e">TIM_SettingsTypeDef</a></li>
<li>sTimAHBFreqMHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014">TIM_SettingsTypeDef</a></li>
<li>sTimFreqHz&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4">TIM_SettingsTypeDef</a></li>
<li>sTimMode&#160;:&#160;<a class="el" href="struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0">TIM_SettingsTypeDef</a></li>
<li>Sw&#160;:&#160;<a class="el" href="struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45">TIM_EncoderTypeDef</a></li>
<li>Sw_ActiveLvl&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405">GPIO_SwitchTypeDef</a></li>
<li>Sw_FilterDelay&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06">GPIO_SwitchTypeDef</a></li>
<li>Sw_Pin&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032">GPIO_SwitchTypeDef</a></li>
<li>Sw_Port&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a">GPIO_SwitchTypeDef</a></li>
<li>Sw_PrevState&#160;:&#160;<a class="el" href="struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89">GPIO_SwitchTypeDef</a></li>
</ul>

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h File Reference</title>
<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>
@ -110,9 +110,9 @@ $(function(){initNavTree('gen__optimizer_8h.html','',''); });
<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_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_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_m32___extended_libs_2_my_libs_2_inc_2gen__optimizer_8h">
<area shape="rect" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="84,5,260,64"/>
<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="79,5,265,64"/>
<area shape="rect" href="mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="13,112,115,139"/>
<area shape="poly" title=" " alt="" coords="139,66,93,104,89,100,136,62"/>
<area shape="rect" title=" " alt="" coords="140,112,204,139"/>
@ -129,11 +129,11 @@ $(function(){initNavTree('gen__optimizer_8h.html','',''); });
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="gen__optimizer_8h__dep__incl.png" border="0" usemap="#a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2gen__optimizer_8hdep" loading="lazy" alt=""/></div>
<map name="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2gen__optimizer_8hdep" id="a_e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m32___extended_libs_2_my_libs_2_inc_2gen__optimizer_8hdep">
<area shape="rect" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="5,5,182,64"/>
<area shape="rect" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,182,171"/>
<area shape="poly" title=" " alt="" coords="96,80,96,112,91,112,91,80"/>
<div class="center"><img src="gen__optimizer_8h__dep__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_8hdep" 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_8hdep" 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_8hdep">
<area shape="rect" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="8,5,193,64"/>
<area shape="rect" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,196,171"/>
<area shape="poly" title=" " alt="" coords="103,80,103,112,98,112,98,80"/>
</map>
</div>
</div>

View File

@ -1,5 +1,5 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="5,5,182,64"/>
<area shape="rect" id="Node000002" href="$mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,182,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="96,80,96,112,91,112,91,80"/>
<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="8,5,193,64"/>
<area shape="rect" id="Node000002" href="$mylibs__include_8h.html" title="Заголочный файл для всех библиотек" alt="" coords="5,112,196,171"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="103,80,103,112,98,112,98,80"/>
</map>

View File

@ -1 +1 @@
bc415c9dddbdac24a11e95d2be89e955
fa6984be068ceba2f84b4d7dac29999f

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,5 +1,5 @@
<map id="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h" name="E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h">
<area shape="rect" id="Node000001" title="Заголовочный файл для адаптивного подбора параметров" alt="" coords="84,5,260,64"/>
<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="79,5,265,64"/>
<area shape="rect" id="Node000002" href="$mylibs__defs_8h.html" title="Заголочный файл для дефайнов библиотеки MyLibsGeneral." alt="" coords="13,112,115,139"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="139,66,93,104,89,100,136,62"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="140,112,204,139"/>

View File

@ -1 +1 @@
0acd416c6eac40e5c785db60f3cb0711
bb89a721db07d8400fff4b498938e680

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/gen_optimizer.h Source File</title>
<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>
@ -106,369 +106,368 @@ $(function(){initNavTree('gen__optimizer_8h_source.html','',''); });
<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">* @ingroup MYLIBS_DEFINES</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* @brief Библиотека для эволюционного подбора параметров</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* @details</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">Поддерживает:</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">- Любое количество параметров</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">- Генерацию новых параметров на основе лучших кандидатов</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">- Мутацию для поиска оптимальных параметров</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">- Несколько независимых оптимизаторов в одной программе</span></div>
<div class="line"><a id="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">Параметры для конфигурации:</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"> Если библиотека отключена @ref GEN_OPTIMIZATION_ENABLE, то вставляются </span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> заглушки, никак не влияющие на параметры и остальную программу</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">- @ref GEN_MAX_PARAMS - Максимальное количество параметров</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">- @ref GEN_MAX_CANDIDATES - Максимальное количество кандидатов для обучения</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">- (опционально) @ref GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">- (опционально) @ref GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">- (опционально) @ref ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"></span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">@par Пример использования:</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">@code</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">#include &quot;gen_optimizer.h&quot;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">#define N_PARAMS 4</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">#define N_CANDIDATES 100</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">#define N_BEST 10</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">#define MUTATION 0.1f</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">float params[N_PARAMS];</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">GenOptimizer_t optimizer;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment"></span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">// Формирование параметров</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">uint16_t param_u16 = 800;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">float param_f = 0.01f;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">uint8_t param_u8 = 40;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">int16_t param_i16 = 1600;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment"></span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">// Инициалиазция</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">GenOptimizer_Init(&amp;optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"></span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">// Шаг эволюции</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">GenOptimizer_Step(&amp;optimizer, params, loss);</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment"></span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">// Взятие следующих для эволюции параметров</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">@endcode</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">* @{ </span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">*****************************************************************************/</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#ifndef __GEN_OPTIMIZER_H_</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#define __GEN_OPTIMIZER_H_</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#include &quot;<a class="code" href="mylibs__defs_8h.html">mylibs_defs.h</a>&quot;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="preprocessor">#ifdef GEN_OPTIMIZATION_ENABLE</span><span class="comment"></span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment">/**</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @brief Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="foldopen" id="foldopen00073" data-start="" data-end="">
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e"> 73</a></span><span class="preprocessor">#define PARAM_SCALE(x, min_val, max_val) \</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">(((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))</span></div>
<div 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="foldopen" id="foldopen00072" data-start="" data-end="">
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e"> 72</a></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>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"></span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment">/**</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"> * @brief Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00079" data-start="" data-end="">
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3"> 79</a></span><span class="preprocessor">#define PARAM_UNSCALE(val, min_val, max_val) \</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="preprocessor">(((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))</span></div>
<div 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="foldopen" id="foldopen00078" data-start="" data-end="">
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3"> 78</a></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>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="preprocessor">#ifndef local_time</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="preprocessor">#define local_time() HAL_GetTick() </span><span class="comment">///&lt; Локальное время</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="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> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor">#ifndef GEN_MUTATION_MIN_PCT</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068"> 89</a></span><span class="preprocessor">#define GEN_MUTATION_MIN_PCT 10 </span><span class="comment">///&lt; Минимальная мутация (в процентах от Loss)</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#ifndef GEN_MUTATION_MAX_PCT</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd"> 92</a></span><span class="preprocessor">#define GEN_MUTATION_MAX_PCT 100 </span><span class="comment">///&lt; Максимальная мутация (в процентах от Loss)</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor">#ifndef ELOVLE_N_ELITE_CANDIDATE</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb"> 95</a></span><span class="preprocessor">#define ELOVLE_N_ELITE_CANDIDATE 2 </span><span class="comment">///&lt; Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"></span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">/**</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * @brief Структура эволюционного оптимизатора</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00102" data-start="{" data-end="};">
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html"> 102</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192"> 103</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a>; <span class="comment">///&lt; Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5"> 105</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a>; <span class="comment">///&lt; Количество параметров</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9"> 106</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>; <span class="comment">///&lt; Количество кандидатов в популяции</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9"> 107</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a>; <span class="comment">///&lt; Количество лучших, усредняемых</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c"> 108</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">mutation_amp</a>; <span class="comment">///&lt; Амплитуда мутации (0..1)</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc"> 110</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>; <span class="comment">///&lt; Индекс текущего кандидата</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c"> 111</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">gen_index</a>; <span class="comment">///&lt; Индекс популяции </span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">//INTERNAL</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1"> 114</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">gen_mut</a>; <span class="comment">///&lt; Амплитуда мутации у текущей популяции </span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73"> 116</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[<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="l00117" name="l00117"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df"> 117</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[<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="l00118" name="l00118"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12"> 118</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">sorted_idx</a>[<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="l00119" name="l00119"></a><span class="lineno"> 119</span>} <a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>;</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"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068"> 88</a></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"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd"> 91</a></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"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb"> 94</a></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="foldopen" id="foldopen00101" data-start="{" data-end="};">
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html"> 101</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192"> 102</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a>; <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"><a class="line" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5"> 104</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a>; <span class="comment">///&lt; Количество параметров</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9"> 105</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>; <span class="comment">///&lt; Количество кандидатов в популяции</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9"> 106</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a>; <span class="comment">///&lt; Количество лучших, усредняемых</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c"> 107</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">mutation_amp</a>; <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"><a class="line" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc"> 109</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>; <span class="comment">///&lt; Индекс текущего кандидата</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c"> 110</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">gen_index</a>; <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"><a class="line" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1"> 113</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">gen_mut</a>; <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"><a class="line" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa"> 115</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[<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"><a class="line" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947"> 116</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[<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"><a class="line" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320"> 117</a></span> uint16_t <a class="code hl_variable" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">sorted_idx</a>[<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>
<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> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"></span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment">/** </span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> * @cond GEN_INTERNAL</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> */</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment">// Вспомогательный указатель для сортировки</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="keyword">static</span> <a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a> *g_sort_opt; <span class="comment">// глобальный указатель на текущий оптимизатор</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">// функция условия сортировки</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="keyword">static</span> <span class="keywordtype">int</span> cmp_idx(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b) {</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">if</span> (g_sort_opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[*(<span class="keyword">const</span> uint16_t*)a] &lt; g_sort_opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[*(<span class="keyword">const</span> uint16_t*)b]) </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (g_sort_opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[*(<span class="keyword">const</span> uint16_t*)a] &gt; g_sort_opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[*(<span class="keyword">const</span> uint16_t*)b]) </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span>}<span class="comment"></span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment">/** @endcond */</span></div>
<div class="line"><a id="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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[*(<span class="keyword">const</span> uint16_t*)a] &lt; g_sort_opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[*(<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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[*(<span class="keyword">const</span> uint16_t*)a] &gt; g_sort_opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[*(<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> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"></span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">/**</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> * @brief Инициализация эволюционного оптимизатора.</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> * @param opt Указатель на структуру оптимизатора</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> * @param n_params Количество параметров в одном кандидате</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> * @param n_cand Количество кандидатов</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment"> * @param n_best Количество лучших, усредняемых</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="comment"> * @param mutation_amp Амплитуда мутации (в диапазоне 0.01.0)</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> * @param start_params Начальные параметры (в диапазоне 0.01.0)</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"> * @return 0 — если окей, </span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment"> * -1 — если ошибка</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00155" data-start="{" data-end="}">
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a"> 155</a></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a">GenOptimizer_Init</a>(<a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>* opt,</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> uint16_t n_params,</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> uint16_t n_cand,</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> uint16_t n_best,</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">float</span> mutation_amp,</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keywordtype">float</span>* start_params)</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span>{</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">if</span>((opt == NULL) || (start_params == NULL))</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">if</span>(n_params &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a>)</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a> = n_params;</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">if</span>(n_cand &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>)</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a> = n_cand;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">if</span>(n_best &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>/2)</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a> = n_best;</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="foldopen" id="foldopen00154" data-start="{" data-end="}">
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a"> 154</a></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a">GenOptimizer_Init</a>(<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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a> = 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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a> = 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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a> = 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> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">if</span>((mutation_amp &gt; 1) || (mutation_amp &lt; 0))</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">if</span>(mutation_amp &lt;= 0.001f)</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> mutation_amp = 0.001f; </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">mutation_amp</a> = mutation_amp;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> uint32_t seed = <a class="code hl_define" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>();</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor">#ifdef ADC1</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> seed += (ADC1-&gt;DR &amp; 0xFF);</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> srand(seed);</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_cand; i++) {</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">for</span> (uint16_t j = 0; j &lt; n_params; j++) {</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// Добавляем случайную мутацию вокруг стартового параметра</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordtype">float</span> base = start_params[j];</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordtype">float</span> inv_randmax = 1.0f / (float)RAND_MAX;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordtype">float</span> noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * mutation_amp;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[i][j] = base + noise;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[i][j] &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[i][j] = 0.0f;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[i][j] &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[i][j] = 1.0f;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> }</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[i] = 0.0f;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> }</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a> = 0;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">gen_index</a> = 0;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span>}</div>
<div 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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">mutation_amp</a> = 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___l_i_b_s___c_o_n_f_i_g.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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[i][j] &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[i][j] &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a> = 0;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">gen_index</a> = 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>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="comment"></span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment">/**</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment"> * @brief Один шаг эволюционного оптимизатора.</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment"> * @param opt Указатель на структуру оптимизатора</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment"> * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры)</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> * @param loss Loss текущего кандидата</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment"> * @return 0 — если окей, </span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment"> * -1 — если ошибка</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment"> * @details</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment"> * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата.</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment"> * Если накоплено n_cand кандидатов, генерируется новое поколение.</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment"> * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment"> *</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment"> * На выходе params содержит параметры следующего кандидата для измерений.</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"> * @note Функция использует глобальную внутреннюю переменную для сортировки.</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment"> * Надо убедится что только один экземпляр функции запущен в момент времени</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00225" data-start="{" data-end="}">
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628"> 225</a></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628">GenOptimizer_Step</a>(<a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>* opt,</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordtype">float</span>* params,</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordtype">float</span> loss)</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span>{</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">if</span>((opt == NULL) || (params == NULL))</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> uint16_t n_params = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a>; </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">if</span>(n_params &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">GEN_MAX_PARAMS</a>)</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> uint16_t n_cand = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>; </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">if</span>(n_cand &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>)</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">return</span> -1; </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> uint16_t n_best = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a>; </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">if</span>(n_best &gt; <a class="code hl_define" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">GEN_MAX_CANDIDATES</a>/2)</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> </div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordtype">float</span> mut = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">mutation_amp</a>;</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">if</span>((mut &gt; 1) ||(mut &lt; 0))</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="comment">// 1. Сохраняем loss текущего кандидата</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>] = loss;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>++;</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a> &gt;= n_cand) {</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="comment">// 2. Сортируем текущее поколение по loss</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keywordflow">for</span>(uint16_t i = 0; i &lt; opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>; i++)</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">sorted_idx</a>[i] = i;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> g_sort_opt = opt;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> qsort(opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">sorted_idx</a>, opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>, <span class="keyword">sizeof</span>(uint16_t), cmp_idx);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> g_sort_opt = NULL;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="comment">// --- Адаптивная мутация в зависимости от Loss ---</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordtype">float</span> best_loss = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">sorted_idx</a>[0]];</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordtype">float</span> worst_loss = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">sorted_idx</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a> - 1]];</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordtype">float</span> diff = worst_loss - best_loss;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordtype">float</span> sum_loss = 0.0f;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_cand; i++)</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> sum_loss += opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[i];</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordtype">float</span> avg_loss = sum_loss / (float)n_cand;</div>
<div class="line"><a id="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="foldopen" id="foldopen00224" data-start="{" data-end="}">
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"><a class="line" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628"> 224</a></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628">GenOptimizer_Step</a>(<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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a>; </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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>; </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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a>; </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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">mutation_amp</a>;</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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>] = loss;</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>++;</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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a> &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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>; i++)</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">sorted_idx</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">sorted_idx</a>, opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a>, <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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">sorted_idx</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">sorted_idx</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">n_cand</a> - 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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[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> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordtype">float</span> loss_ratio = (diff &gt; 0.0f) ? ((avg_loss - best_loss) / diff) : 0.5f;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordflow">if</span> (loss_ratio &lt; 0.0f) loss_ratio = 0.0f;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">if</span> (loss_ratio &gt; 1.0f) loss_ratio = 1.0f;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="comment">// Записываем стабильность популяции в структуру</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordflow">if</span>(diff &lt; 0.0f) diff = 0.0f;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">if</span>(diff &gt; 1.0f) diff = 1.0f;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordflow">if</span>(opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> = 0.0f;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordflow">if</span>(opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> = 1.0f;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordtype">float</span> mut_pct = <a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068">GEN_MUTATION_MIN_PCT</a> +</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> (<a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd">GEN_MUTATION_MAX_PCT</a> - <a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068">GEN_MUTATION_MIN_PCT</a>) * loss_ratio;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">float</span> adaptive_mut = mut * (mut_pct / 100.0f);</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">if</span> (adaptive_mut &lt; 0.0001f) adaptive_mut = 0.0001f;</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">gen_mut</a> = adaptive_mut;</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> </div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="comment">// 3. Генерируем новое поколение</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> uint16_t n_elite = <a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">ELOVLE_N_ELITE_CANDIDATE</a>;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">for</span> (uint16_t c = 0; c &lt; n_cand; c++) {</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keywordflow">if</span> (c &lt; n_elite) {</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_params; i++)</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[c][i] = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">sorted_idx</a>[c]][i];</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[c] = 0.0f;</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; n_params; i++) {</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordtype">float</span> inv_randmax = 1.0f / (float)RAND_MAX;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordtype">float</span> noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * adaptive_mut;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> uint16_t parent = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">sorted_idx</a>[rand() % opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a>];</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[c][i] = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[parent][i] + noise;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[c][i] &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[c][i] = 0.0f;</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">if</span> (opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[c][i] &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[c][i] = 1.0f;</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> }</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">loss</a>[c] = 0.0f;</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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> = (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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> = 0.0f;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordflow">if</span>(opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">stability</a> = 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 = <a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068">GEN_MUTATION_MIN_PCT</a> +</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> (<a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd">GEN_MUTATION_MAX_PCT</a> - <a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068">GEN_MUTATION_MIN_PCT</a>) * 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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">gen_mut</a> = 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 = <a class="code hl_define" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">ELOVLE_N_ELITE_CANDIDATE</a>;</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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[c][i] = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">sorted_idx</a>[c]][i];</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">sorted_idx</a>[rand() % opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">n_best</a>];</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[c][i] = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[c][i] &lt; 0.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[c][i] &gt; 1.0f) opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">loss</a>[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> }</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a> = 0;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">gen_index</a>++;</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> }</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> </div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="comment">// 4. Возвращаем параметры следующего кандидата</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a>; i++)</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> params[i] = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">candidates</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>][i];</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span>}</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a> = 0;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">gen_index</a>++;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> }</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> </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;<a class="code hl_variable" href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">n_params</a>; i++)</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> params[i] = opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">candidates</a>[opt-&gt;<a class="code hl_variable" href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">cand_index</a>][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>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="preprocessor">#else </span><span class="comment">// GEN_OPTIMIZATION_ENABLE</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="comment">//заглушки</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> uint16_t n_params; </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> uint16_t n_cand; </div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> uint16_t n_best; </div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">float</span> mutation_amp; </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordtype">float</span> loss[0]; </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordtype">float</span> candidates[0][0]; </div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span>} <a class="code hl_struct" href="struct_gen_optimizer__t.html">GenOptimizer_t</a>;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</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="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="preprocessor">#define GenOptimizer_Step(opt, params, LossFunc)</span></div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="preprocessor">#define PARAM_SCALE(x, min_val, max_val) (x)</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span><span class="preprocessor">#define PARAM_UNSCALE(val, min_val, max_val) (val)</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span><span class="preprocessor">#endif </span><span class="comment">// GEN_OPTIMIZATION_ENABLE</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> </div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span><span class="preprocessor">#endif </span><span class="comment">// __GEN_OPTIMIZER_H_</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span><span class="comment"></span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="comment">/** GEN_OPTIMIZER</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span><span class="comment"> */</span></div>
<div class="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="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</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 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___g_e_n___o_p_t_i_m_i_z_e_r_html_ga2db1df46b4082ad9280ef4344fdf4e8a"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a">GenOptimizer_Init</a></div><div class="ttdeci">static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)</div><div class="ttdoc">Инициализация эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="#l00155">gen_optimizer.h:155</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga38607e23d9234524bc7de5869b15b8eb"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">ELOVLE_N_ELITE_CANDIDATE</a></div><div class="ttdeci">#define ELOVLE_N_ELITE_CANDIDATE</div><div class="ttdoc">Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)</div><div class="ttdef"><b>Definition</b> <a href="#l00095">gen_optimizer.h:95</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga3db7bdf57549722427e1e72dcaa87068"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068">GEN_MUTATION_MIN_PCT</a></div><div class="ttdeci">#define GEN_MUTATION_MIN_PCT</div><div class="ttdoc">Минимальная мутация (в процентах от Loss)</div><div class="ttdef"><b>Definition</b> <a href="#l00089">gen_optimizer.h:89</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga48dca8f0a0c9b96d02236ef76ac827fd"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd">GEN_MUTATION_MAX_PCT</a></div><div class="ttdeci">#define GEN_MUTATION_MAX_PCT</div><div class="ttdoc">Максимальная мутация (в процентах от Loss)</div><div class="ttdef"><b>Definition</b> <a href="#l00092">gen_optimizer.h:92</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_gaa9a4c4f43f7beb926c85bd4817ebd628"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628">GenOptimizer_Step</a></div><div class="ttdeci">static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)</div><div class="ttdoc">Один шаг эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="#l00225">gen_optimizer.h:225</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga2db1df46b4082ad9280ef4344fdf4e8a"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a">GenOptimizer_Init</a></div><div class="ttdeci">static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)</div><div class="ttdoc">Инициализация эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="#l00154">gen_optimizer.h:154</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga38607e23d9234524bc7de5869b15b8eb"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">ELOVLE_N_ELITE_CANDIDATE</a></div><div class="ttdeci">#define ELOVLE_N_ELITE_CANDIDATE</div><div class="ttdoc">Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)</div><div class="ttdef"><b>Definition</b> <a href="#l00094">gen_optimizer.h:94</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga3db7bdf57549722427e1e72dcaa87068"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068">GEN_MUTATION_MIN_PCT</a></div><div class="ttdeci">#define GEN_MUTATION_MIN_PCT</div><div class="ttdoc">Минимальная мутация (в процентах от Loss)</div><div class="ttdef"><b>Definition</b> <a href="#l00088">gen_optimizer.h:88</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga48dca8f0a0c9b96d02236ef76ac827fd"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd">GEN_MUTATION_MAX_PCT</a></div><div class="ttdeci">#define GEN_MUTATION_MAX_PCT</div><div class="ttdoc">Максимальная мутация (в процентах от Loss)</div><div class="ttdef"><b>Definition</b> <a href="#l00091">gen_optimizer.h:91</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_gaa9a4c4f43f7beb926c85bd4817ebd628"><div class="ttname"><a href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628">GenOptimizer_Step</a></div><div class="ttdeci">static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)</div><div class="ttdoc">Один шаг эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="#l00224">gen_optimizer.h:224</a></div></div>
<div class="ttc" id="agroup___l_i_b_s___c_o_n_f_i_g_html_ga9c853b02c22f26023c34d1d404b6d653"><div class="ttname"><a href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a></div><div class="ttdeci">#define local_time()</div><div class="ttdoc">Локальное время</div><div class="ttdef"><b>Definition</b> <a href="mylibs__config_8h_source.html#l00097">mylibs_config.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="ttdoc">Структура эволюционного оптимизатора</div><div class="ttdef"><b>Definition</b> <a href="#l00102">gen_optimizer.h:102</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a04a72c1a13e17581e84eaaf3d245bbfc"><div class="ttname"><a href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">GenOptimizer_t::cand_index</a></div><div class="ttdeci">uint16_t cand_index</div><div class="ttdoc">Индекс текущего кандидата</div><div class="ttdef"><b>Definition</b> <a href="#l00110">gen_optimizer.h:110</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a2c9a50ea7d975b9bc22a67e453ab83df"><div class="ttname"><a href="struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df">GenOptimizer_t::candidates</a></div><div class="ttdeci">float candidates[100][20]</div><div class="ttdoc">Параметры кандидатов</div><div class="ttdef"><b>Definition</b> <a href="#l00117">gen_optimizer.h:117</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a8201f1eede36a2c04ec7b4caac7465c9"><div class="ttname"><a href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">GenOptimizer_t::n_best</a></div><div class="ttdeci">uint16_t n_best</div><div class="ttdoc">Количество лучших, усредняемых</div><div class="ttdef"><b>Definition</b> <a href="#l00107">gen_optimizer.h:107</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a8b5066935d99f2fc7ebb94cc3652fc73"><div class="ttname"><a href="struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73">GenOptimizer_t::loss</a></div><div class="ttdeci">float loss[100]</div><div class="ttdoc">Loss для каждого кандидата</div><div class="ttdef"><b>Definition</b> <a href="#l00116">gen_optimizer.h:116</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a8f226c85e9bb034cb811aa0366bb191c"><div class="ttname"><a href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">GenOptimizer_t::gen_index</a></div><div class="ttdeci">uint16_t gen_index</div><div class="ttdoc">Индекс популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00111">gen_optimizer.h:111</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a9e20d2f6f39a5147e6dbac46baca73a9"><div class="ttname"><a href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">GenOptimizer_t::n_cand</a></div><div class="ttdeci">uint16_t n_cand</div><div class="ttdoc">Количество кандидатов в популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00106">gen_optimizer.h:106</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_abe0aacea949fbe93e5d4c002e37d7192"><div class="ttname"><a href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">GenOptimizer_t::stability</a></div><div class="ttdeci">float stability</div><div class="ttdoc">Коэффициент насколько стабильная популяция (0..1)(n_cand)</div><div class="ttdef"><b>Definition</b> <a href="#l00103">gen_optimizer.h:103</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_acfeb93ef4823e09473ddba52fae9a6b1"><div class="ttname"><a href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">GenOptimizer_t::gen_mut</a></div><div class="ttdeci">float gen_mut</div><div class="ttdoc">Амплитуда мутации у текущей популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00114">gen_optimizer.h:114</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_ad37161efa27ef1390d1f7e6ee2f79b12"><div class="ttname"><a href="struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12">GenOptimizer_t::sorted_idx</a></div><div class="ttdeci">uint16_t sorted_idx[100]</div><div class="ttdoc">Индексы отсортированных кандидатов</div><div class="ttdef"><b>Definition</b> <a href="#l00118">gen_optimizer.h:118</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c"><div class="ttname"><a href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">GenOptimizer_t::mutation_amp</a></div><div class="ttdeci">float mutation_amp</div><div class="ttdoc">Амплитуда мутации (0..1)</div><div class="ttdef"><b>Definition</b> <a href="#l00108">gen_optimizer.h:108</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_afe598a90024a8aa628dd16f3a2b38eb5"><div class="ttname"><a href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">GenOptimizer_t::n_params</a></div><div class="ttdeci">uint16_t n_params</div><div class="ttdoc">Количество параметров</div><div class="ttdef"><b>Definition</b> <a href="#l00105">gen_optimizer.h:105</a></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="ttdoc">Структура эволюционного оптимизатора</div><div class="ttdef"><b>Definition</b> <a href="#l00101">gen_optimizer.h:101</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a04a72c1a13e17581e84eaaf3d245bbfc"><div class="ttname"><a href="struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc">GenOptimizer_t::cand_index</a></div><div class="ttdeci">uint16_t cand_index</div><div class="ttdoc">Индекс текущего кандидата</div><div class="ttdef"><b>Definition</b> <a href="#l00109">gen_optimizer.h:109</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a473a62c538392b7735d660f303377320"><div class="ttname"><a href="struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320">GenOptimizer_t::sorted_idx</a></div><div class="ttdeci">uint16_t sorted_idx[GEN_MAX_CANDIDATES]</div><div class="ttdoc">Индексы отсортированных кандидатов</div><div class="ttdef"><b>Definition</b> <a href="#l00117">gen_optimizer.h:117</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a8201f1eede36a2c04ec7b4caac7465c9"><div class="ttname"><a href="struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9">GenOptimizer_t::n_best</a></div><div class="ttdeci">uint16_t n_best</div><div class="ttdoc">Количество лучших, усредняемых</div><div class="ttdef"><b>Definition</b> <a href="#l00106">gen_optimizer.h:106</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a8f226c85e9bb034cb811aa0366bb191c"><div class="ttname"><a href="struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c">GenOptimizer_t::gen_index</a></div><div class="ttdeci">uint16_t gen_index</div><div class="ttdoc">Индекс популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00110">gen_optimizer.h:110</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_a9e20d2f6f39a5147e6dbac46baca73a9"><div class="ttname"><a href="struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9">GenOptimizer_t::n_cand</a></div><div class="ttdeci">uint16_t n_cand</div><div class="ttdoc">Количество кандидатов в популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00105">gen_optimizer.h:105</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_abe0aacea949fbe93e5d4c002e37d7192"><div class="ttname"><a href="struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192">GenOptimizer_t::stability</a></div><div class="ttdeci">float stability</div><div class="ttdoc">Коэффициент насколько стабильная популяция (0..1)(n_cand)</div><div class="ttdef"><b>Definition</b> <a href="#l00102">gen_optimizer.h:102</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_acfeb93ef4823e09473ddba52fae9a6b1"><div class="ttname"><a href="struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1">GenOptimizer_t::gen_mut</a></div><div class="ttdeci">float gen_mut</div><div class="ttdoc">Амплитуда мутации у текущей популяции</div><div class="ttdef"><b>Definition</b> <a href="#l00113">gen_optimizer.h:113</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c"><div class="ttname"><a href="struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c">GenOptimizer_t::mutation_amp</a></div><div class="ttdeci">float mutation_amp</div><div class="ttdoc">Амплитуда мутации (0..1)</div><div class="ttdef"><b>Definition</b> <a href="#l00107">gen_optimizer.h:107</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_ae74a211c5ab6d58ffc147bb65e8fdafa"><div class="ttname"><a href="struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa">GenOptimizer_t::loss</a></div><div class="ttdeci">float loss[GEN_MAX_CANDIDATES]</div><div class="ttdoc">Loss для каждого кандидата</div><div class="ttdef"><b>Definition</b> <a href="#l00115">gen_optimizer.h:115</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_af0161e7c0b6ab691b8b59d522808f947"><div class="ttname"><a href="struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947">GenOptimizer_t::candidates</a></div><div class="ttdeci">float candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]</div><div class="ttdoc">Параметры кандидатов</div><div class="ttdef"><b>Definition</b> <a href="#l00116">gen_optimizer.h:116</a></div></div>
<div class="ttc" id="astruct_gen_optimizer__t_html_afe598a90024a8aa628dd16f3a2b38eb5"><div class="ttname"><a href="struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5">GenOptimizer_t::n_params</a></div><div class="ttdeci">uint16_t n_params</div><div class="ttdoc">Количество параметров</div><div class="ttdef"><b>Definition</b> <a href="#l00104">gen_optimizer.h:104</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->

View File

@ -103,6 +103,161 @@ $(function(){initNavTree('globals.html','',''); });
<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>BENCH_TIME_ENABLE&#160;:&#160;<a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9">mylibs_config.h</a></li>
<li>BENCH_TIME_MAX_CHANNELS&#160;:&#160;<a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52">mylibs_config.h</a></li>
<li>BenchTime_End()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439">bench_time.h</a></li>
<li>BenchTime_GetAverage()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8">bench_time.h</a></li>
<li>BenchTime_GetCount()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a">bench_time.h</a></li>
<li>BenchTime_GetLast()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed">bench_time.h</a></li>
<li>BenchTime_GetMax()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e">bench_time.h</a></li>
<li>BenchTime_GetMin()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705">bench_time.h</a></li>
<li>BenchTime_Init()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054">bench_time.h</a></li>
<li>BenchTime_ResetStats()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35">bench_time.h</a></li>
<li>BenchTime_Start()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349">bench_time.h</a></li>
<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_e" name="index_e"></a>- e -</h3><ul>
<li>ELOVLE_N_ELITE_CANDIDATE&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb">gen_optimizer.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_f" name="index_f"></a>- f -</h3><ul>
<li>FREERTOS_DELAY&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151">mylibs_config.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>GEN_MAX_CANDIDATES&#160;:&#160;<a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869">mylibs_config.h</a></li>
<li>GEN_MAX_PARAMS&#160;:&#160;<a class="el" href="group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab">mylibs_config.h</a></li>
<li>GEN_MUTATION_MAX_PCT&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd">gen_optimizer.h</a></li>
<li>GEN_MUTATION_MIN_PCT&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068">gen_optimizer.h</a></li>
<li>GEN_OPTIMIZATION_ENABLE&#160;:&#160;<a class="el" href="group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c">mylibs_config.h</a></li>
<li>GenOptimizer_Init()&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a">gen_optimizer.h</a></li>
<li>GenOptimizer_Step()&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628">gen_optimizer.h</a></li>
<li>GPIO_TRACE_ENABLE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b">mylibs_config.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>HARDFAULT_SERIAL_TRACE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6">mylibs_config.h</a></li>
<li>hbt&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d">bench_time.h</a></li>
<li>HF_CheckRecovered()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f">trace.h</a></li>
<li>HF_FLASH_ADDR&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63">mylibs_config.h</a></li>
<li>HF_HandleFault()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7">trace.h</a></li>
<li>HF_RAM_END&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051">mylibs_config.h</a></li>
<li>HF_RTT_TAG_BASE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313">mylibs_config.h</a></li>
<li>HF_RTT_TAIL_SIZE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca">mylibs_config.h</a></li>
<li>HF_STACK_DUMP_WORDS&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b">mylibs_config.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>
<li>INCLUDE_BIT_ACCESS_LIB&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be">mylibs_config.h</a></li>
<li>INCLUDE_GEN_OPTIMIZER&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692">mylibs_config.h</a></li>
<li>INCLUDE_GENERAL_PERIPH_LIBS&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281">mylibs_config.h</a></li>
<li>INCLUDE_TRACE_LIB&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7">mylibs_config.h</a></li>
<li>INCLUDE_TRACKERS_LIB&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32">mylibs_config.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___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">mylibs_config.h</a></li>
<li>LOG_LEVEL&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05">mylibs_config.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_p" name="index_p"></a>- p -</h3><ul>
<li>PARAM_SCALE&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e">gen_optimizer.h</a></li>
<li>PARAM_UNSCALE&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3">gen_optimizer.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_FLASH_BUFFER_SIZE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga501312b24e322de4dd6755ad442f0ba3">mylibs_config.h</a></li>
<li>RTT_FLASH_SECTOR&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga3bc1b76864e1d32cbdd174d4caae7724">mylibs_config.h</a></li>
<li>RTT_FLASH_SECTOR_END&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d">mylibs_config.h</a></li>
<li>RTT_FLASH_SECTOR_START&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga8e56f75d3ab8a89ddde1404ae23c3297">mylibs_config.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>
<li>RTT_TRACE_ENABLE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8">mylibs_config.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>SERIAL_TRACE_ENABLE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6">mylibs_config.h</a></li>
<li>SWO_TRACE_ENABLE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336">mylibs_config.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>TRACKERS_ENABLE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496">mylibs_config.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 -->

View File

@ -148,8 +148,6 @@ $(function(){initNavTree('globals_defs.html','',''); });
<h3 class="doxsection"><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>HAL_SPI_MODULE_ENABLED&#160;:&#160;<a class="el" href="group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c">general_spi.h</a></li>
<li>HAL_UART_MODULE_ENABLED&#160;:&#160;<a class="el" href="group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89">general_uart.h</a></li>
<li>HARDFAULT_SERIAL_TRACE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6">mylibs_config.h</a></li>
<li>HF_FLASH_ADDR&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63">mylibs_config.h</a></li>
<li>HF_RAM_END&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051">mylibs_config.h</a></li>
@ -170,10 +168,7 @@ $(function(){initNavTree('globals_defs.html','',''); });
<h3 class="doxsection"><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>LED_OFF&#160;:&#160;<a class="el" href="group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29">general_gpio.h</a></li>
<li>LED_ON&#160;:&#160;<a class="el" href="group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25">general_gpio.h</a></li>
<li>LED_PWM_TICKS&#160;:&#160;<a class="el" href="group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023">general_gpio.h</a></li>
<li>local_time&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">mylibs_config.h</a>, <a class="el" href="group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653">general_gpio.h</a></li>
<li>local_time&#160;:&#160;<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">mylibs_config.h</a></li>
<li>LOG_LEVEL&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05">mylibs_config.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>
@ -211,8 +206,6 @@ $(function(){initNavTree('globals_defs.html','',''); });
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>SERIAL_TRACE_ENABLE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6">mylibs_config.h</a></li>
<li>SW_OFF&#160;:&#160;<a class="el" href="group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067">general_gpio.h</a></li>
<li>SW_ON&#160;:&#160;<a class="el" href="group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9">general_gpio.h</a></li>
<li>SWO_TRACE_ENABLE&#160;:&#160;<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336">mylibs_config.h</a></li>
</ul>
@ -246,29 +239,6 @@ $(function(){initNavTree('globals_defs.html','',''); });
<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>
<li>USE_SPI1&#160;:&#160;<a class="el" href="group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf">general_spi.h</a></li>
<li>USE_SPI2&#160;:&#160;<a class="el" href="group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b">general_spi.h</a></li>
<li>USE_SPI3&#160;:&#160;<a class="el" href="group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc">general_spi.h</a></li>
<li>USE_TIM1&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga54a98c21365e0bc45b81555d2b101f2b">general_tim.h</a></li>
<li>USE_TIM10&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga98c0691052d1da2c4053dd3586ff7ce9">general_tim.h</a></li>
<li>USE_TIM11&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga176c97f06ebcf14e06e5c5bdbfac44c2">general_tim.h</a></li>
<li>USE_TIM12&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga4e2b0e6cdf9eed74581b575c3fd9516b">general_tim.h</a></li>
<li>USE_TIM13&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac">general_tim.h</a></li>
<li>USE_TIM14&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c">general_tim.h</a></li>
<li>USE_TIM2&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga72535a44955b43cbcd56e25039ab32eb">general_tim.h</a></li>
<li>USE_TIM3&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga5b5685a43273b6e37242a4aba3ee0617">general_tim.h</a></li>
<li>USE_TIM4&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga1493b39c9214501180b81b4c892f9be0">general_tim.h</a></li>
<li>USE_TIM5&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga252f4fba93fc265110e83760e0590af3">general_tim.h</a></li>
<li>USE_TIM6&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga8fe31b98160627d19038222910be3f46">general_tim.h</a></li>
<li>USE_TIM7&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga7cdc54cc8cbbb6e9f60001f1e3e6ec67">general_tim.h</a></li>
<li>USE_TIM8&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#ga28ba33d7c6bf22821dafa5bcee4854be">general_tim.h</a></li>
<li>USE_TIM9&#160;:&#160;<a class="el" href="group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a">general_tim.h</a></li>
<li>USE_UART4&#160;:&#160;<a class="el" href="group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7">general_uart.h</a></li>
<li>USE_UART5&#160;:&#160;<a class="el" href="group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340">general_uart.h</a></li>
<li>USE_USART1&#160;:&#160;<a class="el" href="group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b">general_uart.h</a></li>
<li>USE_USART2&#160;:&#160;<a class="el" href="group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d">general_uart.h</a></li>
<li>USE_USART3&#160;:&#160;<a class="el" href="group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976">general_uart.h</a></li>
<li>USE_USART6&#160;:&#160;<a class="el" href="group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868">general_uart.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->

View File

@ -97,9 +97,7 @@ $(function(){initNavTree('globals_func.html','',''); });
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented functions with links to the documentation:</div>
<h3 class="doxsection"><a id="index_b" name="index_b"></a>- b -</h3><ul>
<div class="textblock">Here is a list of all documented functions with links to the documentation:</div><ul>
<li>BenchTime_End()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439">bench_time.h</a></li>
<li>BenchTime_GetAverage()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8">bench_time.h</a></li>
<li>BenchTime_GetCount()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a">bench_time.h</a></li>
@ -109,71 +107,15 @@ $(function(){initNavTree('globals_func.html','',''); });
<li>BenchTime_Init()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054">bench_time.h</a></li>
<li>BenchTime_ResetStats()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35">bench_time.h</a></li>
<li>BenchTime_Start()&#160;:&#160;<a class="el" href="group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349">bench_time.h</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>GenOptimizer_Init()&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a">gen_optimizer.h</a></li>
<li>GenOptimizer_Step()&#160;:&#160;<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628">gen_optimizer.h</a></li>
<li>GPIO_Clock_Enable()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6">general_gpio.c</a></li>
<li>GPIO_LED_Blink_Start()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9">general_gpio.c</a></li>
<li>GPIO_LED_Dynamic_Handle()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2">general_gpio.c</a></li>
<li>GPIO_LED_Fading_Start()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a">general_gpio.c</a></li>
<li>GPIO_LED_Init()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084">general_gpio.c</a></li>
<li>GPIO_LED_Off()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357">general_gpio.c</a></li>
<li>GPIO_LED_On()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c">general_gpio.c</a></li>
<li>GPIO_LED_Set()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2">general_gpio.c</a></li>
<li>GPIO_Read_Switch()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70">general_gpio.c</a></li>
<li>GPIO_Switch_Init()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7">general_gpio.h</a>, <a class="el" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7">general_gpio.c</a></li>
</ul>
<h3 class="doxsection"><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>HF_CheckRecovered()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f">trace.h</a></li>
<li>HF_HandleFault()&#160;:&#160;<a class="el" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7">trace.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_s" name="index_s"></a>- s -</h3><ul>
<li>SPI_Base_Init()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">general_spi.h</a>, <a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">general_spi.c</a></li>
<li>SPI_Check_Init_Struct()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">general_spi.h</a>, <a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f">general_spi.c</a></li>
<li>SPI_GPIO_Init()&#160;:&#160;<a class="el" href="general__spi_8c.html#ae80d21e5cab86571709a2619442733b5">general_spi.c</a></li>
<li>SPI_MspDeInit()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">general_spi.h</a>, <a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4">general_spi.c</a></li>
<li>SPI_MspInit()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">general_spi.h</a>, <a class="el" href="group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac">general_spi.c</a></li>
</ul>
<h3 class="doxsection"><a id="index_t" name="index_t"></a>- t -</h3><ul>
<li>TIM_Base_Init()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec">general_tim.c</a></li>
<li>TIM_Base_MspDeInit()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115">general_tim.c</a></li>
<li>TIM_Base_MspInit()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931">general_tim.c</a></li>
<li>TIM_Delay()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e">general_tim.c</a></li>
<li>TIM_Delay_NonBlocking()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b">general_tim.c</a></li>
<li>TIM_Delay_Start()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834">general_tim.c</a></li>
<li>TIM_Encoder_Init()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc">general_tim.c</a></li>
<li>TIM_Encoder_Read()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501">general_tim.c</a></li>
<li>TIM_Encoder_ReadSwitch()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761">general_tim.c</a></li>
<li>TIM_OC_Comparator_Init()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889">general_tim.c</a></li>
<li>TIM_Output_PWM_Init()&#160;:&#160;<a class="el" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6">general_tim.h</a>, <a class="el" href="group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6">general_tim.c</a></li>
</ul>
<h3 class="doxsection"><a id="index_u" name="index_u"></a>- u -</h3><ul>
<li>UART_Base_Init()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154">general_uart.h</a>, <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154">general_uart.c</a></li>
<li>UART_Check_Init_Struct()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a">general_uart.h</a>, <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a">general_uart.c</a></li>
<li>UART_DMA_Init()&#160;:&#160;<a class="el" href="general__uart_8c.html#ad82d0cbd19151675135fd75dad315d05">general_uart.c</a></li>
<li>UART_GPIO_Init()&#160;:&#160;<a class="el" href="general__uart_8c.html#a3abae05bbde5f3b402bf18ca13dc6a0b">general_uart.c</a></li>
<li>UART_MspDeInit()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc">general_uart.h</a>, <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc">general_uart.c</a></li>
<li>UART_MspInit()&#160;:&#160;<a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb">general_uart.h</a>, <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb">general_uart.c</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___b_e_n_c_h___t_i_m_e.html','',''); });
</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_f_i_n_e_s.html">General Tools</a></div></div></div>
<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">
@ -109,8 +109,8 @@ $(function(){initNavTree('group___b_e_n_c_h___t_i_m_e.html','',''); });
<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="154,5,287,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
<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">
@ -202,8 +202,8 @@ Variables</h2></td></tr>
<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 class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gabb7a665a9603ea2e4dbc4432e8cb6054"><div class="ttname"><a href="#gabb7a665a9603ea2e4dbc4432e8cb6054">BenchTime_Init</a></div><div class="ttdeci">static void BenchTime_Init(void)</div><div class="ttdoc">Инициализация системы измерения времени</div><div class="ttdef"><b>Definition</b> <a href="bench__time_8h_source.html#l00111">bench_time.h:111</a></div></div>
</div><!-- fragment --> </dd></dl>
<div class="ttc" id="agroup___b_e_n_c_h___t_i_m_e_html_gabb7a665a9603ea2e4dbc4432e8cb6054"><div class="ttname"><a href="#gabb7a665a9603ea2e4dbc4432e8cb6054">BenchTime_Init</a></div><div class="ttdeci">static void BenchTime_Init(void)</div><div class="ttdoc">Инициализация системы измерения времени</div><div class="ttdef"><b>Definition</b> <a href="bench__time_8h_source.html#l00110">bench_time.h:110</a></div></div>
</div><!-- fragment --></dd></dl>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="gabb7a665a9603ea2e4dbc4432e8cb6054" name="gabb7a665a9603ea2e4dbc4432e8cb6054"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabb7a665a9603ea2e4dbc4432e8cb6054">&#9670;&#160;</a></span>BenchTime_Init()</h2>
@ -230,7 +230,7 @@ Variables</h2></td></tr>
<p>Инициализация системы измерения времени </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00111">111</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00110">110</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -277,7 +277,7 @@ Variables</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 - успех, 0 - ошибка </dd></dl>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00131">131</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00130">130</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -318,7 +318,7 @@ Variables</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Измеренное время в тиках, 0 - в случае ошибки </dd></dl>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00147">147</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00146">146</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -347,7 +347,7 @@ Variables</h2></td></tr>
<p>Получение минимального времени измерения </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00189">189</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00188">188</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -376,7 +376,7 @@ Variables</h2></td></tr>
<p>Получение максимального времени измерения </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00197">197</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00196">196</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -405,7 +405,7 @@ Variables</h2></td></tr>
<p>Получение среднего времени измерения </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00205">205</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00204">204</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -434,7 +434,7 @@ Variables</h2></td></tr>
<p>Получение количества измерений </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00215">215</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00214">214</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -463,7 +463,7 @@ Variables</h2></td></tr>
<p>Получение последнего измеренного времени </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00223">223</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00222">222</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -492,7 +492,7 @@ Variables</h2></td></tr>
<p>Сброс статистики для канала </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00231">231</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00230">230</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>
@ -519,7 +519,7 @@ Variables</h2></td></tr>
<p>Внутренний экземпляр </p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00106">106</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="bench__time_8h_source.html#l00105">105</a> of file <a class="el" href="bench__time_8h_source.html">bench_time.h</a>.</p>
</div>
</div>

View File

@ -14,7 +14,7 @@ var group___b_e_n_c_h___t_i_m_e =
[ "stats", "struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c", null ]
] ],
[ "BenchTime_t", "struct_bench_time__t.html", [
[ "channels", "struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6", null ]
[ "channels", "struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34", null ]
] ],
[ "BenchTime_Init", "group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054", null ],
[ "BenchTime_Start", "group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349", null ],

View File

@ -1,4 +1,4 @@
<map id="Time measurement" name="Time measurement">
<area shape="rect" id="Node000001" title="Библиотека для измерения времени/тиков между событиями" alt="" coords="154,5,287,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
<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 +1 @@
15b595630eeca30c57a018017bc540ba
6705808550d728844cfae44f809a322b

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html','','
</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___d_e_f_i_n_e_s.html">General Tools</a></div></div></div>
<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">
@ -110,7 +110,7 @@ $(function(){initNavTree('group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html','','
<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___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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">

View File

@ -1,4 +1,4 @@
<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___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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 +1 @@
56d577ae2ce4b45bacd111b61cb7554f
b15e6059b024c1bd57db4f03c04931dd

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___d_e_l_a_y_s___d_e_f_i_n_e_s.html','',''); });
</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___d_e_f_i_n_e_s.html">General Tools</a></div></div></div>
<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">
@ -110,7 +110,7 @@ $(function(){initNavTree('group___d_e_l_a_y_s___d_e_f_i_n_e_s.html','',''); });
<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___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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">
@ -159,7 +159,7 @@ Macros</h2></td></tr>
</dl>
<dl class="section note"><dt>Note</dt><dd>Использует задержку через <a class="el" href="group___l_i_b_s___c_o_n_f_i_g.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#l00080">80</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00095">95</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
@ -190,7 +190,7 @@ Macros</h2></td></tr>
<p>После вызова этого макроса переменная <em>pvar</em> содержит текущее количество миллисекунд с момента запуска системы (<a class="el" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>).</p>
<p>Используется для реализации неблокирующих задержек. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00098">98</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</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>
@ -232,9 +232,9 @@ Macros</h2></td></tr>
<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#l00115">mylibs_defs.h:115</a></div></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#l00115">115</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
<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>
@ -276,9 +276,9 @@ Macros</h2></td></tr>
<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#l00132">mylibs_defs.h:132</a></div></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#l00132">132</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
<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>

View File

@ -1,4 +1,4 @@
<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___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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 +1 @@
c52cb47284eaa7377e976a0f04f0002e
9bb1fbf15e0d245a5219c269dfcf886b

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html
</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___d_e_f_i_n_e_s.html">General Tools</a></div></div></div>
<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">
@ -110,7 +110,7 @@ $(function(){initNavTree('group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html
<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___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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">
@ -155,7 +155,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>Error_Handler</b> (vo
</div><!-- fragment -->
<p>Error_Handler который будет вызыватся в библиотеке </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00031">31</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</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>
@ -177,7 +177,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>Error_Handler</b> (vo
</div><!-- fragment -->
<p>Проверить один указатель на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00038">38</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</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>
@ -203,7 +203,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>Error_Handler</b> (vo
</div><!-- fragment -->
<p>Проверить два указателя на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00041">41</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</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>
@ -234,7 +234,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>Error_Handler</b> (vo
</div><!-- fragment -->
<p>Проверить три указателя на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00044">44</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</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>
@ -270,7 +270,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>Error_Handler</b> (vo
</div><!-- fragment -->
<p>Проверить четыре указателя на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00047">47</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</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>
@ -311,7 +311,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>Error_Handler</b> (vo
</div><!-- fragment -->
<p>Проверить пять указателей на NULL. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00050">50</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</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>

View File

@ -1,4 +1,4 @@
<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___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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 +1 @@
d5db8daac36cb4cc1a3fac830c6bfd88
48759eae8e94aea68fae58ca8d91b5d1

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___g_e_n___o_p_t_i_m_i_z_e_r.html','',''); });
</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_f_i_n_e_s.html">General Tools</a></div></div></div>
<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">
@ -109,8 +109,8 @@ $(function(){initNavTree('group___g_e_n___o_p_t_i_m_i_z_e_r.html','',''); });
<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="154,5,277,32"/>
<area shape="rect" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
<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">
@ -186,12 +186,12 @@ Functions</h2></td></tr>
<div class="line">param_u8 = <a class="code hl_define" href="#gaa1d5510fe5f0bd989473f3ebe324bde3">PARAM_UNSCALE</a>(params[2], 10.0f, 100.0f);</div>
<div class="line">param_i16 = <a class="code hl_define" href="#gaa1d5510fe5f0bd989473f3ebe324bde3">PARAM_UNSCALE</a>(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="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga2db1df46b4082ad9280ef4344fdf4e8a"><div class="ttname"><a href="#ga2db1df46b4082ad9280ef4344fdf4e8a">GenOptimizer_Init</a></div><div class="ttdeci">static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)</div><div class="ttdoc">Инициализация эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00155">gen_optimizer.h:155</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga83abbcabaff9111c03ae2475ee72ea3e"><div class="ttname"><a href="#ga83abbcabaff9111c03ae2475ee72ea3e">PARAM_SCALE</a></div><div class="ttdeci">#define PARAM_SCALE(x, min_val, max_val)</div><div class="ttdoc">Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00073">gen_optimizer.h:73</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_gaa1d5510fe5f0bd989473f3ebe324bde3"><div class="ttname"><a href="#gaa1d5510fe5f0bd989473f3ebe324bde3">PARAM_UNSCALE</a></div><div class="ttdeci">#define PARAM_UNSCALE(val, min_val, max_val)</div><div class="ttdoc">Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00079">gen_optimizer.h:79</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_gaa9a4c4f43f7beb926c85bd4817ebd628"><div class="ttname"><a href="#gaa9a4c4f43f7beb926c85bd4817ebd628">GenOptimizer_Step</a></div><div class="ttdeci">static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)</div><div class="ttdoc">Один шаг эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00225">gen_optimizer.h:225</a></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="ttdoc">Структура эволюционного оптимизатора</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00102">gen_optimizer.h:102</a></div></div>
</div><!-- fragment --> </dd></dl>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga2db1df46b4082ad9280ef4344fdf4e8a"><div class="ttname"><a href="#ga2db1df46b4082ad9280ef4344fdf4e8a">GenOptimizer_Init</a></div><div class="ttdeci">static int GenOptimizer_Init(GenOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)</div><div class="ttdoc">Инициализация эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00154">gen_optimizer.h:154</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_ga83abbcabaff9111c03ae2475ee72ea3e"><div class="ttname"><a href="#ga83abbcabaff9111c03ae2475ee72ea3e">PARAM_SCALE</a></div><div class="ttdeci">#define PARAM_SCALE(x, min_val, max_val)</div><div class="ttdoc">Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00072">gen_optimizer.h:72</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_gaa1d5510fe5f0bd989473f3ebe324bde3"><div class="ttname"><a href="#gaa1d5510fe5f0bd989473f3ebe324bde3">PARAM_UNSCALE</a></div><div class="ttdeci">#define PARAM_UNSCALE(val, min_val, max_val)</div><div class="ttdoc">Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00078">gen_optimizer.h:78</a></div></div>
<div class="ttc" id="agroup___g_e_n___o_p_t_i_m_i_z_e_r_html_gaa9a4c4f43f7beb926c85bd4817ebd628"><div class="ttname"><a href="#gaa9a4c4f43f7beb926c85bd4817ebd628">GenOptimizer_Step</a></div><div class="ttdeci">static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)</div><div class="ttdoc">Один шаг эволюционного оптимизатора.</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00224">gen_optimizer.h:224</a></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="ttdoc">Структура эволюционного оптимизатора</div><div class="ttdef"><b>Definition</b> <a href="gen__optimizer_8h_source.html#l00101">gen_optimizer.h:101</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="ga83abbcabaff9111c03ae2475ee72ea3e" name="ga83abbcabaff9111c03ae2475ee72ea3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga83abbcabaff9111c03ae2475ee72ea3e">&#9670;&#160;</a></span>PARAM_SCALE</h2>
@ -220,7 +220,7 @@ Functions</h2></td></tr>
</div><!-- fragment -->
<p>Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1) </p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00073">73</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00072">72</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
@ -251,7 +251,7 @@ Functions</h2></td></tr>
</div><!-- fragment -->
<p>Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]. </p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00079">79</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00078">78</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
@ -269,7 +269,7 @@ Functions</h2></td></tr>
<p>Минимальная мутация (в процентах от Loss) </p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00089">89</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00088">88</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
@ -287,7 +287,7 @@ Functions</h2></td></tr>
<p>Максимальная мутация (в процентах от Loss) </p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00092">92</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00091">91</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
@ -305,7 +305,7 @@ Functions</h2></td></tr>
<p>Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) </p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00095">95</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00094">94</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
@ -371,7 +371,7 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 — если окей, -1 — если ошибка </dd></dl>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00155">155</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00154">154</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>
@ -420,7 +420,7 @@ Functions</h2></td></tr>
<p>Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n_cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.</p>
<p>На выходе params содержит параметры следующего кандидата для измерений. </p><dl class="section note"><dt>Note</dt><dd>Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени </dd></dl>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00225">225</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="gen__optimizer_8h_source.html#l00224">224</a> of file <a class="el" href="gen__optimizer_8h_source.html">gen_optimizer.h</a>.</p>
</div>
</div>

View File

@ -9,9 +9,9 @@ var group___g_e_n___o_p_t_i_m_i_z_e_r =
[ "cand_index", "struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc", null ],
[ "gen_index", "struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c", null ],
[ "gen_mut", "struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1", null ],
[ "loss", "struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73", null ],
[ "candidates", "struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df", null ],
[ "sorted_idx", "struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12", null ]
[ "loss", "struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa", null ],
[ "candidates", "struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947", null ],
[ "sorted_idx", "struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320", null ]
] ],
[ "PARAM_SCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ],
[ "PARAM_UNSCALE", "group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ],

View File

@ -1,4 +1,4 @@
<map id="Genetic optimizer" name="Genetic optimizer">
<area shape="rect" id="Node000001" title="Библиотека для эволюционного подбора параметров" alt="" coords="154,5,277,32"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
<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 +1 @@
ec124a446898cfdeeba090736e9d2802
117f38e130c123102c33539947be2ce0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -111,8 +111,8 @@ $(function(){initNavTree('group___m_y_l_i_b_s___a_l_l.html','',''); });
<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_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="121,56,221,83"/>
<area shape="rect" href="group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html" title="Модули для управления периферией" alt="" coords="131,107,210,133"/>
<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">
@ -120,10 +120,10 @@ $(function(){initNavTree('group___m_y_l_i_b_s___a_l_l.html','',''); });
Topics</h2></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_5FDEFINES" id="r_MYLIBS_5FDEFINES"><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_f_i_n_e_s.html">General Tools</a></td></tr>
<tr class="memdesc:group___m_y_l_i_b_s___d_e_f_i_n_e_s"><td class="mdescLeft">&#160;</td><td class="mdescRight">Общие макросы и typedef'ы, используемые по всему проекту <br /></td></tr>
<tr class="memitem:MYLIBS_5FPERIPHERAL" id="r_MYLIBS_5FPERIPHERAL"><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___p_e_r_i_p_h_e_r_a_l.html">Peripheral</a></td></tr>
<tr class="memdesc:group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l"><td class="mdescLeft">&#160;</td><td class="mdescRight">Модули для управления периферией <br /></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_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>
@ -131,10 +131,9 @@ Topics</h2></td></tr>
<li>Сконфигурировать <a class="el" href="mylibs__config_8h.html" title="Конфигурации для библиотек MyLibs.">mylibs_config.h</a>:<ul>
<li>Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx_hal.h)</li>
<li>Подключить другие заголовочные файлы которые общие для всего проекта и должны быть видны</li>
<li></li>
<li>Подключить <a class="el" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек">mylibs_include.h</a> туда, где необходим доступ к библиотекам. </li>
</ul>
</li>
<li>Подключить <a class="el" href="mylibs__include_8h.html" title="Заголочный файл для всех библиотек">mylibs_include.h</a> туда, где необходим доступ к библиотекам. </li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->

View File

@ -1,6 +1,6 @@
var group___m_y_l_i_b_s___a_l_l =
[
[ "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" ],
[ "General Tools", "group___m_y_l_i_b_s___d_e_f_i_n_e_s.html", "group___m_y_l_i_b_s___d_e_f_i_n_e_s" ],
[ "Peripheral", "group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html", "group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_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" ],
[ "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 +1,6 @@
<map id="My Libs" name="My Libs">
<area shape="rect" id="Node000001" title="Все используемые MyLibs библиотеки" alt="" coords="5,56,73,83"/>
<area shape="rect" id="Node000002" 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="Node000003" href="$group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="121,56,221,83"/>
<area shape="rect" id="Node000004" href="$group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html" title="Модули для управления периферией" alt="" coords="131,107,210,133"/>
<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="Node000003" 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 +1 @@
52c11e57bdabafd5d7af3828f403f995
13c33a8645a936a94af7b6b5cac2a05a

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

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

View File

@ -0,0 +1,7 @@
var group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s =
[
[ "Time measurement", "group___b_e_n_c_h___t_i_m_e.html", "group___b_e_n_c_h___t_i_m_e" ],
[ "Genetic optimizer", "group___g_e_n___o_p_t_i_m_i_z_e_r.html", "group___g_e_n___o_p_t_i_m_i_z_e_r" ],
[ "Trace defines", "group___t_r_a_c_e.html", "group___t_r_a_c_e" ],
[ "Trackers defines", "group___t_r_a_c_k_e_r_s.html", "group___t_r_a_c_k_e_r_s" ]
];

View File

@ -0,0 +1,8 @@
<map id="Debug Tools" name="Debug Tools">
<area shape="rect" id="Node000003" href="$group___b_e_n_c_h___t_i_m_e.html" title="Библиотека для измерения времени/тиков между событиями" alt="" coords="262,5,395,32"/>
<area shape="rect" id="Node000004" 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" id="Node000002" href="$group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,81,73,108"/>
<area shape="rect" id="Node000001" title="Утилиты для тестирования программы" alt="" coords="121,81,214,108"/>
<area shape="rect" id="Node000005" href="$group___t_r_a_c_e.html" title="Дефайны для работы с трассировкой" alt="" coords="278,107,379,133"/>
<area shape="rect" id="Node000006" href="$group___t_r_a_c_k_e_r_s.html" title="Дефайны для работы с трекерами" alt="" coords="270,157,388,184"/>
</map>

View File

@ -0,0 +1 @@
e10d808e73658cbf4719fc412f2e0b91

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -102,34 +102,17 @@ $(function(){initNavTree('group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html','','')
<div class="contents">
<p>Модули для управления периферией
<a href="#details">More...</a></p>
</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 Peripheral:</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___p_e_r_i_p_h_e_r_a_l.png" border="0" usemap="#agroup______m__y__l__i__b__s______p__e__r__i__p__h__e__r__a__l" loading="lazy" alt=""/></div>
<map name="agroup______m__y__l__i__b__s______p__e__r__i__p__h__e__r__a__l" id="agroup______m__y__l__i__b__s______p__e__r__i__p__h__e__r__a__l">
<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,200,108"/>
<area shape="rect" href="group___m_y___l_i_b_s___g_p_i_o.html" title="Функции и макросы для удобной работы с GPIO." alt="" coords="250,5,338,32"/>
<area shape="rect" href="group___m_y___l_i_b_s___s_p_i.html" title="Функции и макросы для удобной работы с SPI." alt="" coords="255,56,332,83"/>
<area shape="rect" href="group___m_y___l_i_b_s___t_i_m.html" title="Функции и макросы для удобной работы с TIM." alt="" coords="254,107,333,133"/>
<area shape="rect" href="group___m_y___l_i_b_s___u_a_r_t.html" title="Функции и макросы для удобной работы с UART." alt="" coords="248,157,339,184"/>
<area shape="rect" href="group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,5,73,32"/>
<area shape="rect" title="Модули для управления периферией" alt="" coords="121,5,200,32"/>
</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:MY_5FLIBS_5FGPIO" id="r_MY_5FLIBS_5FGPIO"><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___g_p_i_o.html">GPIO Tools</a></td></tr>
<tr class="memdesc:group___m_y___l_i_b_s___g_p_i_o"><td class="mdescLeft">&#160;</td><td class="mdescRight">Функции и макросы для удобной работы с GPIO. <br /></td></tr>
<tr class="memitem:MY_5FLIBS_5FSPI" id="r_MY_5FLIBS_5FSPI"><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___s_p_i.html">SPI Tools</a></td></tr>
<tr class="memdesc:group___m_y___l_i_b_s___s_p_i"><td class="mdescLeft">&#160;</td><td class="mdescRight">Функции и макросы для удобной работы с SPI. <br /></td></tr>
<tr class="memitem:MY_5FLIBS_5FTIM" id="r_MY_5FLIBS_5FTIM"><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_i_m.html">TIM Tools</a></td></tr>
<tr class="memdesc:group___m_y___l_i_b_s___t_i_m"><td class="mdescLeft">&#160;</td><td class="mdescRight">Функции и макросы для удобной работы с TIM. <br /></td></tr>
<tr class="memitem:MY_5FLIBS_5FUART" id="r_MY_5FLIBS_5FUART"><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___u_a_r_t.html">UART Tools</a></td></tr>
<tr class="memdesc:group___m_y___l_i_b_s___u_a_r_t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Функции и макросы для удобной работы с UART. <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 -->

View File

@ -1,8 +1,4 @@
<map id="Peripheral" name="Peripheral">
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,81,73,108"/>
<area shape="rect" id="Node000001" title="Модули для управления периферией" alt="" coords="121,81,200,108"/>
<area shape="rect" id="Node000003" href="$group___m_y___l_i_b_s___g_p_i_o.html" title="Функции и макросы для удобной работы с GPIO." alt="" coords="250,5,338,32"/>
<area shape="rect" id="Node000004" href="$group___m_y___l_i_b_s___s_p_i.html" title="Функции и макросы для удобной работы с SPI." alt="" coords="255,56,332,83"/>
<area shape="rect" id="Node000005" href="$group___m_y___l_i_b_s___t_i_m.html" title="Функции и макросы для удобной работы с TIM." alt="" coords="254,107,333,133"/>
<area shape="rect" id="Node000006" href="$group___m_y___l_i_b_s___u_a_r_t.html" title="Функции и макросы для удобной работы с UART." alt="" coords="248,157,339,184"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,5,73,32"/>
<area shape="rect" id="Node000001" title="Модули для управления периферией" alt="" coords="121,5,200,32"/>
</map>

View File

@ -1 +1 @@
1044283365b108883d0b7a448ff91792
01d6066aba098d16d320b5b455fdca4f

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 957 B

View File

@ -0,0 +1,151 @@
<!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: General 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___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">General 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>Общие макросы и typedef'ы, используемые по всему проекту
<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 General 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___t_o_o_l_s.png" border="0" usemap="#agroup______m__y__l__i__b__s______t__o__o__l__s" loading="lazy" alt=""/></div>
<map name="agroup______m__y__l__i__b__s______t__o__o__l__s" id="agroup______m__y__l__i__b__s______t__o__o__l__s">
<area shape="rect" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html" title="Макросы и typedef&#39;ы для работы с битами в unsigned типах." alt="" coords="276,5,406,32"/>
<area shape="rect" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html" title="Макросы и определения для работы с задержками в миллисекундах." alt="" coords="287,56,395,83"/>
<area shape="rect" href="group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html" title="Дефайны для обработки ошибок" alt="" coords="269,107,413,133"/>
<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="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="121,81,221,108"/>
<area shape="rect" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html" title="Общие вспомогательные макросы" alt="" coords="294,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:BIT_5FACCESS_5FDEFINES" id="r_BIT_5FACCESS_5FDEFINES"><td class="memItemLeft" align="right" valign="top">&#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">Bit access defines</a></td></tr>
<tr class="memdesc:group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s"><td class="mdescLeft">&#160;</td><td class="mdescRight">Макросы и typedef'ы для работы с битами в unsigned типах. <br /></td></tr>
<tr class="memitem:ERROR_5FHANDLER_5FDEFINES" id="r_ERROR_5FHANDLER_5FDEFINES"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><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">Error Handler defines</a></td></tr>
<tr class="memdesc:group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s"><td class="mdescLeft">&#160;</td><td class="mdescRight">Дефайны для обработки ошибок <br /></td></tr>
<tr class="memitem:DELAYS_5FDEFINES" id="r_DELAYS_5FDEFINES"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html">Delays defines</a></td></tr>
<tr class="memdesc:group___d_e_l_a_y_s___d_e_f_i_n_e_s"><td class="mdescLeft">&#160;</td><td class="mdescRight">Макросы и определения для работы с задержками в миллисекундах. <br /></td></tr>
<tr class="memitem:UTILS_5FDEFINES" id="r_UTILS_5FDEFINES"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html">Utils defines</a></td></tr>
<tr class="memdesc:group___u_t_i_l_s___d_e_f_i_n_e_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>Общие макросы и typedef'ы, используемые по всему проекту </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

@ -0,0 +1,7 @@
var group___m_y_l_i_b_s___t_o_o_l_s =
[
[ "Bit access defines", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s" ],
[ "Error Handler defines", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s" ],
[ "Delays defines", "group___d_e_l_a_y_s___d_e_f_i_n_e_s.html", "group___d_e_l_a_y_s___d_e_f_i_n_e_s" ],
[ "Utils defines", "group___u_t_i_l_s___d_e_f_i_n_e_s.html", "group___u_t_i_l_s___d_e_f_i_n_e_s" ]
];

View File

@ -0,0 +1,8 @@
<map id="General Tools" name="General Tools">
<area shape="rect" id="Node000003" href="$group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html" title="Макросы и typedef&#39;ы для работы с битами в unsigned типах." alt="" coords="276,5,406,32"/>
<area shape="rect" id="Node000005" href="$group___d_e_l_a_y_s___d_e_f_i_n_e_s.html" title="Макросы и определения для работы с задержками в миллисекундах." alt="" coords="287,56,395,83"/>
<area shape="rect" id="Node000004" href="$group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html" title="Дефайны для обработки ошибок" alt="" coords="269,107,413,133"/>
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___a_l_l.html" title="Все используемые MyLibs библиотеки" alt="" coords="5,81,73,108"/>
<area shape="rect" id="Node000001" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="121,81,221,108"/>
<area shape="rect" id="Node000006" href="$group___u_t_i_l_s___d_e_f_i_n_e_s.html" title="Общие вспомогательные макросы" alt="" coords="294,157,388,184"/>
</map>

View File

@ -0,0 +1 @@
78998b4170ecf65af8583f6c3acb669a

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e.html','',''); });
</div>
<div class="header">
<div class="headertitle"><div class="title">Trace 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___d_e_f_i_n_e_s.html">General Tools</a></div></div></div>
<div class="headertitle"><div class="title">Trace 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___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a></div></div></div>
</div><!--header-->
<div class="contents">
@ -109,12 +109,12 @@ $(function(){initNavTree('group___t_r_a_c_e.html','',''); });
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="group___t_r_a_c_e.png" border="0" usemap="#agroup______t__r__a__c__e" loading="lazy" alt=""/></div>
<map name="agroup______t__r__a__c__e" id="agroup______t__r__a__c__e">
<area shape="rect" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,81,106,108"/>
<area shape="rect" title="Дефайны для работы с трассировкой" alt="" coords="154,81,254,108"/>
<area shape="rect" href="group___t_r_a_c_e___g_p_i_o.html" title="Дефайны для работы с GPIO трассировкой" alt="" coords="312,5,445,32"/>
<area shape="rect" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html" title="Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash." alt="" coords="302,56,455,83"/>
<area shape="rect" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html" title="Макросы и функции для сохранения/чтения RTT буфера в Flash." alt="" coords="318,107,439,133"/>
<area shape="rect" href="group___t_r_a_c_e___s_e_r_i_a_l.html" title="Дефайны для работы с serial трассировкой (SWO, RTT)" alt="" coords="312,157,445,184"/>
<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,81,99,108"/>
<area shape="rect" title="Дефайны для работы с трассировкой" alt="" coords="147,81,247,108"/>
<area shape="rect" href="group___t_r_a_c_e___g_p_i_o.html" title="Дефайны для работы с GPIO трассировкой" alt="" coords="305,5,438,32"/>
<area shape="rect" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html" title="Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash." alt="" coords="295,56,448,83"/>
<area shape="rect" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html" title="Макросы и функции для сохранения/чтения RTT буфера в Flash." alt="" coords="312,107,432,133"/>
<area shape="rect" href="group___t_r_a_c_e___s_e_r_i_a_l.html" title="Дефайны для работы с serial трассировкой (SWO, RTT)" alt="" coords="305,157,438,184"/>
</map>
</div>
<table class="memberdecls">

View File

@ -1,8 +1,8 @@
<map id="Trace defines" name="Trace defines">
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,81,106,108"/>
<area shape="rect" id="Node000001" title="Дефайны для работы с трассировкой" alt="" coords="154,81,254,108"/>
<area shape="rect" id="Node000004" href="$group___t_r_a_c_e___g_p_i_o.html" title="Дефайны для работы с GPIO трассировкой" alt="" coords="312,5,445,32"/>
<area shape="rect" id="Node000006" href="$group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html" title="Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash." alt="" coords="302,56,455,83"/>
<area shape="rect" id="Node000005" href="$group___t_r_a_c_e___r_t_t___f_l_a_s_h.html" title="Макросы и функции для сохранения/чтения RTT буфера в Flash." alt="" coords="318,107,439,133"/>
<area shape="rect" id="Node000003" href="$group___t_r_a_c_e___s_e_r_i_a_l.html" title="Дефайны для работы с serial трассировкой (SWO, RTT)" alt="" coords="312,157,445,184"/>
<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,81,99,108"/>
<area shape="rect" id="Node000001" title="Дефайны для работы с трассировкой" alt="" coords="147,81,247,108"/>
<area shape="rect" id="Node000004" href="$group___t_r_a_c_e___g_p_i_o.html" title="Дефайны для работы с GPIO трассировкой" alt="" coords="305,5,438,32"/>
<area shape="rect" id="Node000006" href="$group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html" title="Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash." alt="" coords="295,56,448,83"/>
<area shape="rect" id="Node000005" href="$group___t_r_a_c_e___r_t_t___f_l_a_s_h.html" title="Макросы и функции для сохранения/чтения RTT буфера в Flash." alt="" coords="312,107,432,133"/>
<area shape="rect" id="Node000003" href="$group___t_r_a_c_e___s_e_r_i_a_l.html" title="Дефайны для работы с serial трассировкой (SWO, RTT)" alt="" coords="305,157,438,184"/>
</map>

View File

@ -1 +1 @@
231806d9df0ebec28cd371e85eb1e78c
d398645521a6e65c12178c326d8a6a8c

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___g_p_i_o.html','',''); });
</div>
<div class="header">
<div class="headertitle"><div class="title">GPIO trace 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___d_e_f_i_n_e_s.html">General Tools</a> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
<div class="headertitle"><div class="title">GPIO trace 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___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
</div><!--header-->
<div class="contents">
@ -162,7 +162,7 @@ Macros</h2></td></tr>
<li>GPIO_TRACE_ENABLE определён - устанавливает бит сброса через BSRR ((<em>pin</em>)&lt;&lt;16) </li>
</ul>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00155">155</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00154">154</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -199,7 +199,7 @@ Macros</h2></td></tr>
<li>GPIO_TRACE_ENABLE определён - устанавливает бит установки через BSRR (<em>pin</em>) </li>
</ul>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00154">154</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00153">153</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html','',''); })
</div>
<div class="header">
<div class="headertitle"><div class="title">Hardfault trace 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___d_e_f_i_n_e_s.html">General Tools</a> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
<div class="headertitle"><div class="title">Hardfault trace 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___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
</div><!--header-->
<div class="contents">
@ -129,7 +129,7 @@ Functions</h2></td></tr>
<tr class="heading"><td colspan="2"><h2 id="header-var-members" class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga8bde6da023f9fc577e2004c56c09bc3e" id="r_ga8bde6da023f9fc577e2004c56c09bc3e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct_h_f___stack_frame__t.html">HF_StackFrame_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8bde6da023f9fc577e2004c56c09bc3e">stack_frame</a></td></tr>
<tr class="memitem:ga5eaebf741ff2454968da6e6c28ac92b7" id="r_ga5eaebf741ff2454968da6e6c28ac92b7"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga5eaebf741ff2454968da6e6c28ac92b7">stack_dump</a> [32]</td></tr>
<tr class="memitem:ga9edcd42163bfdaa30a8bb801d2668244" id="r_ga9edcd42163bfdaa30a8bb801d2668244"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9edcd42163bfdaa30a8bb801d2668244">stack_dump</a> [<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b">HF_STACK_DUMP_WORDS</a>]</td></tr>
<tr class="memitem:gadb6ef6ffef1b50aec4abb32b03bceb79" id="r_gadb6ef6ffef1b50aec4abb32b03bceb79"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gadb6ef6ffef1b50aec4abb32b03bceb79">ret_adr</a> [10] = {0}</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
@ -172,9 +172,9 @@ Variables</h2></td></tr>
<div class="line"> <a class="code hl_function" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1">RTT_EraseFlash</a>(); <span class="comment">// erase rtt flash after message readed</span></div>
<div class="line"> }</div>
<div class="line">} </div>
<div class="ttc" id="agroup___t_r_a_c_e___h_a_r_d_f_a_u_l_t_html_ga03f8b6f3b537ee1c8e91065c60db504f"><div class="ttname"><a href="#ga03f8b6f3b537ee1c8e91065c60db504f">HF_CheckRecovered</a></div><div class="ttdeci">__STATIC_FORCEINLINE int HF_CheckRecovered(int erase)</div><div class="ttdoc">Проверка и вывод последнего HardFault-трейса из Flash.</div><div class="ttdef"><b>Definition</b> <a href="trace_8h_source.html#l00499">trace.h:499</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_e___h_a_r_d_f_a_u_l_t_html_gadd8e10e7ec3b0204f7f92062ecd452f7"><div class="ttname"><a href="#gadd8e10e7ec3b0204f7f92062ecd452f7">HF_HandleFault</a></div><div class="ttdeci">__STATIC_FORCEINLINE void HF_HandleFault(void)</div><div class="ttdoc">Обработчик HardFault.</div><div class="ttdef"><b>Definition</b> <a href="trace_8h_source.html#l00540">trace.h:540</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_e___r_t_t___f_l_a_s_h_html_ga8d8c6850e32b42871faefce3352012d1"><div class="ttname"><a href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1">RTT_EraseFlash</a></div><div class="ttdeci">__STATIC_FORCEINLINE int RTT_EraseFlash(void)</div><div class="ttdoc">Стирание сектора Flash с RTT-буфером</div><div class="ttdef"><b>Definition</b> <a href="trace_8h_source.html#l00388">trace.h:388</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_e___h_a_r_d_f_a_u_l_t_html_ga03f8b6f3b537ee1c8e91065c60db504f"><div class="ttname"><a href="#ga03f8b6f3b537ee1c8e91065c60db504f">HF_CheckRecovered</a></div><div class="ttdeci">__STATIC_FORCEINLINE int HF_CheckRecovered(int erase)</div><div class="ttdoc">Проверка и вывод последнего HardFault-трейса из Flash.</div><div class="ttdef"><b>Definition</b> <a href="trace_8h_source.html#l00498">trace.h:498</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_e___h_a_r_d_f_a_u_l_t_html_gadd8e10e7ec3b0204f7f92062ecd452f7"><div class="ttname"><a href="#gadd8e10e7ec3b0204f7f92062ecd452f7">HF_HandleFault</a></div><div class="ttdeci">__STATIC_FORCEINLINE void HF_HandleFault(void)</div><div class="ttdoc">Обработчик HardFault.</div><div class="ttdef"><b>Definition</b> <a href="trace_8h_source.html#l00539">trace.h:539</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_e___r_t_t___f_l_a_s_h_html_ga8d8c6850e32b42871faefce3352012d1"><div class="ttname"><a href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1">RTT_EraseFlash</a></div><div class="ttdeci">__STATIC_FORCEINLINE int RTT_EraseFlash(void)</div><div class="ttdoc">Стирание сектора Flash с RTT-буфером</div><div class="ttdef"><b>Definition</b> <a href="trace_8h_source.html#l00387">trace.h:387</a></div></div>
</div><!-- fragment --> <a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="ga03f8b6f3b537ee1c8e91065c60db504f" name="ga03f8b6f3b537ee1c8e91065c60db504f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga03f8b6f3b537ee1c8e91065c60db504f">&#9670;&#160;</a></span>HF_CheckRecovered()</h2>
@ -200,7 +200,7 @@ Variables</h2></td></tr>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Вызов рекомендуется при инициализации приложения для анализа предыдущего сбоя. </dd></dl>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00499">499</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00498">498</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -230,7 +230,7 @@ Variables</h2></td></tr>
</ol>
<dl class="section note"><dt>Note</dt><dd>Функция защищена, так как вызывается в контексте сбоя — минимизирует использование вызовов HAL. </dd></dl>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00540">540</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00539">539</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -255,12 +255,12 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00523">523</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00522">522</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
<a id="ga5eaebf741ff2454968da6e6c28ac92b7" name="ga5eaebf741ff2454968da6e6c28ac92b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5eaebf741ff2454968da6e6c28ac92b7">&#9670;&#160;</a></span>stack_dump</h2>
<a id="ga9edcd42163bfdaa30a8bb801d2668244" name="ga9edcd42163bfdaa30a8bb801d2668244"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9edcd42163bfdaa30a8bb801d2668244">&#9670;&#160;</a></span>stack_dump</h2>
<div class="memitem">
<div class="memproto">
@ -269,7 +269,7 @@ Variables</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t stack_dump[32]</td>
<td class="memname">uint32_t stack_dump[<a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b">HF_STACK_DUMP_WORDS</a>]</td>
</tr>
</table>
</td>
@ -279,7 +279,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00524">524</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00523">523</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -303,7 +303,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00525">525</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00524">524</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___r_t_t___f_l_a_s_h.html','',''); })
</div>
<div class="header">
<div class="headertitle"><div class="title">Flash RTT Buffer <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_f_i_n_e_s.html">General Tools</a> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
<div class="headertitle"><div class="title">Flash RTT Buffer <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> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
</div><!--header-->
<div class="contents">
@ -170,7 +170,7 @@ Functions</h2></td></tr>
<p>Подготовка Flash к записи </p>
<p>Сбрасывает ошибки Flash и ожидает готовности перед записью </p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00203">203</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00202">202</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -208,7 +208,7 @@ Functions</h2></td></tr>
<li>Если конкретный (младший байт != 0) — запись выполняется только с этим тегом, иначе ошибка. </li>
</ul>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00227">227</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00226">226</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -257,7 +257,7 @@ Functions</h2></td></tr>
<li>Если конкретный (младший байт != 0) — прочитывается именно эта запись. </li>
</ul>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00324">324</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00323">323</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -278,7 +278,7 @@ Functions</h2></td></tr>
<p>Стирание сектора Flash с RTT-буфером </p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00388">388</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00387">387</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>

View File

@ -3,7 +3,7 @@ var group___t_r_a_c_e___r_t_t___f_l_a_s_h =
[ "RTT_FlashHeader_t", "struct_r_t_t___flash_header__t.html", [
[ "tag", "struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57", null ],
[ "size", "struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699", null ],
[ "data", "struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a", null ]
[ "data", "struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e", null ]
] ],
[ "RTT_FlashPrepare", "group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6", null ],
[ "RTT_SaveToFlash", "group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63", null ],

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___s_e_r_i_a_l.html','',''); });
</div>
<div class="header">
<div class="headertitle"><div class="title">Serial trace 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___d_e_f_i_n_e_s.html">General Tools</a> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
<div class="headertitle"><div class="title">Serial trace 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___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a> &raquo; <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></div></div></div>
</div><!--header-->
<div class="contents">
@ -126,7 +126,7 @@ Macros</h2></td></tr>
<p>В зависимости от настроек определяется дефайн <a class="el" href="#gae9b9b8a611e291a2f2aa5abf99f3ebaa">my_printf()</a> и <a class="el" href="#ga730fb7b8d0bbb348dca73c15bd0e0b26">log_printf()</a> для работы с трассировкой:</p><ul>
<li><a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6">SERIAL_TRACE_ENABLE</a> - Если трассировка отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют</li>
<li><p class="startli"><a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8">RTT_TRACE_ENABLE</a> - для RTT это будет вызов функции SEGGER_RTT_printf()</p>
<p class="startli">Предварительно надо подключить библиотеку SEGGER RTT (SEGGER_RTT.h) и вызвать функцию SEGGER_RTT_Init()</p>
<p class="startli">Предварительно надо подключить библиотеку SEGGER RTT (<a class="el" href="_s_e_g_g_e_r___r_t_t_8h_source.html">SEGGER_RTT.h</a>) и вызвать функцию SEGGER_RTT_Init()</p>
</li>
<li><p class="startli"><a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336">SWO_TRACE_ENABLE</a> для SWO это будет просто printf()</p>
<p class="startli">Предварительно надо подключить библиотеку STDOUT и retarget под ITM:</p>
@ -166,7 +166,7 @@ Macros</h2></td></tr>
<li>NO_TRACE - пустой макрос </li>
</ul>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00080">80</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00079">79</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>
@ -193,11 +193,7 @@ Macros</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code hl_define" href="#gae9b9b8a611e291a2f2aa5abf99f3ebaa">my_printf</a>(<span class="stringliteral">&quot;\n[%lu] [%s] &quot;</span> fmt, \</div>
<div class="line">(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)<a class="code hl_define" href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a>(), TAG, ##__VA_ARGS__)</div>
<div class="ttc" id="agroup___l_i_b_s___c_o_n_f_i_g_html_ga9c853b02c22f26023c34d1d404b6d653"><div class="ttname"><a href="group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653">local_time</a></div><div class="ttdeci">#define local_time()</div><div class="ttdoc">Локальное время</div><div class="ttdef"><b>Definition</b> <a href="mylibs__config_8h_source.html#l00097">mylibs_config.h:97</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_e___s_e_r_i_a_l_html_gae9b9b8a611e291a2f2aa5abf99f3ebaa"><div class="ttname"><a href="#gae9b9b8a611e291a2f2aa5abf99f3ebaa">my_printf</a></div><div class="ttdeci">#define my_printf(...)</div><div class="ttdoc">Универсальный макрос для вывода трассировки</div><div class="ttdef"><b>Definition</b> <a href="trace_8h_source.html#l00080">trace.h:80</a></div></div>
</div><!-- fragment -->
<p>Макрос логирования с поддержкой уровней <a class="el" href="group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05">LOG_LEVEL</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
@ -216,7 +212,7 @@ Macros</h2></td></tr>
</div><!-- fragment --> </li>
</ul>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00109">109</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trace_8h_source.html#l00106">106</a> of file <a class="el" href="trace_8h_source.html">trace.h</a>.</p>
</div>
</div>

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_k_e_r_s.html','',''); });
</div>
<div class="header">
<div class="headertitle"><div class="title">Trackers 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___d_e_f_i_n_e_s.html">General Tools</a></div></div></div>
<div class="headertitle"><div class="title">Trackers 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___d_e_b_u_g___t_o_o_l_s.html">Debug Tools</a></div></div></div>
</div><!--header-->
<div class="contents">
@ -109,8 +109,8 @@ $(function(){initNavTree('group___t_r_a_c_k_e_r_s.html','',''); });
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="group___t_r_a_c_k_e_r_s.png" border="0" usemap="#agroup______t__r__a__c__k__e__r__s" loading="lazy" alt=""/></div>
<map name="agroup______t__r__a__c__k__e__r__s" id="agroup______t__r__a__c__k__e__r__s">
<area shape="rect" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
<area shape="rect" title="Дефайны для работы с трекерами" alt="" coords="154,5,272,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"/>
<area shape="rect" title="Дефайны для работы с трекерами" alt="" coords="147,5,265,32"/>
</map>
</div>
<table class="memberdecls">
@ -234,7 +234,7 @@ Macros</h2></td></tr>
<p>Содержит счетчик для успешных событый (cnt_ok), счетчик для ошибок (cnt_err), счетчик для предупреждений (cnt_warn).</p>
<p>Также есть возможность объявить пользовательские переменные в количестве &lt;num_user_vars&gt; штук. </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00070">70</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00069">69</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -256,7 +256,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Получить количетство пользовательских переменных </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00080">80</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00079">79</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -279,11 +279,11 @@ Macros</h2></td></tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((_uservarnumb_) &lt; <a class="code hl_define" href="#ga72be24629fedb8bf70e830373d151fbc">num_of_usercnts</a>((_cntstruct_).user))</div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_ga72be24629fedb8bf70e830373d151fbc"><div class="ttname"><a href="#ga72be24629fedb8bf70e830373d151fbc">num_of_usercnts</a></div><div class="ttdeci">#define num_of_usercnts(_user_)</div><div class="ttdoc">Получить количетство пользовательских переменных</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00080">trackers.h:80</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_ga72be24629fedb8bf70e830373d151fbc"><div class="ttname"><a href="#ga72be24629fedb8bf70e830373d151fbc">num_of_usercnts</a></div><div class="ttdeci">#define num_of_usercnts(_user_)</div><div class="ttdoc">Получить количетство пользовательских переменных</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00079">trackers.h:79</a></div></div>
</div><!-- fragment -->
<p>Проверка существует ли указанная пользовательская переменная </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00082">82</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00081">81</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -306,11 +306,11 @@ Macros</h2></td></tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">if</span>(<a class="code hl_define" href="#gadd7fd2c6e3a4800f1d5ddab35fd4b43e">assert_usertracker</a>(_cntstruct_, _uservarnumb_))</div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_gadd7fd2c6e3a4800f1d5ddab35fd4b43e"><div class="ttname"><a href="#gadd7fd2c6e3a4800f1d5ddab35fd4b43e">assert_usertracker</a></div><div class="ttdeci">#define assert_usertracker(_cntstruct_, _uservarnumb_)</div><div class="ttdoc">Проверка существует ли указанная пользовательская переменная</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00082">trackers.h:82</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_gadd7fd2c6e3a4800f1d5ddab35fd4b43e"><div class="ttname"><a href="#gadd7fd2c6e3a4800f1d5ddab35fd4b43e">assert_usertracker</a></div><div class="ttdeci">#define assert_usertracker(_cntstruct_, _uservarnumb_)</div><div class="ttdoc">Проверка существует ли указанная пользовательская переменная</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00081">trackers.h:81</a></div></div>
</div><!-- fragment -->
<p>Условие для проверки существует ли указанная пользовательская переменная </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00084">84</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00083">83</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -336,7 +336,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Тернарный оператор для проверки существует ли указанная пользовательская переменная </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00086">86</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00085">85</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -358,7 +358,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Считать счетчик успешных событий </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00090">90</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00089">89</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -380,7 +380,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Считать счетчик ошибок </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00092">92</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00091">91</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -402,7 +402,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Считать счетчик предупреждений </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00094">94</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00093">93</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -425,7 +425,7 @@ Macros</h2></td></tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(_cntstruct_).user[<a class="code hl_define" href="#ga39b6ffbc561f8caac276415e1ad32c30">tern_assert_usertracker</a>(_cntstruct_, _uservarnumb_)]</div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_ga39b6ffbc561f8caac276415e1ad32c30"><div class="ttname"><a href="#ga39b6ffbc561f8caac276415e1ad32c30">tern_assert_usertracker</a></div><div class="ttdeci">#define tern_assert_usertracker(_cntstruct_, _uservarnumb_)</div><div class="ttdoc">Тернарный оператор для проверки существует ли указанная пользовательская переменная</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00086">trackers.h:86</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_ga39b6ffbc561f8caac276415e1ad32c30"><div class="ttname"><a href="#ga39b6ffbc561f8caac276415e1ad32c30">tern_assert_usertracker</a></div><div class="ttdeci">#define tern_assert_usertracker(_cntstruct_, _uservarnumb_)</div><div class="ttdoc">Тернарный оператор для проверки существует ли указанная пользовательская переменная</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00085">trackers.h:85</a></div></div>
</div><!-- fragment -->
<p>Считать пользовательскую переменную </p>
<dl class="section note"><dt>Note</dt><dd>Здесь нет проверки - существует ли пользовательская переменная! Есть возможность выйти за границы структуры!!! Чтобы этого избежать можно использовать дефайн #ref <a class="el" href="#gadd7fd2c6e3a4800f1d5ddab35fd4b43e" title="Проверка существует ли указанная пользовательская переменная">assert_usertracker()</a> <pre class="fragment"> if(assert_usertracker(struct, 0)) {
@ -433,7 +433,7 @@ Macros</h2></td></tr>
}
</pre> </dd></dl>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00106">106</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00105">105</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -455,7 +455,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Инкрементирование счетчика успешных событий </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00111">111</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00110">110</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -477,7 +477,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Инкрементирование счетчика ошибок </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00113">113</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00112">112</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -499,7 +499,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Инкрементирование счетчика предупреждений </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00115">115</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00114">114</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -522,11 +522,11 @@ Macros</h2></td></tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code hl_define" href="#gad91d8ca89074270fc040c0449e57cf07">if_assert_usertracker</a>(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;</div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_gad91d8ca89074270fc040c0449e57cf07"><div class="ttname"><a href="#gad91d8ca89074270fc040c0449e57cf07">if_assert_usertracker</a></div><div class="ttdeci">#define if_assert_usertracker(_cntstruct_, _uservarnumb_)</div><div class="ttdoc">Условие для проверки существует ли указанная пользовательская переменная</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00084">trackers.h:84</a></div></div>
<div class="ttc" id="agroup___t_r_a_c_k_e_r_s_html_gad91d8ca89074270fc040c0449e57cf07"><div class="ttname"><a href="#gad91d8ca89074270fc040c0449e57cf07">if_assert_usertracker</a></div><div class="ttdeci">#define if_assert_usertracker(_cntstruct_, _uservarnumb_)</div><div class="ttdoc">Условие для проверки существует ли указанная пользовательская переменная</div><div class="ttdef"><b>Definition</b> <a href="trackers_8h_source.html#l00083">trackers.h:83</a></div></div>
</div><!-- fragment -->
<p>Инкрементирование пользовательской переменной </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00117">117</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00116">116</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -557,7 +557,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Запись числа в пользовательскую переменную </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00119">119</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00118">118</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -579,7 +579,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Очистка всей структуры </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00122">122</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00121">121</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -601,7 +601,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Очистка счетчика успешных событий </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00124">124</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00123">123</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -623,7 +623,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Очистка счетчика ошибок </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00126">126</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00125">125</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -645,7 +645,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Очистка счетчика предупреждений </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00128">128</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00127">127</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -671,7 +671,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Очистка пользовательской переменной </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00130">130</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00129">129</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>
@ -693,7 +693,7 @@ Macros</h2></td></tr>
</div><!-- fragment -->
<p>Очистка всех пользовательских переменных </p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00132">132</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="trackers_8h_source.html#l00131">131</a> of file <a class="el" href="trackers_8h_source.html">trackers.h</a>.</p>
</div>
</div>

View File

@ -1,4 +1,4 @@
<map id="Trackers defines" name="Trackers defines">
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,32"/>
<area shape="rect" id="Node000001" title="Дефайны для работы с трекерами" alt="" coords="154,5,272,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"/>
<area shape="rect" id="Node000001" title="Дефайны для работы с трекерами" alt="" coords="147,5,265,32"/>
</map>

View File

@ -1 +1 @@
a7565b03babdeb6094e59ffacae9c523
5e8d7e9fe8d7afc9f2f5dd4a2692dbb0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -97,7 +97,7 @@ $(function(){initNavTree('group___u_t_i_l_s___d_e_f_i_n_e_s.html','',''); });
</div>
<div class="header">
<div class="headertitle"><div class="title">Utils 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___d_e_f_i_n_e_s.html">General Tools</a></div></div></div>
<div class="headertitle"><div class="title">Utils 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">
@ -109,7 +109,7 @@ $(function(){initNavTree('group___u_t_i_l_s___d_e_f_i_n_e_s.html','',''); });
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="group___u_t_i_l_s___d_e_f_i_n_e_s.png" border="0" usemap="#agroup______u__t__i__l__s______d__e__f__i__n__e__s" loading="lazy" alt=""/></div>
<map name="agroup______u__t__i__l__s______d__e__f__i__n__e__s" id="agroup______u__t__i__l__s______d__e__f__i__n__e__s">
<area shape="rect" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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"/>
<area shape="rect" title="Общие вспомогательные макросы" alt="" coords="154,5,248,32"/>
</map>
</div>
@ -153,7 +153,7 @@ Macros</h2></td></tr>
</dl>
<p>Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00154">154</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00169">169</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
@ -188,7 +188,7 @@ Macros</h2></td></tr>
<dl class="section return"><dt>Returns</dt><dd>Результат деления, округленный вверх.</dd></dl>
<p>Если результат деления без остатка: он возвращается как есть Если с остатком - округляется вверх </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00165">165</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00180">180</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
@ -218,7 +218,7 @@ Macros</h2></td></tr>
<dl class="section return"><dt>Returns</dt><dd>Результат с поменяными местами старшим и младшим байтом.</dd></dl>
<p>Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00173">173</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00188">188</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>
@ -248,7 +248,7 @@ Macros</h2></td></tr>
<dl class="section return"><dt>Returns</dt><dd>Абсолютное значение числа x.</dd></dl>
<p>Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно. </p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00181">181</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="mylibs__defs_8h_source.html#l00196">196</a> of file <a class="el" href="mylibs__defs_8h_source.html">mylibs_defs.h</a>.</p>
</div>
</div>

View File

@ -1,4 +1,4 @@
<map id="Utils defines" name="Utils defines">
<area shape="rect" id="Node000002" href="$group___m_y_l_i_b_s___d_e_f_i_n_e_s.html" title="Общие макросы и typedef&#39;ы, используемые по всему проекту" alt="" coords="5,5,106,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"/>
<area shape="rect" id="Node000001" title="Общие вспомогательные макросы" alt="" coords="154,5,248,32"/>
</map>

View File

@ -1 +1 @@
e4f09128a7c7fea7dcaa8c425861feae
2cc6db69719569eeaf3a77181ade09ce

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MyLibs: MyLibs</title>
<title>MyLibs: Обзор ExtendedLibs</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>
@ -97,65 +97,36 @@ $(function(){initNavTree('index.html','',''); });
</div>
<div><div class="header">
<div class="headertitle"><div class="title">MyLibs </div></div>
<div class="headertitle"><div class="title">Обзор <span class="tt">ExtendedLibs</span> </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1 class="doxsection"><a class="anchor" id="overview"></a>
Обзор</h1>
<p>MyLibs - это набор библиотек для удобной работы с STM32.</p>
<p>
<a href="https://git.arktika.cyou/Razvalyaev/STM32_ExtendedLibs/src/branch/release">Актуальная версия</a>
</p>
<h2 class="doxsection"><a class="anchor" id="features"></a>
Основные возможности</h2>
<h3 class="doxsection"><a class="anchor" id="utils_module"></a>
Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)</h3>
<div class="textblock"><p><a class="anchor" id="md__e_1_2_8_w_o_r_k_2_s_t_m32_2_s_t_m___libs_2_s_t_m32___extended_libs_2_r_e_a_d_m_e"></a></p>
<p>ExtendedLibs - это набор библиотек для удобной работы с STM32. Данный субмодуль подключается напрямую из Git и содержит набор вспомогательных библиотек для работы МК, в частности STM32 и SEGGER RTT.</p>
<h1 class="doxsection"><a class="anchor" id="основные-возможности"></a>
Основные возможности</h1>
<h3 class="doxsection"><a class="anchor" id="общие-утилиты-mylibs-ref-mylibs_tools"></a>
Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)</h3>
<ul>
<li>Макросы для задержек и утилит (<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html">Delays defines</a> и <a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html">Utils defines</a>)</li>
<li>Трекеры для статистики и отладки (<a class="el" href="group___t_r_a_c_k_e_r_s.html">Trackers defines</a> и <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>)</li>
<li>Эволюционный алгоритм для оптимизации параметров (<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html">Genetic optimizer</a>)</li>
<li>Макросы для задержек (<a class="el" href="group___d_e_l_a_y_s___d_e_f_i_n_e_s.html">Delays defines</a>)</li>
<li>Утилиты для работы с всяким (<a class="el" href="group___u_t_i_l_s___d_e_f_i_n_e_s.html">Utils defines</a>)</li>
<li>Битовый доступ к регистрам через union (<a class="el" href="group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html">Bit access defines</a>)</li>
</ul>
<h3 class="doxsection"><a class="anchor" id="trace_module"></a>
Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a></h3>
<h3 class="doxsection"><a class="anchor" id="отладка-ref-mylibs_debug_tools"></a>
Отладка* (<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>)</h3>
<ul>
<li>Serial трассировка через SWO и RTT (<a class="el" href="group___t_r_a_c_e___s_e_r_i_a_l.html">Serial trace defines</a>)</li>
<li>GPIO трассировка для отладки (<a class="el" href="group___t_r_a_c_e___g_p_i_o.html">GPIO trace defines</a>)</li>
<li>Сохранение логов в Flash память (<a class="el" href="group___t_r_a_c_e___r_t_t___f_l_a_s_h.html">Flash RTT Buffer</a>)</li>
<li>Обработка HardFault с сохранением контекста (<a class="el" href="group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html">Hardfault trace defines</a>)</li>
<li>Трассировка (<a class="el" href="group___t_r_a_c_e.html">Trace defines</a>)</li>
<li>Измерение временных интервалов (<a class="el" href="group___b_e_n_c_h___t_i_m_e.html">Time measurement</a>)</li>
<li>Генетический алгоритм для оптимизации параметров (<a class="el" href="group___g_e_n___o_p_t_i_m_i_z_e_r.html">Genetic optimizer</a>)</li>
<li>Трекеры для статистики и отладки (<a class="el" href="group___t_r_a_c_k_e_r_s.html">Trackers defines</a>)</li>
</ul>
<h3 class="doxsection"><a class="anchor" id="gpio_module"></a>
Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a></h3>
<ul>
<li>Инициализация портов и тактирования (<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html">General tools</a>)</li>
<li>Управление светодиодами (включение/выключение, моргание, плавное затухание) (<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html">LED tools</a>)</li>
<li>Работа с кнопками (чтение состояния, фильтрация дребезга) (<a class="el" href="group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html">Switch tools</a>)</li>
</ul>
<h3 class="doxsection"><a class="anchor" id="tim_module"></a>
Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a></h3>
<ul>
<li>Базовая инициализация таймеров (<a class="el" href="group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html">General tools</a>)</li>
<li>Формирование задержек (блокирующие и неблокирующие) (<a class="el" href="group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html">Delay tools</a>)</li>
<li>Работа с энкодерами (чтение положения, обработка кнопок) (<a class="el" href="group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html">Encoder tools</a>)</li>
<li>Настройка ШИМ и Output Compare (<a class="el" href="group___m_y_l_i_b_s___t_i_m___o_c.html">PWM/OC Channels tools</a>)</li>
</ul>
<h3 class="doxsection"><a class="anchor" id="uart_module"></a>
Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a></h3>
<ul>
<li>Базовая инициализация UART и его пинов одной функцией (<a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154">UART_Base_Init</a>)</li>
</ul>
<h3 class="doxsection"><a class="anchor" id="spi_module"></a>
Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a></h3>
<ul>
<li>Базовая инициализация SPI и пинов одной функцией (<a class="el" href="group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba">SPI_Base_Init</a>)</li>
</ul>
<h2 class="doxsection"><a class="anchor" id="structure"></a>
Структура проекта</h2>
<div class="fragment"><div class="line">ProjectRoot/</div>
<p><em>*Модули отладки независимы от MyLibs и могут быть использованы отдельно</em></p>
<h1 class="doxsection"><a class="anchor" id="структура-библиотеки"></a>
Структура библиотеки</h1>
<p>*Note: Файлы начинающиеся с <span class="tt">__</span> и которых нет в этом дереве являются **внутренними/непротестированными/недокументированными*** </p><div class="fragment"><div class="line">ProjectRoot/</div>
<div class="line">├── MyLibs/ # Общие библиотеки, независимые от платформы (или почти)</div>
<div class="line">│ ├── inc/</div>
<div class="line">│ │ ├── mylibs_include.h # Главный include файл</div>
<div class="line">│ │ ├── mylibs_config.h # Конфигурация библиотек</div>
<div class="line">│ │ ├── __mylibs_include.h # Главный include файл</div>
<div class="line">│ │ ├── __mylibs_config.h # Конфигурация библиотек</div>
<div class="line">│ │ ├── mylibs_defs.h # Общие определения и макросы</div>
<div class="line">│ │ ├── bit_access.h # Битовый доступ к регистрам</div>
<div class="line">│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)</div>
@ -163,35 +134,46 @@ $(function(){initNavTree('index.html','',''); });
<div class="line">│ │ └── trace.h # Трассировка и логирование</div>
<div class="line">│ └── src/</div>
<div class="line"></div>
<div class="line">├──RTT # Библиотека RTT</div>
<div class="line">│ ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT</div>
<div class="line">│ ├── SEGGER_RTT.c # Основной модуль RTT</div>
<div class="line">│ ├── SEGGER_RTT.h # Основной заголовок RTT</div>
<div class="line">│ ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M</div>
<div class="line">│ └── SEGGER_RTT_printf.c # Реализация printf() через RTT</div>
<div class="line"></div>
<div class="line">└── STM32_General <span class="preprocessor"># Работа с периферией STM32</span></div>
<div class="line"> ├── inc/</div>
<div class="line"> │ ├── general_gpio.h # Работа с GPIO</div>
<div class="line"> │ ├── general_spi.h # Работа с SPI</div>
<div class="line"> │ ├── general_tim.h # Работа с таймерами</div>
<div class="line"> │ └── general_uart.h # Работа с UART</div>
<div class="line"> └── src/</div>
<div class="line"> ├── general_gpio.c # Реализация GPIO</div>
<div class="line"> ├── general_spi.c # Реализация SPI</div>
<div class="line"> ├── general_tim.c # Реализация TIM</div>
<div class="line"> └── general_uart.c # Реализация UART</div>
</div><!-- fragment --><h2 class="doxsection"><a class="anchor" id="usage_basic"></a>
Использование</h2>
<p>Инструкция по подключению:</p>
<div class="line">└──RTT # Библиотека RTT</div>
<div class="line"> ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT</div>
<div class="line"> ├── SEGGER_RTT.c # Основной модуль RTT</div>
<div class="line"> ├── SEGGER_RTT.h # Основной заголовок RTT</div>
<div class="line"> ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M</div>
<div class="line"> └── SEGGER_RTT_printf.c # Реализация printf() через RTT</div>
</div><!-- fragment --><h1 class="doxsection"><a class="anchor" id="инструкция-по-подключению"></a>
Инструкция по подключению</h1>
<ol type="1">
<li>Настройте конфигурацию <a class="el" href="group___m_y_l_i_b_s___c_o_n_f_i_g.html">Configs</a> в <a class="el" href="mylibs__config_8h.html">mylibs_config.h</a></li>
<li>Подключите главный заголовочный файл: <div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="mylibs__include_8h.html">mylibs_include.h</a>&quot;</span></div>
<div class="ttc" id="amylibs__include_8h_html"><div class="ttname"><a href="mylibs__include_8h.html">mylibs_include.h</a></div><div class="ttdoc">Заголочный файл для всех библиотек</div></div>
</div><!-- fragment --></li>
<li>Используйте нужные модули в своем коде. Примеры использования приведены в соответствующей теме </li>
<li><b>Склонируйте субмодуль</b> в ваш проект:</li>
</ol>
</div></div><!-- PageDoc -->
<div class="fragment"><div class="line">git submodule add https://git.arktika.cyou/Razvalyaev/STM32_ExtendedLibs path/to/ExtendedLibs</div>
<div class="line">git submodule update --init --recursive</div>
</div><!-- fragment --><ol type="1">
<li><b>Скопируйте файлы конфигурации и главный include</b> в отдельную папку в вашем проекте (вне субмодуля) и удалите <span class="tt">__</span>:</li>
</ol>
<div class="fragment"><div class="line">ProjectRoot/</div>
<div class="line">├── Configs/</div>
<div class="line">│ ├── mylibs_include.h</div>
<div class="line">│ └── mylibs_config.h</div>
<div class="line">│ └── SEGGER_RTT_Conf.h</div>
</div><!-- fragment --><ol type="1">
<li><b>Настройте конфигурацию</b> под ваш проект:</li>
</ol>
<ul>
<li><span class="tt">mylibs_config.h</span> — задайте нужные параметры библиотек.</li>
<li><span class="tt">mylibs_include.h</span> — укажите пути к вашим заголовочным файлам и подключаемым модулям.</li>
<li><span class="tt">SEGGER_RTT_Conf.h</span> — настройки RTT.</li>
</ul>
<ol type="1">
<li><b>Подключайте библиотеки в вашем коде</b> через главный include файл:</li>
</ol>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="mylibs__include_8h.html">mylibs_include.h</a>&quot;</span></div>
<div class="ttc" id="amylibs__include_8h_html"><div class="ttname"><a href="mylibs__include_8h.html">mylibs_include.h</a></div><div class="ttdoc">Заголочный файл для всех библиотек</div></div>
</div><!-- fragment --><ol type="1">
<li><b>Обновление библиотеки</b>:</li>
</ol>
<p>После обновления субмодуля из Git, исходные файлы библиотеки будут обновлены, но ваши конфиги останутся в целевой папке и не перезапишутся:</p>
<div class="fragment"><div class="line">git submodule update --remote</div>
</div><!-- fragment --> </div></div><!-- PageDoc -->
<a href="doxygen_crawl.html"></a>
</div><!-- contents -->
</div><!-- doc-content -->

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