Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
a61c4d726This file is pinned to the selected release. Download the original to open it in your design tool.
<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>DIY Logging Volt/Ampmeter: STM32F103C8T6_powermeter-interface/Drivers/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>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">DIY Logging Volt/Ampmeter
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */</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">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('SEGGER__RTT__Conf_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">SEGGER_RTT_Conf.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="SEGGER__RTT__Conf_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">* SEGGER Microcontroller GmbH *</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">* The Embedded Experts *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">**********************************************************************</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">* *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">* (c) 1995 - 2020 SEGGER Microcontroller GmbH *</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">* *</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">* www.segger.com Support: support@segger.com *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">* *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">**********************************************************************</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">* *</span></div>
<div class="line"><a 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 name="l00013"></a><span class="lineno"> 13</span> <span class="comment">* *</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">**********************************************************************</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">* *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">* All rights reserved. *</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">* *</span></div>
<div class="line"><a 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 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 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 name="l00021"></a><span class="lineno"> 21</span> <span class="comment">* *</span></div>
<div class="line"><a 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 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 name="l00024"></a><span class="lineno"> 24</span> <span class="comment">* condition is met: *</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">* *</span></div>
<div class="line"><a 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 name="l00027"></a><span class="lineno"> 27</span> <span class="comment">* notice, this condition and the following disclaimer. *</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">* *</span></div>
<div class="line"><a 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 name="l00030"></a><span class="lineno"> 30</span> <span class="comment">* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *</span></div>
<div class="line"><a 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 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 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 name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *</span></div>
<div class="line"><a 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 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 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 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 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 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 name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* DAMAGE. *</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">* *</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">**********************************************************************</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">---------------------------END-OF-HEADER------------------------------</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">File : SEGGER_RTT_Conf.h</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">Purpose : Implementation of SEGGER real-time transfer (RTT) which</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment"> allows real-time communication on targets which support</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> debugger memory accesses while the CPU is running.</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">Revision: $Rev: 21386 $</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"></span> </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#ifndef SEGGER_RTT_CONF_H</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define SEGGER_RTT_CONF_H</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#ifdef __IAR_SYSTEMS_ICC__</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"> #include <intrinsics.h></span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">*</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">* Defines, configurable</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">*</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">**********************************************************************</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">//</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// Take in and set to correct values for Cortex-A systems with CPU cache</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">//</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</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 name="l00071"></a><span class="lineno"> 71</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 name="l00072"></a><span class="lineno"> 72</span> <span class="comment">//</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// Most common case:</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// Up-channel 0: RTT</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// Up-channel 1: SystemView</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">//</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#aa17bd49916a33976d490454904aa05de"> 78</a></span> <span class="preprocessor"> #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3)</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">//</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// Most common case:</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Down-channel 0: RTT</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// Down-channel 1: SystemView</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">//</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#a6cee879ba1155278a731c5c798e15507"> 86</a></span> <span class="preprocessor"> #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3)</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#ifndef BUFFER_SIZE_UP</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#a48fe9dce1ef17af2428f7e0dd14287b7"> 90</a></span> <span class="preprocessor"> #define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k)</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#ifndef BUFFER_SIZE_DOWN</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#a45d0588b5c437ab9541849fbcb6db22f"> 94</a></span> <span class="preprocessor"> #define BUFFER_SIZE_DOWN (16) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#a077a1988b454a012aeafa0f7f0a63c95"> 98</a></span> <span class="preprocessor"> #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64)</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#ifndef SEGGER_RTT_MODE_DEFAULT</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#aebca59f004108387a23928d19c175609"> 102</a></span> <span class="preprocessor"> #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0)</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">*</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">* RTT memcpy configuration</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">*</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">* memcpy() is good for large amounts of data,</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">* but the overhead is big for small amounts, which are usually stored via RTT.</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">* With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead.</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">*</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">* SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions.</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">* This is may be required with memory access restrictions,</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">* such as on Cortex-A devices with MMU.</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#a02ef628603ae170094acb9ded76fb999"> 118</a></span> <span class="preprocessor"> #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 // 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">//</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</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 name="l00122"></a><span class="lineno"> 122</span> <span class="comment">//</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) && (defined (__ARM_ARCH_7A__))</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes))</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">//#endif</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">//</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</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 name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// Otherwise we would probably end up with a mixed string in the buffer.</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</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 name="l00131"></a><span class="lineno"> 131</span> <span class="comment">//</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</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 name="l00133"></a><span class="lineno"> 133</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 name="l00134"></a><span class="lineno"> 134</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 name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// (Higher priority = lower priority number)</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// Default value for embOS: 128u</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// or define SEGGER_RTT_LOCK() to completely disable interrupts.</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="comment">//</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#a3a6e6b8c881def6828237c8ea697617f"> 142</a></span> <span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20)</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">*</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">* RTT lock configuration for SEGGER Embedded Studio,</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">* Rowley CrossStudio and GCC</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32))</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor"> #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__))</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor"> __asm volatile ("mrs %0, primask \n\t" \</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"> "movs r1, #1 \n\t" \</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor"> "msr primask, r1 \n\t" \</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor"> : "=r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor"> : "r1", "cc" \</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor"> );</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor"> : "r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor"> ); \</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor"> #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__))</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor"> __asm volatile ("mrs %0, basepri \n\t" \</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"> "mov r1, %1 \n\t" \</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor"> "msr basepri, r1 \n\t" \</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor"> : "=r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor"> : "i"(SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"> : "r1", "cc" \</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor"> );</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor"> : "r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor"> ); \</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor"> #elif defined(__ARM_ARCH_7A__)</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor"> __asm volatile ("mrs r1, CPSR \n\t" \</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor"> "mov %0, r1 \n\t" \</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor"> "orr r1, r1, #0xC0 \n\t" \</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor"> "msr CPSR_c, r1 \n\t" \</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor"> : "=r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor"> : "r1", "cc" \</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor"> );</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor"> "mrs r1, CPSR \n\t" \</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor"> "bic r1, r1, #0xC0 \n\t" \</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor"> "and r0, r0, #0xC0 \n\t" \</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor"> "orr r1, r1, r0 \n\t" \</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor"> "msr CPSR_c, r1 \n\t" \</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"> : "r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor"> : "r0", "r1", "cc" \</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor"> ); \</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor"> #elif defined(__riscv) || defined(__riscv_xlen)</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor"> __asm volatile ("csrr %0, mstatus \n\t" \</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> "csrci mstatus, 8 \n\t" \</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> "andi %0, %0, 8 \n\t" \</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor"> : "=r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor"> );</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile ("csrr a1, mstatus \n\t" \</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="preprocessor"> "or %0, %0, a1 \n\t" \</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor"> "csrs mstatus, %0 \n\t" \</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor"> : "r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"> : "a1" \</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor"> ); \</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK()</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK()</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">*</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment">* RTT lock configuration for IAR EWARM</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="preprocessor">#ifdef __ICCARM__</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor"> #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) || \</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__))</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor"> _SEGGER_RTT__LockState = __get_PRIMASK(); \</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor"> __set_PRIMASK(1);</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor"> #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || \</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor"> (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || \</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor"> (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) || \</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor"> (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__))</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="preprocessor"> _SEGGER_RTT__LockState = __get_BASEPRI(); \</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="preprocessor"> __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  </div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="preprocessor"> #elif (defined (__ARM7A__) && (__CORE__ == __ARM7A__)) || \</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor"> (defined (__ARM7R__) && (__CORE__ == __ARM7R__))</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor"> __asm volatile ("mrs r1, CPSR \n\t" \</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor"> "mov %0, r1 \n\t" \</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor"> "orr r1, r1, #0xC0 \n\t" \</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="preprocessor"> "msr CPSR_c, r1 \n\t" \</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="preprocessor"> : "=r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"> : "r1", "cc" \</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor"> );</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  </div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"> "mrs r1, CPSR \n\t" \</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor"> "bic r1, r1, #0xC0 \n\t" \</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor"> "and r0, r0, #0xC0 \n\t" \</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor"> "orr r1, r1, r0 \n\t" \</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor"> "msr CPSR_c, r1 \n\t" \</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor"> : \</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor"> : "r" (_SEGGER_RTT__LockState) \</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor"> : "r0", "r1", "cc" \</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor"> ); \</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  </div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="comment">*</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="comment">* RTT lock configuration for IAR RX</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor">#ifdef __ICCRX__</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor"> unsigned long _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor"> _SEGGER_RTT__LockState = __get_interrupt_state(); \</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor"> __disable_interrupt();</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  </div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="comment">*</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="comment">* RTT lock configuration for IAR RL78</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor">#ifdef __ICCRL78__</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor"> __istate_t _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor"> _SEGGER_RTT__LockState = __get_interrupt_state(); \</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor"> __disable_interrupt();</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  </div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  </div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="comment">*</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="comment">* RTT lock configuration for KEIL ARM</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#ifdef __CC_ARM</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="preprocessor"> #if (defined __TARGET_ARCH_6S_M)</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor"> register unsigned char _SEGGER_RTT__PRIMASK __asm( "primask"); \</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor"> _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor"> _SEGGER_RTT__PRIMASK = 1u; \</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"> __schedule_barrier();</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor"> __schedule_barrier(); \</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor"> #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"> register unsigned char BASEPRI __asm( "basepri"); \</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor"> _SEGGER_RTT__LockState = BASEPRI; \</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor"> BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor"> __schedule_barrier();</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  </div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor"> __schedule_barrier(); \</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  </div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="comment">*</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="comment">* RTT lock configuration for TI ARM</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor">#ifdef __TI_ARM__</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="preprocessor"> #if defined (__TI_ARM_V6M0__)</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor"> _SEGGER_RTT__LockState = __get_PRIMASK(); \</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor"> __set_PRIMASK(1);</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  </div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"> #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__))</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"> #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor"> unsigned int _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="preprocessor"> _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  </div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  </div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="comment">*</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="comment">* RTT lock configuration for CCRX</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#ifdef __RX</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor"> #include <machine.h></span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor"> unsigned long _SEGGER_RTT__LockState; \</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor"> _SEGGER_RTT__LockState = get_psw() & 0x010000; \</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor"> clrpsw_i();</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  </div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  </div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="comment">*</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="comment">* RTT lock configuration for embOS Simulation on Windows</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="comment">* (Can also be used for generic RTT locking with embOS)</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor">#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS)</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="keywordtype">void</span> OS_SIM_EnterCriticalSection(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="keywordtype">void</span> OS_SIM_LeaveCriticalSection(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  </div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="preprocessor">#define SEGGER_RTT_LOCK() { \</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="preprocessor"> OS_SIM_EnterCriticalSection();</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  </div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor">#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  </div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment">/*********************************************************************</span></div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="comment">*</span></div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="comment">* RTT lock configuration fallback</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#ifndef SEGGER_RTT_LOCK</span></div>
<div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#aa20599b1a15ec8e0f7886df26c04a381"> 416</a></span> <span class="preprocessor"> #define SEGGER_RTT_LOCK() // Lock RTT (nestable) (i.e. disable interrupts)</span></div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  </div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="preprocessor">#ifndef SEGGER_RTT_UNLOCK</span></div>
<div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="SEGGER__RTT__Conf_8h.html#a23e2c84120db13475b1f31d3ba707d58"> 420</a></span> <span class="preprocessor"> #define SEGGER_RTT_UNLOCK() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state)</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  </div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="comment">/*************************** End of file ****************************/</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_4e5f16ccb0512908371dae1ef268cc7e.html">STM32F103C8T6_powermeter-interface</a></li><li class="navelem"><a class="el" href="dir_4a957a805603a308ca7ef702854b01cc.html">Drivers</a></li><li class="navelem"><a class="el" href="dir_2f93a1c982b4b342d3e3419801723bd0.html">RTT</a></li><li class="navelem"><a class="el" href="SEGGER__RTT__Conf_8h.html">SEGGER_RTT_Conf.h</a></li>
<li class="footer">Generated on Mon Dec 13 2021 16:18:48 for DIY Logging Volt/Ampmeter by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>
</div>
</body>
</html>