diff --git a/Doc/Doxyfile b/Doc/Doxyfile index 71d218b..bba7b58 100644 --- a/Doc/Doxyfile +++ b/Doc/Doxyfile @@ -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. diff --git a/Doc/html/_s_e_g_g_e_r___r_t_t_8c_source.html b/Doc/html/_s_e_g_g_e_r___r_t_t_8c_source.html new file mode 100644 index 0000000..fb443ed --- /dev/null +++ b/Doc/html/_s_e_g_g_e_r___r_t_t_8c_source.html @@ -0,0 +1,2216 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT.c Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SEGGER_RTT.c
+
+
+
1/*********************************************************************
+
2* SEGGER Microcontroller GmbH *
+
3* The Embedded Experts *
+
4**********************************************************************
+
5* *
+
6* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
+
7* *
+
8* www.segger.com Support: support@segger.com *
+
9* *
+
10**********************************************************************
+
11* *
+
12* SEGGER RTT * Real Time Transfer for embedded targets *
+
13* *
+
14**********************************************************************
+
15* *
+
16* All rights reserved. *
+
17* *
+
18* SEGGER strongly recommends to not make any changes *
+
19* to or modify the source code of this software in order to stay *
+
20* compatible with the RTT protocol and J-Link. *
+
21* *
+
22* Redistribution and use in source and binary forms, with or *
+
23* without modification, are permitted provided that the following *
+
24* condition is met: *
+
25* *
+
26* o Redistributions of source code must retain the above copyright *
+
27* notice, this condition and the following disclaimer. *
+
28* *
+
29* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
+
30* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
+
31* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
+
32* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
+
33* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
+
34* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
+
35* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
+
36* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
+
37* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
+
38* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+
39* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
+
40* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
+
41* DAMAGE. *
+
42* *
+
43**********************************************************************
+
44* *
+
45* RTT version: 8.10g *
+
46* *
+
47**********************************************************************
+
48
+
49---------------------------END-OF-HEADER------------------------------
+
50File : SEGGER_RTT.c
+
51Purpose : Implementation of SEGGER real-time transfer (RTT) which
+
52 allows real-time communication on targets which support
+
53 debugger memory accesses while the CPU is running.
+
54Revision: $Rev: 29668 $
+
55
+
56Additional information:
+
57 Type "int" is assumed to be 32-bits in size
+
58 H->T Host to target communication
+
59 T->H Target to host communication
+
60
+
61 RTT channel 0 is always present and reserved for Terminal usage.
+
62 Name is fixed to "Terminal"
+
63
+
64 Effective buffer size: SizeOfBuffer - 1
+
65
+
66 WrOff == RdOff: Buffer is empty
+
67 WrOff == (RdOff - 1): Buffer is full
+
68 WrOff > RdOff: Free space includes wrap-around
+
69 WrOff < RdOff: Used space includes wrap-around
+
70 (WrOff == (SizeOfBuffer - 1)) && (RdOff == 0):
+
71 Buffer full and wrap-around after next byte
+
72
+
73
+
74----------------------------------------------------------------------
+
75*/
+
76
+
77#include "SEGGER_RTT.h"
+
78
+
79#include <string.h> // for memcpy
+
80
+
81/*********************************************************************
+
82*
+
83* Configuration, default values
+
84*
+
85**********************************************************************
+
86*/
+
87
+
88#if SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
89 #ifdef SEGGER_RTT_CB_ALIGN
+
90 #error "Custom SEGGER_RTT_CB_ALIGN() is not supported for SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
91 #endif
+
92 #ifdef SEGGER_RTT_BUFFER_ALIGN
+
93 #error "Custom SEGGER_RTT_BUFFER_ALIGN() is not supported for SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
94 #endif
+
95 #ifdef SEGGER_RTT_PUT_CB_SECTION
+
96 #error "Custom SEGGER_RTT_PUT_CB_SECTION() is not supported for SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
97 #endif
+
98 #ifdef SEGGER_RTT_PUT_BUFFER_SECTION
+
99 #error "Custom SEGGER_RTT_PUT_BUFFER_SECTION() is not supported for SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
100 #endif
+
101 #ifdef SEGGER_RTT_BUFFER_ALIGNMENT
+
102 #error "Custom SEGGER_RTT_BUFFER_ALIGNMENT is not supported for SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
103 #endif
+
104 #ifdef SEGGER_RTT_ALIGNMENT
+
105 #error "Custom SEGGER_RTT_ALIGNMENT is not supported for SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
106 #endif
+
107#endif
+
108
+
109#ifndef BUFFER_SIZE_UP
+
110 #define BUFFER_SIZE_UP 1024 // Size of the buffer for terminal output of target, up to host
+
111#endif
+
112
+
113#ifndef BUFFER_SIZE_DOWN
+
114 #define BUFFER_SIZE_DOWN 16 // Size of the buffer for terminal input to target from host (Usually keyboard input)
+
115#endif
+
116
+
117#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS
+
118 #define SEGGER_RTT_MAX_NUM_UP_BUFFERS 2 // Number of up-buffers (T->H) available on this target
+
119#endif
+
120
+
121#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS
+
122 #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS 2 // Number of down-buffers (H->T) available on this target
+
123#endif
+
124
+
125#ifndef SEGGER_RTT_BUFFER_SECTION
+
126 #if defined(SEGGER_RTT_SECTION)
+
127 #define SEGGER_RTT_BUFFER_SECTION SEGGER_RTT_SECTION
+
128 #endif
+
129#endif
+
130
+
131#ifndef SEGGER_RTT_ALIGNMENT
+
132 #define SEGGER_RTT_ALIGNMENT SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
133#endif
+
134
+
135#ifndef SEGGER_RTT_BUFFER_ALIGNMENT
+
136 #define SEGGER_RTT_BUFFER_ALIGNMENT SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
137#endif
+
138
+
139#ifndef SEGGER_RTT_MODE_DEFAULT
+
140 #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP
+
141#endif
+
142
+
143#ifndef SEGGER_RTT_LOCK
+
144 #define SEGGER_RTT_LOCK()
+
145#endif
+
146
+
147#ifndef SEGGER_RTT_UNLOCK
+
148 #define SEGGER_RTT_UNLOCK()
+
149#endif
+
150
+
151#ifndef STRLEN
+
152 #define STRLEN(a) strlen((a))
+
153#endif
+
154
+
155#ifndef STRCPY
+
156 #define STRCPY(pDest, pSrc) strcpy((pDest), (pSrc))
+
157#endif
+
158
+
159#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
160 #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0
+
161#endif
+
162
+
163#ifndef SEGGER_RTT_MEMCPY
+
164 #ifdef MEMCPY
+
165 #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) MEMCPY((pDest), (pSrc), (NumBytes))
+
166 #else
+
167 #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) memcpy((pDest), (pSrc), (NumBytes))
+
168 #endif
+
169#endif
+
170
+
171#ifndef MIN
+
172 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
+
173#endif
+
174
+
175#ifndef MAX
+
176 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
+
177#endif
+
178
+
179/*********************************************************************
+
180*
+
181* Defines, fixed
+
182*
+
183**********************************************************************
+
184*/
+
185#if (defined __ICCARM__) || (defined __ICCRX__)
+
186 #define RTT_PRAGMA(P) _Pragma(#P)
+
187#endif
+
188
+
189#if SEGGER_RTT_ALIGNMENT || SEGGER_RTT_BUFFER_ALIGNMENT
+
190 #if ((defined __GNUC__) || (defined __clang__))
+
191 #define SEGGER_RTT_ALIGN(Var, Alignment) Var __attribute__ ((aligned (Alignment)))
+
192 #elif (defined __ICCARM__) || (defined __ICCRX__)
+
193 #define PRAGMA(A) _Pragma(#A)
+
194#define SEGGER_RTT_ALIGN(Var, Alignment) RTT_PRAGMA(data_alignment=Alignment) \
+
195 Var
+
196 #elif (defined __CC_ARM)
+
197 #define SEGGER_RTT_ALIGN(Var, Alignment) Var __attribute__ ((aligned (Alignment)))
+
198 #else
+
199 #error "Alignment not supported for this compiler."
+
200 #endif
+
201#else
+
202 #define SEGGER_RTT_ALIGN(Var, Alignment) Var
+
203#endif
+
204
+
205#if defined(SEGGER_RTT_SECTION) || defined (SEGGER_RTT_BUFFER_SECTION)
+
206 #if ((defined __GNUC__) || (defined __clang__))
+
207 #define SEGGER_RTT_PUT_SECTION(Var, Section) __attribute__ ((section (Section))) Var
+
208 #elif (defined __ICCARM__) || (defined __ICCRX__)
+
209#define SEGGER_RTT_PUT_SECTION(Var, Section) RTT_PRAGMA(location=Section) \
+
210 Var
+
211 #elif (defined __CC_ARM)
+
212 #define SEGGER_RTT_PUT_SECTION(Var, Section) __attribute__ ((section (Section), zero_init)) Var
+
213 #else
+
214 #error "Section placement not supported for this compiler."
+
215 #endif
+
216#else
+
217 #define SEGGER_RTT_PUT_SECTION(Var, Section) Var
+
218#endif
+
219
+
220#if SEGGER_RTT_ALIGNMENT
+
221 #define SEGGER_RTT_CB_ALIGN(Var) SEGGER_RTT_ALIGN(Var, SEGGER_RTT_ALIGNMENT)
+
222#else
+
223 #define SEGGER_RTT_CB_ALIGN(Var) Var
+
224#endif
+
225
+
226#if SEGGER_RTT_BUFFER_ALIGNMENT
+
227 #define SEGGER_RTT_BUFFER_ALIGN(Var) SEGGER_RTT_ALIGN(Var, SEGGER_RTT_BUFFER_ALIGNMENT)
+
228#else
+
229 #define SEGGER_RTT_BUFFER_ALIGN(Var) Var
+
230#endif
+
231
+
232
+
233#if defined(SEGGER_RTT_SECTION)
+
234 #define SEGGER_RTT_PUT_CB_SECTION(Var) SEGGER_RTT_PUT_SECTION(Var, SEGGER_RTT_SECTION)
+
235#else
+
236 #define SEGGER_RTT_PUT_CB_SECTION(Var) Var
+
237#endif
+
238
+
239#if defined(SEGGER_RTT_BUFFER_SECTION)
+
240 #define SEGGER_RTT_PUT_BUFFER_SECTION(Var) SEGGER_RTT_PUT_SECTION(Var, SEGGER_RTT_BUFFER_SECTION)
+
241#else
+
242 #define SEGGER_RTT_PUT_BUFFER_SECTION(Var) Var
+
243#endif
+
244
+
245/*********************************************************************
+
246*
+
247* Static const data
+
248*
+
249**********************************************************************
+
250*/
+
251
+
252static const unsigned char _aTerminalId[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+
253
+
254/*********************************************************************
+
255*
+
256* Static data
+
257*
+
258**********************************************************************
+
259*/
+
260
+
261//
+
262// RTT Control Block and allocate buffers for channel 0
+
263//
+
264#if SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
265 #if ((defined __GNUC__) || (defined __clang__))
+
266 SEGGER_RTT_CB _SEGGER_RTT __attribute__ ((aligned (SEGGER_RTT_CPU_CACHE_LINE_SIZE)));
+
267 static char _acUpBuffer [SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(BUFFER_SIZE_UP)] __attribute__ ((aligned (SEGGER_RTT_CPU_CACHE_LINE_SIZE)));
+
268 static char _acDownBuffer[SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(BUFFER_SIZE_DOWN)] __attribute__ ((aligned (SEGGER_RTT_CPU_CACHE_LINE_SIZE)));
+
269 #elif (defined __ICCARM__)
+
270 #pragma data_alignment=SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
271 SEGGER_RTT_CB _SEGGER_RTT;
+
272 #pragma data_alignment=SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
273 static char _acUpBuffer [SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(BUFFER_SIZE_UP)];
+
274 #pragma data_alignment=SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
275 static char _acDownBuffer[SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(BUFFER_SIZE_DOWN)];
+
276 #else
+
277 #error "Don't know how to place _SEGGER_RTT, _acUpBuffer, _acDownBuffer cache-line aligned"
+
278 #endif
+
279#else
+
280 SEGGER_RTT_PUT_CB_SECTION(SEGGER_RTT_CB_ALIGN(SEGGER_RTT_CB _SEGGER_RTT));
+
281 SEGGER_RTT_PUT_BUFFER_SECTION(SEGGER_RTT_BUFFER_ALIGN(static char _acUpBuffer [BUFFER_SIZE_UP]));
+
282 SEGGER_RTT_PUT_BUFFER_SECTION(SEGGER_RTT_BUFFER_ALIGN(static char _acDownBuffer[BUFFER_SIZE_DOWN]));
+
283#endif
+
284
+
285static unsigned char _ActiveTerminal;
+
286
+
287/*********************************************************************
+
288*
+
289* Static functions
+
290*
+
291**********************************************************************
+
292*/
+
293
+
294/*********************************************************************
+
295*
+
296* _DoInit()
+
297*
+
298* Function description
+
299* Initializes the control block an buffers.
+
300*
+
301* Notes
+
302* (1) May only be called via INIT() to avoid overriding settings.
+
303* The only exception is SEGGER_RTT_Init(), to make an intentional override possible.
+
304*/
+
305 #define INIT() \
+
306 do { \
+
307 volatile SEGGER_RTT_CB* pRTTCBInit; \
+
308 pRTTCBInit = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); \
+
309 if (pRTTCBInit->acID[0] != 'S') { \
+
310 _DoInit(); \
+
311 } \
+
312 } while (0)
+
313
+
314static void _DoInit(void) {
+
315 volatile SEGGER_RTT_CB* p; // Volatile to make sure that compiler cannot change the order of accesses to the control block
+
316 static const char _aInitStr[] = "\0\0\0\0\0\0TTR REGGES"; // Init complete ID string to make sure that things also work if RTT is linked to a no-init memory area
+
317 unsigned i;
+
318 //
+
319 // Initialize control block
+
320 //
+
321 p = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access control block uncached so that nothing in the cache ever becomes dirty and all changes are visible in HW directly
+
322 memset((SEGGER_RTT_CB*)p, 0, sizeof(_SEGGER_RTT)); // Make sure that the RTT CB is always zero initialized.
+
323 p->MaxNumUpBuffers = SEGGER_RTT_MAX_NUM_UP_BUFFERS;
+
324 p->MaxNumDownBuffers = SEGGER_RTT_MAX_NUM_DOWN_BUFFERS;
+
325 //
+
326 // Initialize up buffer 0
+
327 //
+
328 p->aUp[0].sName = "Terminal";
+
329 p->aUp[0].pBuffer = _acUpBuffer;
+
330 p->aUp[0].SizeOfBuffer = BUFFER_SIZE_UP;
+
331 p->aUp[0].RdOff = 0u;
+
332 p->aUp[0].WrOff = 0u;
+
333 p->aUp[0].Flags = SEGGER_RTT_MODE_DEFAULT;
+
334 //
+
335 // Initialize down buffer 0
+
336 //
+
337 p->aDown[0].sName = "Terminal";
+
338 p->aDown[0].pBuffer = _acDownBuffer;
+
339 p->aDown[0].SizeOfBuffer = BUFFER_SIZE_DOWN;
+
340 p->aDown[0].RdOff = 0u;
+
341 p->aDown[0].WrOff = 0u;
+
342 p->aDown[0].Flags = SEGGER_RTT_MODE_DEFAULT;
+
343 //
+
344 // Finish initialization of the control block.
+
345 // Copy Id string backwards to make sure that "SEGGER RTT" is not found in initializer memory (usually flash),
+
346 // as this would cause J-Link to "find" the control block at a wrong address.
+
347 //
+
348 RTT__DMB(); // Force order of memory accesses for cores that may perform out-of-order memory accesses
+
349 for (i = 0; i < sizeof(_aInitStr) - 1; ++i) {
+
350 p->acID[i] = _aInitStr[sizeof(_aInitStr) - 2 - i]; // Skip terminating \0 at the end of the array
+
351 }
+
352 RTT__DMB(); // Force order of memory accesses for cores that may perform out-of-order memory accesses
+
353}
+
354
+
355/*********************************************************************
+
356*
+
357* _WriteBlocking()
+
358*
+
359* Function description
+
360* Stores a specified number of characters in SEGGER RTT ring buffer
+
361* and updates the associated write pointer which is periodically
+
362* read by the host.
+
363* The caller is responsible for managing the write chunk sizes as
+
364* _WriteBlocking() will block until all data has been posted successfully.
+
365*
+
366* Parameters
+
367* pRing Ring buffer to post to.
+
368* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
369* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
370*
+
371* Return value
+
372* >= 0 - Number of bytes written into buffer.
+
373*/
+
374static unsigned _WriteBlocking(SEGGER_RTT_BUFFER_UP* pRing, const char* pBuffer, unsigned NumBytes) {
+
375 unsigned NumBytesToWrite;
+
376 unsigned NumBytesWritten;
+
377 unsigned RdOff;
+
378 unsigned WrOff;
+
379 volatile char* pDst;
+
380 //
+
381 // Write data to buffer and handle wrap-around if necessary
+
382 //
+
383 NumBytesWritten = 0u;
+
384 WrOff = pRing->WrOff;
+
385 do {
+
386 RdOff = pRing->RdOff; // May be changed by host (debug probe) in the meantime
+
387 if (RdOff > WrOff) {
+
388 NumBytesToWrite = RdOff - WrOff - 1u;
+
389 } else {
+
390 NumBytesToWrite = pRing->SizeOfBuffer - (WrOff - RdOff + 1u);
+
391 }
+
392 NumBytesToWrite = MIN(NumBytesToWrite, (pRing->SizeOfBuffer - WrOff)); // Number of bytes that can be written until buffer wrap-around
+
393 NumBytesToWrite = MIN(NumBytesToWrite, NumBytes);
+
394 pDst = (pRing->pBuffer + WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
395#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
396 NumBytesWritten += NumBytesToWrite;
+
397 NumBytes -= NumBytesToWrite;
+
398 WrOff += NumBytesToWrite;
+
399 while (NumBytesToWrite--) {
+
400 *pDst++ = *pBuffer++;
+
401 };
+
402#else
+
403 SEGGER_RTT_MEMCPY((void*)pDst, pBuffer, NumBytesToWrite);
+
404 NumBytesWritten += NumBytesToWrite;
+
405 pBuffer += NumBytesToWrite;
+
406 NumBytes -= NumBytesToWrite;
+
407 WrOff += NumBytesToWrite;
+
408#endif
+
409 if (WrOff == pRing->SizeOfBuffer) {
+
410 WrOff = 0u;
+
411 }
+
412 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
413 pRing->WrOff = WrOff;
+
414 } while (NumBytes);
+
415 return NumBytesWritten;
+
416}
+
417
+
418/*********************************************************************
+
419*
+
420* _WriteNoCheck()
+
421*
+
422* Function description
+
423* Stores a specified number of characters in SEGGER RTT ring buffer
+
424* and updates the associated write pointer which is periodically
+
425* read by the host.
+
426* It is callers responsibility to make sure data actually fits in buffer.
+
427*
+
428* Parameters
+
429* pRing Ring buffer to post to.
+
430* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
431* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
432*
+
433* Notes
+
434* (1) If there might not be enough space in the "Up"-buffer, call _WriteBlocking
+
435*/
+
436static void _WriteNoCheck(SEGGER_RTT_BUFFER_UP* pRing, const char* pData, unsigned NumBytes) {
+
437 unsigned NumBytesAtOnce;
+
438 unsigned WrOff;
+
439 unsigned Rem;
+
440 volatile char* pDst;
+
441
+
442 WrOff = pRing->WrOff;
+
443 Rem = pRing->SizeOfBuffer - WrOff;
+
444 if (Rem > NumBytes) {
+
445 //
+
446 // All data fits before wrap around
+
447 //
+
448 pDst = (pRing->pBuffer + WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
449#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
450 WrOff += NumBytes;
+
451 while (NumBytes--) {
+
452 *pDst++ = *pData++;
+
453 };
+
454 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
455 pRing->WrOff = WrOff;
+
456#else
+
457 SEGGER_RTT_MEMCPY((void*)pDst, pData, NumBytes);
+
458 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
459 pRing->WrOff = WrOff + NumBytes;
+
460#endif
+
461 } else {
+
462 //
+
463 // We reach the end of the buffer, so need to wrap around
+
464 //
+
465#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
466 pDst = (pRing->pBuffer + WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
467 NumBytesAtOnce = Rem;
+
468 while (NumBytesAtOnce--) {
+
469 *pDst++ = *pData++;
+
470 };
+
471 pDst = pRing->pBuffer + SEGGER_RTT_UNCACHED_OFF;
+
472 NumBytesAtOnce = NumBytes - Rem;
+
473 while (NumBytesAtOnce--) {
+
474 *pDst++ = *pData++;
+
475 };
+
476 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
477 pRing->WrOff = NumBytes - Rem;
+
478#else
+
479 NumBytesAtOnce = Rem;
+
480 pDst = (pRing->pBuffer + WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
481 SEGGER_RTT_MEMCPY((void*)pDst, pData, NumBytesAtOnce);
+
482 NumBytesAtOnce = NumBytes - Rem;
+
483 pDst = pRing->pBuffer + SEGGER_RTT_UNCACHED_OFF;
+
484 SEGGER_RTT_MEMCPY((void*)pDst, pData + Rem, NumBytesAtOnce);
+
485 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
486 pRing->WrOff = NumBytesAtOnce;
+
487#endif
+
488 }
+
489}
+
490
+
491/*********************************************************************
+
492*
+
493* _PostTerminalSwitch()
+
494*
+
495* Function description
+
496* Switch terminal to the given terminal ID. It is the caller's
+
497* responsibility to ensure the terminal ID is correct and there is
+
498* enough space in the buffer for this to complete successfully.
+
499*
+
500* Parameters
+
501* pRing Ring buffer to post to.
+
502* TerminalId Terminal ID to switch to.
+
503*/
+
504static void _PostTerminalSwitch(SEGGER_RTT_BUFFER_UP* pRing, unsigned char TerminalId) {
+
505 unsigned char ac[2];
+
506
+
507 ac[0] = 0xFFu;
+
508 ac[1] = _aTerminalId[TerminalId]; // Caller made already sure that TerminalId does not exceed our terminal limit
+
509 _WriteBlocking(pRing, (const char*)ac, 2u);
+
510}
+
511
+
512/*********************************************************************
+
513*
+
514* _GetAvailWriteSpace()
+
515*
+
516* Function description
+
517* Returns the number of bytes that can be written to the ring
+
518* buffer without blocking.
+
519*
+
520* Parameters
+
521* pRing Ring buffer to check.
+
522*
+
523* Return value
+
524* Number of bytes that are free in the buffer.
+
525*/
+
526static unsigned _GetAvailWriteSpace(SEGGER_RTT_BUFFER_UP* pRing) {
+
527 unsigned RdOff;
+
528 unsigned WrOff;
+
529 unsigned r;
+
530 //
+
531 // Avoid warnings regarding volatile access order. It's not a problem
+
532 // in this case, but dampen compiler enthusiasm.
+
533 //
+
534 RdOff = pRing->RdOff;
+
535 WrOff = pRing->WrOff;
+
536 if (RdOff <= WrOff) {
+
537 r = pRing->SizeOfBuffer - 1u - WrOff + RdOff;
+
538 } else {
+
539 r = RdOff - WrOff - 1u;
+
540 }
+
541 return r;
+
542}
+
543
+
544/*********************************************************************
+
545*
+
546* Public code
+
547*
+
548**********************************************************************
+
549*/
+
550
+
551/*********************************************************************
+
552*
+
553* SEGGER_RTT_ReadUpBufferNoLock()
+
554*
+
555* Function description
+
556* Reads characters from SEGGER real-time-terminal control block
+
557* which have been previously stored by the application.
+
558* Do not lock against interrupts and multiple access.
+
559* Used to do the same operation that J-Link does, to transfer
+
560* RTT data via other channels, such as TCP/IP or UART.
+
561*
+
562* Parameters
+
563* BufferIndex Index of Up-buffer to be used.
+
564* pBuffer Pointer to buffer provided by target application, to copy characters from RTT-up-buffer to.
+
565* BufferSize Size of the target application buffer.
+
566*
+
567* Return value
+
568* Number of bytes that have been read.
+
569*
+
570* Additional information
+
571* This function must not be called when J-Link might also do RTT.
+
572*/
+
573unsigned SEGGER_RTT_ReadUpBufferNoLock(unsigned BufferIndex, void* pData, unsigned BufferSize) {
+
574 unsigned NumBytesRem;
+
575 unsigned NumBytesRead;
+
576 unsigned RdOff;
+
577 unsigned WrOff;
+
578 unsigned char* pBuffer;
+ +
580 volatile char* pSrc;
+
581
+
582 INIT();
+
583 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
584 pBuffer = (unsigned char*)pData;
+
585 RdOff = pRing->RdOff;
+
586 WrOff = pRing->WrOff;
+
587 NumBytesRead = 0u;
+
588 //
+
589 // Read from current read position to wrap-around of buffer, first
+
590 //
+
591 if (RdOff > WrOff) {
+
592 NumBytesRem = pRing->SizeOfBuffer - RdOff;
+
593 NumBytesRem = MIN(NumBytesRem, BufferSize);
+
594 pSrc = (pRing->pBuffer + RdOff) + SEGGER_RTT_UNCACHED_OFF;
+
595#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
596 NumBytesRead += NumBytesRem;
+
597 BufferSize -= NumBytesRem;
+
598 RdOff += NumBytesRem;
+
599 while (NumBytesRem--) {
+
600 *pBuffer++ = *pSrc++;
+
601 };
+
602#else
+
603 SEGGER_RTT_MEMCPY(pBuffer, (void*)pSrc, NumBytesRem);
+
604 NumBytesRead += NumBytesRem;
+
605 pBuffer += NumBytesRem;
+
606 BufferSize -= NumBytesRem;
+
607 RdOff += NumBytesRem;
+
608#endif
+
609 //
+
610 // Handle wrap-around of buffer
+
611 //
+
612 if (RdOff == pRing->SizeOfBuffer) {
+
613 RdOff = 0u;
+
614 }
+
615 }
+
616 //
+
617 // Read remaining items of buffer
+
618 //
+
619 NumBytesRem = WrOff - RdOff;
+
620 NumBytesRem = MIN(NumBytesRem, BufferSize);
+
621 if (NumBytesRem > 0u) {
+
622 pSrc = (pRing->pBuffer + RdOff) + SEGGER_RTT_UNCACHED_OFF;
+
623#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
624 NumBytesRead += NumBytesRem;
+
625 BufferSize -= NumBytesRem;
+
626 RdOff += NumBytesRem;
+
627 while (NumBytesRem--) {
+
628 *pBuffer++ = *pSrc++;
+
629 };
+
630#else
+
631 SEGGER_RTT_MEMCPY(pBuffer, (void*)pSrc, NumBytesRem);
+
632 NumBytesRead += NumBytesRem;
+
633 pBuffer += NumBytesRem;
+
634 BufferSize -= NumBytesRem;
+
635 RdOff += NumBytesRem;
+
636#endif
+
637 }
+
638 //
+
639 // Update read offset of buffer
+
640 //
+
641 if (NumBytesRead) {
+
642 pRing->RdOff = RdOff;
+
643 }
+
644 //
+
645 return NumBytesRead;
+
646}
+
647
+
648/*********************************************************************
+
649*
+
650* SEGGER_RTT_ReadNoLock()
+
651*
+
652* Function description
+
653* Reads characters from SEGGER real-time-terminal control block
+
654* which have been previously stored by the host.
+
655* Do not lock against interrupts and multiple access.
+
656*
+
657* Parameters
+
658* BufferIndex Index of Down-buffer to be used (e.g. 0 for "Terminal").
+
659* pBuffer Pointer to buffer provided by target application, to copy characters from RTT-down-buffer to.
+
660* BufferSize Size of the target application buffer.
+
661*
+
662* Return value
+
663* Number of bytes that have been read.
+
664*/
+
665unsigned SEGGER_RTT_ReadNoLock(unsigned BufferIndex, void* pData, unsigned BufferSize) {
+
666 unsigned NumBytesRem;
+
667 unsigned NumBytesRead;
+
668 unsigned RdOff;
+
669 unsigned WrOff;
+
670 unsigned char* pBuffer;
+ +
672 volatile char* pSrc;
+
673 //
+
674 INIT();
+
675 pRing = (SEGGER_RTT_BUFFER_DOWN*)((uintptr_t)&_SEGGER_RTT.aDown[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
676 pBuffer = (unsigned char*)pData;
+
677 RdOff = pRing->RdOff;
+
678 WrOff = pRing->WrOff;
+
679 NumBytesRead = 0u;
+
680 //
+
681 // Read from current read position to wrap-around of buffer, first
+
682 //
+
683 if (RdOff > WrOff) {
+
684 NumBytesRem = pRing->SizeOfBuffer - RdOff;
+
685 NumBytesRem = MIN(NumBytesRem, BufferSize);
+
686 pSrc = (pRing->pBuffer + RdOff) + SEGGER_RTT_UNCACHED_OFF;
+
687#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
688 NumBytesRead += NumBytesRem;
+
689 BufferSize -= NumBytesRem;
+
690 RdOff += NumBytesRem;
+
691 while (NumBytesRem--) {
+
692 *pBuffer++ = *pSrc++;
+
693 };
+
694#else
+
695 SEGGER_RTT_MEMCPY(pBuffer, (void*)pSrc, NumBytesRem);
+
696 NumBytesRead += NumBytesRem;
+
697 pBuffer += NumBytesRem;
+
698 BufferSize -= NumBytesRem;
+
699 RdOff += NumBytesRem;
+
700#endif
+
701 //
+
702 // Handle wrap-around of buffer
+
703 //
+
704 if (RdOff == pRing->SizeOfBuffer) {
+
705 RdOff = 0u;
+
706 }
+
707 }
+
708 //
+
709 // Read remaining items of buffer
+
710 //
+
711 NumBytesRem = WrOff - RdOff;
+
712 NumBytesRem = MIN(NumBytesRem, BufferSize);
+
713 if (NumBytesRem > 0u) {
+
714 pSrc = (pRing->pBuffer + RdOff) + SEGGER_RTT_UNCACHED_OFF;
+
715#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
716 NumBytesRead += NumBytesRem;
+
717 BufferSize -= NumBytesRem;
+
718 RdOff += NumBytesRem;
+
719 while (NumBytesRem--) {
+
720 *pBuffer++ = *pSrc++;
+
721 };
+
722#else
+
723 SEGGER_RTT_MEMCPY(pBuffer, (void*)pSrc, NumBytesRem);
+
724 NumBytesRead += NumBytesRem;
+
725 pBuffer += NumBytesRem;
+
726 BufferSize -= NumBytesRem;
+
727 RdOff += NumBytesRem;
+
728#endif
+
729 }
+
730 if (NumBytesRead) {
+
731 pRing->RdOff = RdOff;
+
732 }
+
733 //
+
734 return NumBytesRead;
+
735}
+
736
+
737/*********************************************************************
+
738*
+
739* SEGGER_RTT_ReadUpBuffer
+
740*
+
741* Function description
+
742* Reads characters from SEGGER real-time-terminal control block
+
743* which have been previously stored by the application.
+
744* Used to do the same operation that J-Link does, to transfer
+
745* RTT data via other channels, such as TCP/IP or UART.
+
746*
+
747* Parameters
+
748* BufferIndex Index of Up-buffer to be used.
+
749* pBuffer Pointer to buffer provided by target application, to copy characters from RTT-up-buffer to.
+
750* BufferSize Size of the target application buffer.
+
751*
+
752* Return value
+
753* Number of bytes that have been read.
+
754*
+
755* Additional information
+
756* This function must not be called when J-Link might also do RTT.
+
757* This function locks against all other RTT operations. I.e. during
+
758* the read operation, writing is also locked.
+
759* If only one consumer reads from the up buffer,
+
760* call sEGGER_RTT_ReadUpBufferNoLock() instead.
+
761*/
+
762unsigned SEGGER_RTT_ReadUpBuffer(unsigned BufferIndex, void* pBuffer, unsigned BufferSize) {
+
763 unsigned NumBytesRead;
+
764
+
765 SEGGER_RTT_LOCK();
+
766 //
+
767 // Call the non-locking read function
+
768 //
+
769 NumBytesRead = SEGGER_RTT_ReadUpBufferNoLock(BufferIndex, pBuffer, BufferSize);
+
770 //
+
771 // Finish up.
+
772 //
+
773 SEGGER_RTT_UNLOCK();
+
774 //
+
775 return NumBytesRead;
+
776}
+
777
+
778/*********************************************************************
+
779*
+
780* SEGGER_RTT_Read
+
781*
+
782* Function description
+
783* Reads characters from SEGGER real-time-terminal control block
+
784* which have been previously stored by the host.
+
785*
+
786* Parameters
+
787* BufferIndex Index of Down-buffer to be used (e.g. 0 for "Terminal").
+
788* pBuffer Pointer to buffer provided by target application, to copy characters from RTT-down-buffer to.
+
789* BufferSize Size of the target application buffer.
+
790*
+
791* Return value
+
792* Number of bytes that have been read.
+
793*/
+
794unsigned SEGGER_RTT_Read(unsigned BufferIndex, void* pBuffer, unsigned BufferSize) {
+
795 unsigned NumBytesRead;
+
796
+
797 SEGGER_RTT_LOCK();
+
798 //
+
799 // Call the non-locking read function
+
800 //
+
801 NumBytesRead = SEGGER_RTT_ReadNoLock(BufferIndex, pBuffer, BufferSize);
+
802 //
+
803 // Finish up.
+
804 //
+
805 SEGGER_RTT_UNLOCK();
+
806 //
+
807 return NumBytesRead;
+
808}
+
809
+
810/*********************************************************************
+
811*
+
812* SEGGER_RTT_WriteWithOverwriteNoLock
+
813*
+
814* Function description
+
815* Stores a specified number of characters in SEGGER RTT
+
816* control block.
+
817* SEGGER_RTT_WriteWithOverwriteNoLock does not lock the application
+
818* and overwrites data if the data does not fit into the buffer.
+
819*
+
820* Parameters
+
821* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
822* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
823* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
824*
+
825* Notes
+
826* (1) If there is not enough space in the "Up"-buffer, data is overwritten.
+
827* (2) For performance reasons this function does not call Init()
+
828* and may only be called after RTT has been initialized.
+
829* Either by calling SEGGER_RTT_Init() or calling another RTT API function first.
+
830* (3) Do not use SEGGER_RTT_WriteWithOverwriteNoLock if a J-Link
+
831* connection reads RTT data.
+
832*/
+
833void SEGGER_RTT_WriteWithOverwriteNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
+
834 const char* pData;
+ +
836 unsigned Avail;
+
837 volatile char* pDst;
+
838 //
+
839 // Get "to-host" ring buffer and copy some elements into local variables.
+
840 //
+
841 pData = (const char *)pBuffer;
+
842 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
843 //
+
844 // Check if we will overwrite data and need to adjust the RdOff.
+
845 //
+
846 if (pRing->WrOff == pRing->RdOff) {
+
847 Avail = pRing->SizeOfBuffer - 1u;
+
848 } else if ( pRing->WrOff < pRing->RdOff) {
+
849 Avail = pRing->RdOff - pRing->WrOff - 1u;
+
850 } else {
+
851 Avail = pRing->RdOff - pRing->WrOff - 1u + pRing->SizeOfBuffer;
+
852 }
+
853 if (NumBytes > Avail) {
+
854 pRing->RdOff += (NumBytes - Avail);
+
855 while (pRing->RdOff >= pRing->SizeOfBuffer) {
+
856 pRing->RdOff -= pRing->SizeOfBuffer;
+
857 }
+
858 }
+
859 //
+
860 // Write all data, no need to check the RdOff, but possibly handle multiple wrap-arounds
+
861 //
+
862 Avail = pRing->SizeOfBuffer - pRing->WrOff;
+
863 do {
+
864 if (Avail > NumBytes) {
+
865 //
+
866 // Last round
+
867 //
+
868 pDst = (pRing->pBuffer + pRing->WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
869#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
870 Avail = NumBytes;
+
871 while (NumBytes--) {
+
872 *pDst++ = *pData++;
+
873 };
+
874 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
875 pRing->WrOff += Avail;
+
876#else
+
877 SEGGER_RTT_MEMCPY((void*)pDst, pData, NumBytes);
+
878 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
879 pRing->WrOff += NumBytes;
+
880#endif
+
881 break;
+
882 } else {
+
883 //
+
884 // Wrap-around necessary, write until wrap-around and reset WrOff
+
885 //
+
886 pDst = (pRing->pBuffer + pRing->WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
887#if SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
888 NumBytes -= Avail;
+
889 while (Avail--) {
+
890 *pDst++ = *pData++;
+
891 };
+
892 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
893 pRing->WrOff = 0;
+
894#else
+
895 SEGGER_RTT_MEMCPY((void*)pDst, pData, Avail);
+
896 pData += Avail;
+
897 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
898 pRing->WrOff = 0;
+
899 NumBytes -= Avail;
+
900#endif
+
901 Avail = (pRing->SizeOfBuffer - 1);
+
902 }
+
903 } while (NumBytes);
+
904}
+
905
+
906/*********************************************************************
+
907*
+
908* SEGGER_RTT_WriteSkipNoLock
+
909*
+
910* Function description
+
911* Stores a specified number of characters in SEGGER RTT
+
912* control block which is then read by the host.
+
913* SEGGER_RTT_WriteSkipNoLock does not lock the application and
+
914* skips all data, if the data does not fit into the buffer.
+
915*
+
916* Parameters
+
917* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
918* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
919* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
920* MUST be > 0!!!
+
921* This is done for performance reasons, so no initial check has do be done.
+
922*
+
923* Return value
+
924* 1: Data has been copied
+
925* 0: No space, data has not been copied
+
926*
+
927* Notes
+
928* (1) If there is not enough space in the "Up"-buffer, all data is dropped.
+
929* (2) For performance reasons this function does not call Init()
+
930* and may only be called after RTT has been initialized.
+
931* Either by calling SEGGER_RTT_Init() or calling another RTT API function first.
+
932*/
+
933#if (RTT_USE_ASM == 0)
+
934unsigned SEGGER_RTT_WriteSkipNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
+
935 const char* pData;
+ +
937 unsigned Avail;
+
938 unsigned RdOff;
+
939 unsigned WrOff;
+
940 unsigned Rem;
+
941 volatile char* pDst;
+
942 //
+
943 // Cases:
+
944 // 1) RdOff <= WrOff => Space until wrap-around is sufficient
+
945 // 2) RdOff <= WrOff => Space after wrap-around needed (copy in 2 chunks)
+
946 // 3) RdOff < WrOff => No space in buf
+
947 // 4) RdOff > WrOff => Space is sufficient
+
948 // 5) RdOff > WrOff => No space in buf
+
949 //
+
950 // 1) is the most common case for large buffers and assuming that J-Link reads the data fast enough
+
951 //
+
952 pData = (const char *)pBuffer;
+
953 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
954 RdOff = pRing->RdOff;
+
955 WrOff = pRing->WrOff;
+
956 pDst = (pRing->pBuffer + WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
957 if (RdOff <= WrOff) { // Case 1), 2) or 3)
+
958 Avail = pRing->SizeOfBuffer - WrOff - 1u; // Space until wrap-around (assume 1 byte not usable for case that RdOff == 0)
+
959 if (Avail >= NumBytes) { // Case 1)?
+
960 memcpy((void*)pDst, pData, NumBytes);
+
961 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
962 pRing->WrOff = WrOff + NumBytes;
+
963 return 1;
+
964 }
+
965 Avail += RdOff; // Space incl. wrap-around
+
966 if (Avail >= NumBytes) { // Case 2? => If not, we have case 3) (does not fit)
+
967 Rem = pRing->SizeOfBuffer - WrOff; // Space until end of buffer
+
968 memcpy((void*)pDst, pData, Rem); // Copy 1st chunk
+
969 NumBytes -= Rem;
+
970 //
+
971 // Special case: First check that assumed RdOff == 0 calculated that last element before wrap-around could not be used
+
972 // But 2nd check (considering space until wrap-around and until RdOff) revealed that RdOff is not 0, so we can use the last element
+
973 // In this case, we may use a copy straight until buffer end anyway without needing to copy 2 chunks
+
974 // Therefore, check if 2nd memcpy is necessary at all
+
975 //
+
976 if (NumBytes) {
+
977 pDst = pRing->pBuffer + SEGGER_RTT_UNCACHED_OFF;
+
978 memcpy((void*)pDst, pData + Rem, NumBytes);
+
979 }
+
980 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
981 pRing->WrOff = NumBytes;
+
982 return 1;
+
983 }
+
984 } else { // Potential case 4)
+
985 Avail = RdOff - WrOff - 1u;
+
986 if (Avail >= NumBytes) { // Case 4)? => If not, we have case 5) (does not fit)
+
987 memcpy((void*)pDst, pData, NumBytes);
+
988 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
989 pRing->WrOff = WrOff + NumBytes;
+
990 return 1;
+
991 }
+
992 }
+
993 return 0; // No space in buffer
+
994}
+
995#endif
+
996
+
997/*********************************************************************
+
998*
+
999* SEGGER_RTT_WriteDownBufferNoLock
+
1000*
+
1001* Function description
+
1002* Stores a specified number of characters in SEGGER RTT
+
1003* control block inside a <Down> buffer.
+
1004* SEGGER_RTT_WriteDownBufferNoLock does not lock the application.
+
1005* Used to do the same operation that J-Link does, to transfer
+
1006* RTT data from other channels, such as TCP/IP or UART.
+
1007*
+
1008* Parameters
+
1009* BufferIndex Index of "Down"-buffer to be used.
+
1010* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
1011* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
1012*
+
1013* Return value
+
1014* Number of bytes which have been stored in the "Down"-buffer.
+
1015*
+
1016* Notes
+
1017* (1) Data is stored according to buffer flags.
+
1018* (2) For performance reasons this function does not call Init()
+
1019* and may only be called after RTT has been initialized.
+
1020* Either by calling SEGGER_RTT_Init() or calling another RTT API function first.
+
1021*
+
1022* Additional information
+
1023* This function must not be called when J-Link might also do RTT.
+
1024*/
+
1025unsigned SEGGER_RTT_WriteDownBufferNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
+
1026 unsigned Status;
+
1027 unsigned Avail;
+
1028 const char* pData;
+
1029 SEGGER_RTT_BUFFER_UP* pRing;
+
1030 //
+
1031 // Get "to-target" ring buffer.
+
1032 // It is save to cast that to a "to-host" buffer. Up and Down buffer differ in volatility of offsets that might be modified by J-Link.
+
1033 //
+
1034 pData = (const char *)pBuffer;
+
1035 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aDown[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1036 //
+
1037 // How we output depends upon the mode...
+
1038 //
+
1039 switch (pRing->Flags) {
+
1040 case SEGGER_RTT_MODE_NO_BLOCK_SKIP:
+
1041 //
+
1042 // If we are in skip mode and there is no space for the whole
+
1043 // of this output, don't bother.
+
1044 //
+
1045 Avail = _GetAvailWriteSpace(pRing);
+
1046 if (Avail < NumBytes) {
+
1047 Status = 0u;
+
1048 } else {
+
1049 Status = NumBytes;
+
1050 _WriteNoCheck(pRing, pData, NumBytes);
+
1051 }
+
1052 break;
+
1053 case SEGGER_RTT_MODE_NO_BLOCK_TRIM:
+
1054 //
+
1055 // If we are in trim mode, trim to what we can output without blocking.
+
1056 //
+
1057 Avail = _GetAvailWriteSpace(pRing);
+
1058 Status = Avail < NumBytes ? Avail : NumBytes;
+
1059 _WriteNoCheck(pRing, pData, Status);
+
1060 break;
+
1061 case SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL:
+
1062 //
+
1063 // If we are in blocking mode, output everything.
+
1064 //
+
1065 Status = _WriteBlocking(pRing, pData, NumBytes);
+
1066 break;
+
1067 default:
+
1068 Status = 0u;
+
1069 break;
+
1070 }
+
1071 //
+
1072 // Finish up.
+
1073 //
+
1074 return Status;
+
1075}
+
1076
+
1077/*********************************************************************
+
1078*
+
1079* SEGGER_RTT_WriteNoLock
+
1080*
+
1081* Function description
+
1082* Stores a specified number of characters in SEGGER RTT
+
1083* control block which is then read by the host.
+
1084* SEGGER_RTT_WriteNoLock does not lock the application.
+
1085*
+
1086* Parameters
+
1087* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
1088* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
1089* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
1090*
+
1091* Return value
+
1092* Number of bytes which have been stored in the "Up"-buffer.
+
1093*
+
1094* Notes
+
1095* (1) Data is stored according to buffer flags.
+
1096* (2) For performance reasons this function does not call Init()
+
1097* and may only be called after RTT has been initialized.
+
1098* Either by calling SEGGER_RTT_Init() or calling another RTT API function first.
+
1099*/
+
1100unsigned SEGGER_RTT_WriteNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
+
1101 unsigned Status;
+
1102 unsigned Avail;
+
1103 const char* pData;
+
1104 SEGGER_RTT_BUFFER_UP* pRing;
+
1105 //
+
1106 // Get "to-host" ring buffer.
+
1107 //
+
1108 pData = (const char *)pBuffer;
+
1109 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1110 //
+
1111 // How we output depends upon the mode...
+
1112 //
+
1113 switch (pRing->Flags) {
+
1114 case SEGGER_RTT_MODE_NO_BLOCK_SKIP:
+
1115 //
+
1116 // If we are in skip mode and there is no space for the whole
+
1117 // of this output, don't bother.
+
1118 //
+
1119 Avail = _GetAvailWriteSpace(pRing);
+
1120 if (Avail < NumBytes) {
+
1121 Status = 0u;
+
1122 } else {
+
1123 Status = NumBytes;
+
1124 _WriteNoCheck(pRing, pData, NumBytes);
+
1125 }
+
1126 break;
+
1127 case SEGGER_RTT_MODE_NO_BLOCK_TRIM:
+
1128 //
+
1129 // If we are in trim mode, trim to what we can output without blocking.
+
1130 //
+
1131 Avail = _GetAvailWriteSpace(pRing);
+
1132 Status = Avail < NumBytes ? Avail : NumBytes;
+
1133 _WriteNoCheck(pRing, pData, Status);
+
1134 break;
+
1135 case SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL:
+
1136 //
+
1137 // If we are in blocking mode, output everything.
+
1138 //
+
1139 Status = _WriteBlocking(pRing, pData, NumBytes);
+
1140 break;
+
1141 default:
+
1142 Status = 0u;
+
1143 break;
+
1144 }
+
1145 //
+
1146 // Finish up.
+
1147 //
+
1148 return Status;
+
1149}
+
1150
+
1151/*********************************************************************
+
1152*
+
1153* SEGGER_RTT_WriteDownBuffer
+
1154*
+
1155* Function description
+
1156* Stores a specified number of characters in SEGGER RTT control block in a <Down> buffer.
+
1157*
+
1158* Parameters
+
1159* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
1160* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
1161* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
1162*
+
1163* Return value
+
1164* Number of bytes which have been stored in the "Down"-buffer.
+
1165*
+
1166* Notes
+
1167* (1) Data is stored according to buffer flags.
+
1168*
+
1169* Additional information
+
1170* This function must not be called when J-Link might also do RTT.
+
1171* This function locks against all other RTT operations. I.e. during
+
1172* the write operation, writing from the application is also locked.
+
1173* If only one consumer writes to the down buffer,
+
1174* call SEGGER_RTT_WriteDownBufferNoLock() instead.
+
1175*/
+
1176unsigned SEGGER_RTT_WriteDownBuffer(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
+
1177 unsigned Status;
+
1178
+
1179 INIT();
+
1180 SEGGER_RTT_LOCK();
+
1181 Status = SEGGER_RTT_WriteDownBufferNoLock(BufferIndex, pBuffer, NumBytes); // Call the non-locking write function
+
1182 SEGGER_RTT_UNLOCK();
+
1183 return Status;
+
1184}
+
1185
+
1186/*********************************************************************
+
1187*
+
1188* SEGGER_RTT_Write
+
1189*
+
1190* Function description
+
1191* Stores a specified number of characters in SEGGER RTT
+
1192* control block which is then read by the host.
+
1193*
+
1194* Parameters
+
1195* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
1196* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
+
1197* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
+
1198*
+
1199* Return value
+
1200* Number of bytes which have been stored in the "Up"-buffer.
+
1201*
+
1202* Notes
+
1203* (1) Data is stored according to buffer flags.
+
1204*/
+
1205unsigned SEGGER_RTT_Write(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
+
1206 unsigned Status;
+
1207
+
1208 INIT();
+
1209 SEGGER_RTT_LOCK();
+
1210 Status = SEGGER_RTT_WriteNoLock(BufferIndex, pBuffer, NumBytes); // Call the non-locking write function
+
1211 SEGGER_RTT_UNLOCK();
+
1212 return Status;
+
1213}
+
1214
+
1215/*********************************************************************
+
1216*
+
1217* SEGGER_RTT_WriteString
+
1218*
+
1219* Function description
+
1220* Stores string in SEGGER RTT control block.
+
1221* This data is read by the host.
+
1222*
+
1223* Parameters
+
1224* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
1225* s Pointer to string.
+
1226*
+
1227* Return value
+
1228* Number of bytes which have been stored in the "Up"-buffer.
+
1229*
+
1230* Notes
+
1231* (1) Data is stored according to buffer flags.
+
1232* (2) String passed to this function has to be \0 terminated
+
1233* (3) \0 termination character is *not* stored in RTT buffer
+
1234*/
+
1235unsigned SEGGER_RTT_WriteString(unsigned BufferIndex, const char* s) {
+
1236 unsigned Len;
+
1237
+
1238 Len = STRLEN(s);
+
1239 return SEGGER_RTT_Write(BufferIndex, s, Len);
+
1240}
+
1241
+
1242/*********************************************************************
+
1243*
+
1244* SEGGER_RTT_PutCharSkipNoLock
+
1245*
+
1246* Function description
+
1247* Stores a single character/byte in SEGGER RTT buffer.
+
1248* SEGGER_RTT_PutCharSkipNoLock does not lock the application and
+
1249* skips the byte, if it does not fit into the buffer.
+
1250*
+
1251* Parameters
+
1252* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
1253* c Byte to be stored.
+
1254*
+
1255* Return value
+
1256* Number of bytes which have been stored in the "Up"-buffer.
+
1257*
+
1258* Notes
+
1259* (1) If there is not enough space in the "Up"-buffer, the character is dropped.
+
1260* (2) For performance reasons this function does not call Init()
+
1261* and may only be called after RTT has been initialized.
+
1262* Either by calling SEGGER_RTT_Init() or calling another RTT API function first.
+
1263*/
+
1264
+
1265unsigned SEGGER_RTT_PutCharSkipNoLock(unsigned BufferIndex, char c) {
+
1266 SEGGER_RTT_BUFFER_UP* pRing;
+
1267 unsigned WrOff;
+
1268 unsigned Status;
+
1269 volatile char* pDst;
+
1270 //
+
1271 // Get "to-host" ring buffer.
+
1272 //
+
1273 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1274 //
+
1275 // Get write position and handle wrap-around if necessary
+
1276 //
+
1277 WrOff = pRing->WrOff + 1;
+
1278 if (WrOff == pRing->SizeOfBuffer) {
+
1279 WrOff = 0;
+
1280 }
+
1281 //
+
1282 // Output byte if free space is available
+
1283 //
+
1284 if (WrOff != pRing->RdOff) {
+
1285 pDst = (pRing->pBuffer + pRing->WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
1286 *pDst = c;
+
1287 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
1288 pRing->WrOff = WrOff;
+
1289 Status = 1;
+
1290 } else {
+
1291 Status = 0;
+
1292 }
+
1293 //
+
1294 return Status;
+
1295}
+
1296
+
1297/*********************************************************************
+
1298*
+
1299* SEGGER_RTT_PutCharSkip
+
1300*
+
1301* Function description
+
1302* Stores a single character/byte in SEGGER RTT buffer.
+
1303*
+
1304* Parameters
+
1305* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
1306* c Byte to be stored.
+
1307*
+
1308* Return value
+
1309* Number of bytes which have been stored in the "Up"-buffer.
+
1310*
+
1311* Notes
+
1312* (1) If there is not enough space in the "Up"-buffer, the character is dropped.
+
1313*/
+
1314
+
1315unsigned SEGGER_RTT_PutCharSkip(unsigned BufferIndex, char c) {
+
1316 SEGGER_RTT_BUFFER_UP* pRing;
+
1317 unsigned WrOff;
+
1318 unsigned Status;
+
1319 volatile char* pDst;
+
1320 //
+
1321 // Prepare
+
1322 //
+
1323 INIT();
+
1324 SEGGER_RTT_LOCK();
+
1325 //
+
1326 // Get "to-host" ring buffer.
+
1327 //
+
1328 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1329 //
+
1330 // Get write position and handle wrap-around if necessary
+
1331 //
+
1332 WrOff = pRing->WrOff + 1;
+
1333 if (WrOff == pRing->SizeOfBuffer) {
+
1334 WrOff = 0;
+
1335 }
+
1336 //
+
1337 // Output byte if free space is available
+
1338 //
+
1339 if (WrOff != pRing->RdOff) {
+
1340 pDst = (pRing->pBuffer + pRing->WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
1341 *pDst = c;
+
1342 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
1343 pRing->WrOff = WrOff;
+
1344 Status = 1;
+
1345 } else {
+
1346 Status = 0;
+
1347 }
+
1348 //
+
1349 // Finish up.
+
1350 //
+
1351 SEGGER_RTT_UNLOCK();
+
1352 //
+
1353 return Status;
+
1354}
+
1355
+
1356 /*********************************************************************
+
1357*
+
1358* SEGGER_RTT_PutChar
+
1359*
+
1360* Function description
+
1361* Stores a single character/byte in SEGGER RTT buffer.
+
1362*
+
1363* Parameters
+
1364* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
+
1365* c Byte to be stored.
+
1366*
+
1367* Return value
+
1368* Number of bytes which have been stored in the "Up"-buffer.
+
1369*
+
1370* Notes
+
1371* (1) Data is stored according to buffer flags.
+
1372*/
+
1373
+
1374unsigned SEGGER_RTT_PutChar(unsigned BufferIndex, char c) {
+
1375 SEGGER_RTT_BUFFER_UP* pRing;
+
1376 unsigned WrOff;
+
1377 unsigned Status;
+
1378 volatile char* pDst;
+
1379 //
+
1380 // Prepare
+
1381 //
+
1382 INIT();
+
1383 SEGGER_RTT_LOCK();
+
1384 //
+
1385 // Get "to-host" ring buffer.
+
1386 //
+
1387 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1388 //
+
1389 // Get write position and handle wrap-around if necessary
+
1390 //
+
1391 WrOff = pRing->WrOff + 1;
+
1392 if (WrOff == pRing->SizeOfBuffer) {
+
1393 WrOff = 0;
+
1394 }
+
1395 //
+
1396 // Wait for free space if mode is set to blocking
+
1397 //
+
1398 if (pRing->Flags == SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL) {
+
1399 while (WrOff == pRing->RdOff) {
+
1400 ;
+
1401 }
+
1402 }
+
1403 //
+
1404 // Output byte if free space is available
+
1405 //
+
1406 if (WrOff != pRing->RdOff) {
+
1407 pDst = (pRing->pBuffer + pRing->WrOff) + SEGGER_RTT_UNCACHED_OFF;
+
1408 *pDst = c;
+
1409 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
1410 pRing->WrOff = WrOff;
+
1411 Status = 1;
+
1412 } else {
+
1413 Status = 0;
+
1414 }
+
1415 //
+
1416 // Finish up.
+
1417 //
+
1418 SEGGER_RTT_UNLOCK();
+
1419 return Status;
+
1420}
+
1421
+
1422/*********************************************************************
+
1423*
+
1424* SEGGER_RTT_GetKey
+
1425*
+
1426* Function description
+
1427* Reads one character from the SEGGER RTT buffer.
+
1428* Host has previously stored data there.
+
1429*
+
1430* Return value
+
1431* < 0 - No character available (buffer empty).
+
1432* >= 0 - Character which has been read. (Possible values: 0 - 255)
+
1433*
+
1434* Notes
+
1435* (1) This function is only specified for accesses to RTT buffer 0.
+
1436*/
+
1437int SEGGER_RTT_GetKey(void) {
+
1438 char c;
+
1439 int r;
+
1440
+
1441 r = (int)SEGGER_RTT_Read(0u, &c, 1u);
+
1442 if (r == 1) {
+
1443 r = (int)(unsigned char)c;
+
1444 } else {
+
1445 r = -1;
+
1446 }
+
1447 return r;
+
1448}
+
1449
+
1450/*********************************************************************
+
1451*
+
1452* SEGGER_RTT_WaitKey
+
1453*
+
1454* Function description
+
1455* Waits until at least one character is avaible in the SEGGER RTT buffer.
+
1456* Once a character is available, it is read and this function returns.
+
1457*
+
1458* Return value
+
1459* >=0 - Character which has been read.
+
1460*
+
1461* Notes
+
1462* (1) This function is only specified for accesses to RTT buffer 0
+
1463* (2) This function is blocking if no character is present in RTT buffer
+
1464*/
+
1465int SEGGER_RTT_WaitKey(void) {
+
1466 int r;
+
1467
+
1468 do {
+
1469 r = SEGGER_RTT_GetKey();
+
1470 } while (r < 0);
+
1471 return r;
+
1472}
+
1473
+
1474/*********************************************************************
+
1475*
+
1476* SEGGER_RTT_HasKey
+
1477*
+
1478* Function description
+
1479* Checks if at least one character for reading is available in the SEGGER RTT buffer.
+
1480*
+
1481* Return value
+
1482* == 0 - No characters are available to read.
+
1483* == 1 - At least one character is available.
+
1484*
+
1485* Notes
+
1486* (1) This function is only specified for accesses to RTT buffer 0
+
1487*/
+
1488int SEGGER_RTT_HasKey(void) {
+ +
1490 unsigned RdOff;
+
1491 int r;
+
1492
+
1493 INIT();
+
1494 pRing = (SEGGER_RTT_BUFFER_DOWN*)((uintptr_t)&_SEGGER_RTT.aDown[0] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1495 RdOff = pRing->RdOff;
+
1496 if (RdOff != pRing->WrOff) {
+
1497 r = 1;
+
1498 } else {
+
1499 r = 0;
+
1500 }
+
1501 return r;
+
1502}
+
1503
+
1504/*********************************************************************
+
1505*
+
1506* SEGGER_RTT_HasData
+
1507*
+
1508* Function description
+
1509* Check if there is data from the host in the given buffer.
+
1510*
+
1511* Return value:
+
1512* ==0: No data
+
1513* !=0: Data in buffer
+
1514*
+
1515*/
+
1516unsigned SEGGER_RTT_HasData(unsigned BufferIndex) {
+ +
1518 unsigned v;
+
1519
+
1520 pRing = (SEGGER_RTT_BUFFER_DOWN*)((uintptr_t)&_SEGGER_RTT.aDown[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1521 v = pRing->WrOff;
+
1522 return v - pRing->RdOff;
+
1523}
+
1524
+
1525/*********************************************************************
+
1526*
+
1527* SEGGER_RTT_HasDataUp
+
1528*
+
1529* Function description
+
1530* Check if there is data remaining to be sent in the given buffer.
+
1531*
+
1532* Return value:
+
1533* ==0: No data
+
1534* !=0: Data in buffer
+
1535*
+
1536*/
+
1537unsigned SEGGER_RTT_HasDataUp(unsigned BufferIndex) {
+
1538 SEGGER_RTT_BUFFER_UP* pRing;
+
1539 unsigned v;
+
1540
+
1541 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1542 v = pRing->RdOff;
+
1543 return pRing->WrOff - v;
+
1544}
+
1545
+
1546/*********************************************************************
+
1547*
+
1548* SEGGER_RTT_AllocDownBuffer
+
1549*
+
1550* Function description
+
1551* Run-time configuration of the next down-buffer (H->T).
+
1552* The next buffer, which is not used yet is configured.
+
1553* This includes: Buffer address, size, name, flags, ...
+
1554*
+
1555* Parameters
+
1556* sName Pointer to a constant name string.
+
1557* pBuffer Pointer to a buffer to be used.
+
1558* BufferSize Size of the buffer.
+
1559* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
+
1560* 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.
+
1561*
+
1562* Return value
+
1563* >= 0 - O.K. Buffer Index
+
1564* < 0 - Error
+
1565*/
+
1566int SEGGER_RTT_AllocDownBuffer(const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
+
1567 int BufferIndex;
+
1568 volatile SEGGER_RTT_CB* pRTTCB;
+
1569
+
1570 INIT();
+
1571 SEGGER_RTT_LOCK();
+
1572 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1573 BufferIndex = 0;
+
1574 do {
+
1575 if (pRTTCB->aDown[BufferIndex].pBuffer == NULL) {
+
1576 break;
+
1577 }
+
1578 BufferIndex++;
+
1579 } while (BufferIndex < pRTTCB->MaxNumDownBuffers);
+
1580 if (BufferIndex < pRTTCB->MaxNumDownBuffers) {
+
1581 pRTTCB->aDown[BufferIndex].sName = sName;
+
1582 pRTTCB->aDown[BufferIndex].pBuffer = (char*)pBuffer;
+
1583 pRTTCB->aDown[BufferIndex].SizeOfBuffer = BufferSize;
+
1584 pRTTCB->aDown[BufferIndex].RdOff = 0u;
+
1585 pRTTCB->aDown[BufferIndex].WrOff = 0u;
+
1586 pRTTCB->aDown[BufferIndex].Flags = Flags;
+
1587 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
1588 } else {
+
1589 BufferIndex = -1;
+
1590 }
+
1591 SEGGER_RTT_UNLOCK();
+
1592 return BufferIndex;
+
1593}
+
1594
+
1595/*********************************************************************
+
1596*
+
1597* SEGGER_RTT_AllocUpBuffer
+
1598*
+
1599* Function description
+
1600* Run-time configuration of the next up-buffer (T->H).
+
1601* The next buffer, which is not used yet is configured.
+
1602* This includes: Buffer address, size, name, flags, ...
+
1603*
+
1604* Parameters
+
1605* sName Pointer to a constant name string.
+
1606* pBuffer Pointer to a buffer to be used.
+
1607* BufferSize Size of the buffer.
+
1608* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
+
1609* 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.
+
1610*
+
1611* Return value
+
1612* >= 0 - O.K. Buffer Index
+
1613* < 0 - Error
+
1614*/
+
1615int SEGGER_RTT_AllocUpBuffer(const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
+
1616 int BufferIndex;
+
1617 volatile SEGGER_RTT_CB* pRTTCB;
+
1618
+
1619 INIT();
+
1620 SEGGER_RTT_LOCK();
+
1621 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1622 BufferIndex = 0;
+
1623 do {
+
1624 if (pRTTCB->aUp[BufferIndex].pBuffer == NULL) {
+
1625 break;
+
1626 }
+
1627 BufferIndex++;
+
1628 } while (BufferIndex < pRTTCB->MaxNumUpBuffers);
+
1629 if (BufferIndex < pRTTCB->MaxNumUpBuffers) {
+
1630 pRTTCB->aUp[BufferIndex].sName = sName;
+
1631 pRTTCB->aUp[BufferIndex].pBuffer = (char*)pBuffer;
+
1632 pRTTCB->aUp[BufferIndex].SizeOfBuffer = BufferSize;
+
1633 pRTTCB->aUp[BufferIndex].RdOff = 0u;
+
1634 pRTTCB->aUp[BufferIndex].WrOff = 0u;
+
1635 pRTTCB->aUp[BufferIndex].Flags = Flags;
+
1636 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
1637 } else {
+
1638 BufferIndex = -1;
+
1639 }
+
1640 SEGGER_RTT_UNLOCK();
+
1641 return BufferIndex;
+
1642}
+
1643
+
1644/*********************************************************************
+
1645*
+
1646* SEGGER_RTT_ConfigUpBuffer
+
1647*
+
1648* Function description
+
1649* Run-time configuration of a specific up-buffer (T->H).
+
1650* Buffer to be configured is specified by index.
+
1651* This includes: Buffer address, size, name, flags, ...
+
1652*
+
1653* Parameters
+
1654* BufferIndex Index of the buffer to configure.
+
1655* sName Pointer to a constant name string.
+
1656* pBuffer Pointer to a buffer to be used.
+
1657* BufferSize Size of the buffer.
+
1658* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
+
1659* 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.
+
1660*
+
1661* Return value
+
1662* >= 0 - O.K.
+
1663* < 0 - Error
+
1664*
+
1665* Additional information
+
1666* Buffer 0 is configured on compile-time.
+
1667* May only be called once per buffer.
+
1668* Buffer name and flags can be reconfigured using the appropriate functions.
+
1669*/
+
1670int SEGGER_RTT_ConfigUpBuffer(unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
+
1671 int r;
+
1672 volatile SEGGER_RTT_CB* pRTTCB;
+
1673 volatile SEGGER_RTT_BUFFER_UP* pUp;
+
1674
+
1675 INIT();
+
1676 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1677 if (BufferIndex < SEGGER_RTT_MAX_NUM_UP_BUFFERS) {
+
1678 SEGGER_RTT_LOCK();
+
1679 pUp = &pRTTCB->aUp[BufferIndex];
+
1680 if (BufferIndex) {
+
1681 pUp->sName = sName;
+
1682 pUp->pBuffer = (char*)pBuffer;
+
1683 pUp->SizeOfBuffer = BufferSize;
+
1684 pUp->RdOff = 0u;
+
1685 pUp->WrOff = 0u;
+
1686 }
+
1687 pUp->Flags = Flags;
+
1688 SEGGER_RTT_UNLOCK();
+
1689 r = 0;
+
1690 } else {
+
1691 r = -1;
+
1692 }
+
1693 return r;
+
1694}
+
1695
+
1696/*********************************************************************
+
1697*
+
1698* SEGGER_RTT_ConfigDownBuffer
+
1699*
+
1700* Function description
+
1701* Run-time configuration of a specific down-buffer (H->T).
+
1702* Buffer to be configured is specified by index.
+
1703* This includes: Buffer address, size, name, flags, ...
+
1704*
+
1705* Parameters
+
1706* BufferIndex Index of the buffer to configure.
+
1707* sName Pointer to a constant name string.
+
1708* pBuffer Pointer to a buffer to be used.
+
1709* BufferSize Size of the buffer.
+
1710* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
+
1711* 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.
+
1712*
+
1713* Return value
+
1714* >= 0 O.K.
+
1715* < 0 Error
+
1716*
+
1717* Additional information
+
1718* Buffer 0 is configured on compile-time.
+
1719* May only be called once per buffer.
+
1720* Buffer name and flags can be reconfigured using the appropriate functions.
+
1721*/
+
1722int SEGGER_RTT_ConfigDownBuffer(unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
+
1723 int r;
+
1724 volatile SEGGER_RTT_CB* pRTTCB;
+
1725 volatile SEGGER_RTT_BUFFER_DOWN* pDown;
+
1726
+
1727 INIT();
+
1728 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1729 if (BufferIndex < SEGGER_RTT_MAX_NUM_DOWN_BUFFERS) {
+
1730 SEGGER_RTT_LOCK();
+
1731 pDown = &pRTTCB->aDown[BufferIndex];
+
1732 if (BufferIndex) {
+
1733 pDown->sName = sName;
+
1734 pDown->pBuffer = (char*)pBuffer;
+
1735 pDown->SizeOfBuffer = BufferSize;
+
1736 pDown->RdOff = 0u;
+
1737 pDown->WrOff = 0u;
+
1738 }
+
1739 pDown->Flags = Flags;
+
1740 RTT__DMB(); // Force data write to be complete before writing the <WrOff>, in case CPU is allowed to change the order of memory accesses
+
1741 SEGGER_RTT_UNLOCK();
+
1742 r = 0;
+
1743 } else {
+
1744 r = -1;
+
1745 }
+
1746 return r;
+
1747}
+
1748
+
1749/*********************************************************************
+
1750*
+
1751* SEGGER_RTT_SetNameUpBuffer
+
1752*
+
1753* Function description
+
1754* Run-time configuration of a specific up-buffer name (T->H).
+
1755* Buffer to be configured is specified by index.
+
1756*
+
1757* Parameters
+
1758* BufferIndex Index of the buffer to renamed.
+
1759* sName Pointer to a constant name string.
+
1760*
+
1761* Return value
+
1762* >= 0 O.K.
+
1763* < 0 Error
+
1764*/
+
1765int SEGGER_RTT_SetNameUpBuffer(unsigned BufferIndex, const char* sName) {
+
1766 int r;
+
1767 volatile SEGGER_RTT_CB* pRTTCB;
+
1768 volatile SEGGER_RTT_BUFFER_UP* pUp;
+
1769
+
1770 INIT();
+
1771 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1772 if (BufferIndex < SEGGER_RTT_MAX_NUM_UP_BUFFERS) {
+
1773 SEGGER_RTT_LOCK();
+
1774 pUp = &pRTTCB->aUp[BufferIndex];
+
1775 pUp->sName = sName;
+
1776 SEGGER_RTT_UNLOCK();
+
1777 r = 0;
+
1778 } else {
+
1779 r = -1;
+
1780 }
+
1781 return r;
+
1782}
+
1783
+
1784/*********************************************************************
+
1785*
+
1786* SEGGER_RTT_SetNameDownBuffer
+
1787*
+
1788* Function description
+
1789* Run-time configuration of a specific Down-buffer name (T->H).
+
1790* Buffer to be configured is specified by index.
+
1791*
+
1792* Parameters
+
1793* BufferIndex Index of the buffer to renamed.
+
1794* sName Pointer to a constant name string.
+
1795*
+
1796* Return value
+
1797* >= 0 O.K.
+
1798* < 0 Error
+
1799*/
+
1800int SEGGER_RTT_SetNameDownBuffer(unsigned BufferIndex, const char* sName) {
+
1801 int r;
+
1802 volatile SEGGER_RTT_CB* pRTTCB;
+
1803 volatile SEGGER_RTT_BUFFER_DOWN* pDown;
+
1804
+
1805 INIT();
+
1806 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1807 if (BufferIndex < SEGGER_RTT_MAX_NUM_DOWN_BUFFERS) {
+
1808 SEGGER_RTT_LOCK();
+
1809 pDown = &pRTTCB->aDown[BufferIndex];
+
1810 pDown->sName = sName;
+
1811 SEGGER_RTT_UNLOCK();
+
1812 r = 0;
+
1813 } else {
+
1814 r = -1;
+
1815 }
+
1816 return r;
+
1817}
+
1818
+
1819/*********************************************************************
+
1820*
+
1821* SEGGER_RTT_SetFlagsUpBuffer
+
1822*
+
1823* Function description
+
1824* Run-time configuration of specific up-buffer flags (T->H).
+
1825* Buffer to be configured is specified by index.
+
1826*
+
1827* Parameters
+
1828* BufferIndex Index of the buffer.
+
1829* Flags Flags to set for the buffer.
+
1830* 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.
+
1831*
+
1832* Return value
+
1833* >= 0 O.K.
+
1834* < 0 Error
+
1835*/
+
1836int SEGGER_RTT_SetFlagsUpBuffer(unsigned BufferIndex, unsigned Flags) {
+
1837 int r;
+
1838 volatile SEGGER_RTT_CB* pRTTCB;
+
1839 volatile SEGGER_RTT_BUFFER_UP* pUp;
+
1840
+
1841 INIT();
+
1842 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1843 if (BufferIndex < SEGGER_RTT_MAX_NUM_UP_BUFFERS) {
+
1844 SEGGER_RTT_LOCK();
+
1845 pUp = &pRTTCB->aUp[BufferIndex];
+
1846 pUp->Flags = Flags;
+
1847 SEGGER_RTT_UNLOCK();
+
1848 r = 0;
+
1849 } else {
+
1850 r = -1;
+
1851 }
+
1852 return r;
+
1853}
+
1854
+
1855/*********************************************************************
+
1856*
+
1857* SEGGER_RTT_SetFlagsDownBuffer
+
1858*
+
1859* Function description
+
1860* Run-time configuration of specific Down-buffer flags (T->H).
+
1861* Buffer to be configured is specified by index.
+
1862*
+
1863* Parameters
+
1864* BufferIndex Index of the buffer to renamed.
+
1865* Flags Flags to set for the buffer.
+
1866* 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.
+
1867*
+
1868* Return value
+
1869* >= 0 O.K.
+
1870* < 0 Error
+
1871*/
+
1872int SEGGER_RTT_SetFlagsDownBuffer(unsigned BufferIndex, unsigned Flags) {
+
1873 int r;
+
1874 volatile SEGGER_RTT_CB* pRTTCB;
+
1875 volatile SEGGER_RTT_BUFFER_DOWN* pDown;
+
1876
+
1877 INIT();
+
1878 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1879 if (BufferIndex < SEGGER_RTT_MAX_NUM_DOWN_BUFFERS) {
+
1880 SEGGER_RTT_LOCK();
+
1881 pDown = &pRTTCB->aDown[BufferIndex];
+
1882 pDown->Flags = Flags;
+
1883 SEGGER_RTT_UNLOCK();
+
1884 r = 0;
+
1885 } else {
+
1886 r = -1;
+
1887 }
+
1888 return r;
+
1889}
+
1890
+
1891/*********************************************************************
+
1892*
+
1893* SEGGER_RTT_Init
+
1894*
+
1895* Function description
+
1896* Initializes the RTT Control Block.
+
1897* Should be used in RAM targets, at start of the application.
+
1898*
+
1899*/
+
1900void SEGGER_RTT_Init (void) {
+
1901 _DoInit();
+
1902}
+
1903
+
1904/*********************************************************************
+
1905*
+
1906* SEGGER_RTT_SetTerminal
+
1907*
+
1908* Function description
+
1909* Sets the terminal to be used for output on channel 0.
+
1910*
+
1911* Parameters
+
1912* TerminalId Index of the terminal.
+
1913*
+
1914* Return value
+
1915* >= 0 O.K.
+
1916* < 0 Error (e.g. if RTT is configured for non-blocking mode and there was no space in the buffer to set the new terminal Id)
+
1917*
+
1918* Notes
+
1919* (1) Buffer 0 is always reserved for terminal I/O, so we can use index 0 here, fixed
+
1920*/
+
1921int SEGGER_RTT_SetTerminal (unsigned char TerminalId) {
+
1922 unsigned char ac[2];
+
1923 SEGGER_RTT_BUFFER_UP* pRing;
+
1924 unsigned Avail;
+
1925 int r;
+
1926
+
1927 INIT();
+
1928 r = 0;
+
1929 ac[0] = 0xFFu;
+
1930 if (TerminalId < sizeof(_aTerminalId)) { // We only support a certain number of channels
+
1931 ac[1] = _aTerminalId[TerminalId];
+
1932 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[0] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1933 SEGGER_RTT_LOCK(); // Lock to make sure that no other task is writing into buffer, while we are and number of free bytes in buffer does not change downwards after checking and before writing
+
1934 if ((pRing->Flags & SEGGER_RTT_MODE_MASK) == SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL) {
+
1935 _ActiveTerminal = TerminalId;
+
1936 _WriteBlocking(pRing, (const char*)ac, 2u);
+
1937 } else { // Skipping mode or trim mode? => We cannot trim this command so handling is the same for both modes
+
1938 Avail = _GetAvailWriteSpace(pRing);
+
1939 if (Avail >= 2) {
+
1940 _ActiveTerminal = TerminalId; // Only change active terminal in case of success
+
1941 _WriteNoCheck(pRing, (const char*)ac, 2u);
+
1942 } else {
+
1943 r = -1;
+
1944 }
+
1945 }
+
1946 SEGGER_RTT_UNLOCK();
+
1947 } else {
+
1948 r = -1;
+
1949 }
+
1950 return r;
+
1951}
+
1952
+
1953/*********************************************************************
+
1954*
+
1955* SEGGER_RTT_TerminalOut
+
1956*
+
1957* Function description
+
1958* Writes a string to the given terminal
+
1959* without changing the terminal for channel 0.
+
1960*
+
1961* Parameters
+
1962* TerminalId Index of the terminal.
+
1963* s String to be printed on the terminal.
+
1964*
+
1965* Return value
+
1966* >= 0 - Number of bytes written.
+
1967* < 0 - Error.
+
1968*
+
1969*/
+
1970int SEGGER_RTT_TerminalOut (unsigned char TerminalId, const char* s) {
+
1971 int Status;
+
1972 unsigned FragLen;
+
1973 unsigned Avail;
+
1974 SEGGER_RTT_BUFFER_UP* pRing;
+
1975 //
+
1976 INIT();
+
1977 //
+
1978 // Validate terminal ID.
+
1979 //
+
1980 if (TerminalId < (char)sizeof(_aTerminalId)) { // We only support a certain number of channels
+
1981 //
+
1982 // Get "to-host" ring buffer.
+
1983 //
+
1984 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[0] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
1985 //
+
1986 // Need to be able to change terminal, write data, change back.
+
1987 // Compute the fixed and variable sizes.
+
1988 //
+
1989 FragLen = STRLEN(s);
+
1990 //
+
1991 // How we output depends upon the mode...
+
1992 //
+
1993 SEGGER_RTT_LOCK();
+
1994 Avail = _GetAvailWriteSpace(pRing);
+
1995 switch (pRing->Flags & SEGGER_RTT_MODE_MASK) {
+
1996 case SEGGER_RTT_MODE_NO_BLOCK_SKIP:
+
1997 //
+
1998 // If we are in skip mode and there is no space for the whole
+
1999 // of this output, don't bother switching terminals at all.
+
2000 //
+
2001 if (Avail < (FragLen + 4u)) {
+
2002 Status = 0;
+
2003 } else {
+
2004 _PostTerminalSwitch(pRing, TerminalId);
+
2005 Status = (int)_WriteBlocking(pRing, s, FragLen);
+
2006 _PostTerminalSwitch(pRing, _ActiveTerminal);
+
2007 }
+
2008 break;
+
2009 case SEGGER_RTT_MODE_NO_BLOCK_TRIM:
+
2010 //
+
2011 // If we are in trim mode and there is not enough space for everything,
+
2012 // trim the output but always include the terminal switch. If no room
+
2013 // for terminal switch, skip that totally.
+
2014 //
+
2015 if (Avail < 4u) {
+
2016 Status = -1;
+
2017 } else {
+
2018 _PostTerminalSwitch(pRing, TerminalId);
+
2019 Status = (int)_WriteBlocking(pRing, s, (FragLen < (Avail - 4u)) ? FragLen : (Avail - 4u));
+
2020 _PostTerminalSwitch(pRing, _ActiveTerminal);
+
2021 }
+
2022 break;
+
2023 case SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL:
+
2024 //
+
2025 // If we are in blocking mode, output everything.
+
2026 //
+
2027 _PostTerminalSwitch(pRing, TerminalId);
+
2028 Status = (int)_WriteBlocking(pRing, s, FragLen);
+
2029 _PostTerminalSwitch(pRing, _ActiveTerminal);
+
2030 break;
+
2031 default:
+
2032 Status = -1;
+
2033 break;
+
2034 }
+
2035 //
+
2036 // Finish up.
+
2037 //
+
2038 SEGGER_RTT_UNLOCK();
+
2039 } else {
+
2040 Status = -1;
+
2041 }
+
2042 return Status;
+
2043}
+
2044
+
2045/*********************************************************************
+
2046*
+
2047* SEGGER_RTT_GetAvailWriteSpace
+
2048*
+
2049* Function description
+
2050* Returns the number of bytes available in the ring buffer.
+
2051*
+
2052* Parameters
+
2053* BufferIndex Index of the up buffer.
+
2054*
+
2055* Return value
+
2056* Number of bytes that are free in the selected up buffer.
+
2057*/
+
2058unsigned SEGGER_RTT_GetAvailWriteSpace (unsigned BufferIndex) {
+
2059 SEGGER_RTT_BUFFER_UP* pRing;
+
2060
+
2061 pRing = (SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[BufferIndex] + SEGGER_RTT_UNCACHED_OFF); // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
2062 return _GetAvailWriteSpace(pRing);
+
2063}
+
2064
+
2065
+
2066/*********************************************************************
+
2067*
+
2068* SEGGER_RTT_GetBytesInBuffer()
+
2069*
+
2070* Function description
+
2071* Returns the number of bytes currently used in the up buffer.
+
2072*
+
2073* Parameters
+
2074* BufferIndex Index of the up buffer.
+
2075*
+
2076* Return value
+
2077* Number of bytes that are used in the buffer.
+
2078*/
+
2079unsigned SEGGER_RTT_GetBytesInBuffer(unsigned BufferIndex) {
+
2080 unsigned RdOff;
+
2081 unsigned WrOff;
+
2082 unsigned r;
+
2083 volatile SEGGER_RTT_CB* pRTTCB;
+
2084 //
+
2085 // Avoid warnings regarding volatile access order. It's not a problem
+
2086 // in this case, but dampen compiler enthusiasm.
+
2087 //
+
2088 pRTTCB = (volatile SEGGER_RTT_CB*)((uintptr_t)&_SEGGER_RTT + SEGGER_RTT_UNCACHED_OFF); // Access RTTCB uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
2089 RdOff = pRTTCB->aUp[BufferIndex].RdOff;
+
2090 WrOff = pRTTCB->aUp[BufferIndex].WrOff;
+
2091 if (RdOff <= WrOff) {
+
2092 r = WrOff - RdOff;
+
2093 } else {
+
2094 r = pRTTCB->aUp[BufferIndex].SizeOfBuffer - (WrOff - RdOff);
+
2095 }
+
2096 return r;
+
2097}
+
2098
+
2099/*************************** End of file ****************************/
+ + + +
+
+
+ + + + diff --git a/Doc/html/_s_e_g_g_e_r___r_t_t_8h_source.html b/Doc/html/_s_e_g_g_e_r___r_t_t_8h_source.html new file mode 100644 index 0000000..45a1db4 --- /dev/null +++ b/Doc/html/_s_e_g_g_e_r___r_t_t_8h_source.html @@ -0,0 +1,636 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT.h Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SEGGER_RTT.h
+
+
+
1/*********************************************************************
+
2* SEGGER Microcontroller GmbH *
+
3* The Embedded Experts *
+
4**********************************************************************
+
5* *
+
6* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
+
7* *
+
8* www.segger.com Support: support@segger.com *
+
9* *
+
10**********************************************************************
+
11* *
+
12* SEGGER RTT * Real Time Transfer for embedded targets *
+
13* *
+
14**********************************************************************
+
15* *
+
16* All rights reserved. *
+
17* *
+
18* SEGGER strongly recommends to not make any changes *
+
19* to or modify the source code of this software in order to stay *
+
20* compatible with the RTT protocol and J-Link. *
+
21* *
+
22* Redistribution and use in source and binary forms, with or *
+
23* without modification, are permitted provided that the following *
+
24* condition is met: *
+
25* *
+
26* o Redistributions of source code must retain the above copyright *
+
27* notice, this condition and the following disclaimer. *
+
28* *
+
29* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
+
30* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
+
31* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
+
32* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
+
33* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
+
34* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
+
35* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
+
36* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
+
37* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
+
38* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+
39* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
+
40* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
+
41* DAMAGE. *
+
42* *
+
43**********************************************************************
+
44* *
+
45* RTT version: 8.10g *
+
46* *
+
47**********************************************************************
+
48
+
49---------------------------END-OF-HEADER------------------------------
+
50File : SEGGER_RTT.h
+
51Purpose : Implementation of SEGGER real-time transfer which allows
+
52 real-time communication on targets which support debugger
+
53 memory accesses while the CPU is running.
+
54Revision: $Rev: 25842 $
+
55----------------------------------------------------------------------
+
56*/
+
57
+
58#ifndef SEGGER_RTT_H
+
59#define SEGGER_RTT_H
+
60
+
61#include "SEGGER_RTT_Conf.h"
+
62
+
63/*********************************************************************
+
64*
+
65* Defines, defaults
+
66*
+
67**********************************************************************
+
68*/
+
69
+
70#ifndef RTT_USE_ASM
+
71 //
+
72 // Some cores support out-of-order memory accesses (reordering of memory accesses in the core)
+
73 // For such cores, we need to define a memory barrier to guarantee the order of certain accesses to the RTT ring buffers.
+
74 // Needed for:
+
75 // Cortex-M7 (ARMv7-M)
+
76 // Cortex-M23 (ARM-v8M)
+
77 // Cortex-M33 (ARM-v8M)
+
78 // Cortex-A/R (ARM-v7A/R)
+
79 //
+
80 // We do not explicitly check for "Embedded Studio" as the compiler in use determines what we support.
+
81 // You can use an external toolchain like IAR inside ES. So there is no point in checking for "Embedded Studio"
+
82 //
+
83 #if (defined __CROSSWORKS_ARM) // Rowley Crossworks
+
84 #define _CC_HAS_RTT_ASM_SUPPORT 1
+
85 #if (defined __ARM_ARCH_7M__) // Cortex-M3
+
86 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
87 #elif (defined __ARM_ARCH_7EM__) // Cortex-M4/M7
+
88 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
89 #define _CORE_NEEDS_DMB 1
+
90 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
91 #elif (defined __ARM_ARCH_8M_BASE__) // Cortex-M23
+
92 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
93 #define _CORE_NEEDS_DMB 1
+
94 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
95 #elif (defined __ARM_ARCH_8M_MAIN__) // Cortex-M33
+
96 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
97 #define _CORE_NEEDS_DMB 1
+
98 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
99 #elif (defined(__ARM_ARCH_8_1M_MAIN__)) // Cortex-M85
+
100 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
101 #define _CORE_NEEDS_DMB 1
+
102 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
103 #else
+
104 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
105 #endif
+
106 #elif (defined __ARMCC_VERSION)
+
107 //
+
108 // ARM compiler
+
109 // ARM compiler V6.0 and later is clang based.
+
110 // Our ASM part is compatible to clang.
+
111 //
+
112 #if (__ARMCC_VERSION >= 6000000)
+
113 #define _CC_HAS_RTT_ASM_SUPPORT 1
+
114 #else
+
115 #define _CC_HAS_RTT_ASM_SUPPORT 0
+
116 #endif
+
117 #if (defined __ARM_ARCH_6M__) // Cortex-M0 / M1
+
118 #define _CORE_HAS_RTT_ASM_SUPPORT 0 // No ASM support for this architecture
+
119 #elif (defined __ARM_ARCH_7M__) // Cortex-M3
+
120 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
121 #elif (defined __ARM_ARCH_7EM__) // Cortex-M4/M7
+
122 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
123 #define _CORE_NEEDS_DMB 1
+
124 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
125 #elif (defined __ARM_ARCH_8M_BASE__) // Cortex-M23
+
126 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
127 #define _CORE_NEEDS_DMB 1
+
128 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
129 #elif (defined __ARM_ARCH_8M_MAIN__) // Cortex-M33
+
130 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
131 #define _CORE_NEEDS_DMB 1
+
132 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
133 #elif (defined __ARM_ARCH_8_1M_MAIN__) // Cortex-M85
+
134 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
135 #define _CORE_NEEDS_DMB 1
+
136 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
137 #elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) // Cortex-A/R 32-bit ARMv7-A/R
+
138 #define _CORE_NEEDS_DMB 1
+
139 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
140 #else
+
141 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
142 #endif
+
143 #elif ((defined __GNUC__) || (defined __clang__))
+
144 //
+
145 // GCC / Clang
+
146 //
+
147 #define _CC_HAS_RTT_ASM_SUPPORT 1
+
148 // ARM 7/9: __ARM_ARCH_5__ / __ARM_ARCH_5E__ / __ARM_ARCH_5T__ / __ARM_ARCH_5T__ / __ARM_ARCH_5TE__
+
149 #if (defined __ARM_ARCH_7M__) // Cortex-M3
+
150 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
151 #elif (defined __ARM_ARCH_7EM__) // Cortex-M4/M7
+
152 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
153 #define _CORE_NEEDS_DMB 1 // Only Cortex-M7 needs a DMB but we cannot distinguish M4 and M7 here...
+
154 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
155 #elif (defined __ARM_ARCH_8M_BASE__) // Cortex-M23
+
156 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
157 #define _CORE_NEEDS_DMB 1
+
158 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
159 #elif (defined __ARM_ARCH_8M_MAIN__) // Cortex-M33
+
160 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
161 #define _CORE_NEEDS_DMB 1
+
162 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
163 #elif (defined __ARM_ARCH_8_1M_MAIN__) // Cortex-M85
+
164 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
165 #define _CORE_NEEDS_DMB 1
+
166 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
167 #elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) // Cortex-A/R 32-bit ARMv7-A/R
+
168 #define _CORE_NEEDS_DMB 1
+
169 #define RTT__DMB() __asm volatile ("dmb\n" : : :);
+
170 #else
+
171 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
172 #endif
+
173 #elif ((defined __IASMARM__) || (defined __ICCARM__))
+
174 //
+
175 // IAR assembler/compiler
+
176 //
+
177 #define _CC_HAS_RTT_ASM_SUPPORT 1
+
178 #if (__VER__ < 6300000)
+
179 #define VOLATILE
+
180 #else
+
181 #define VOLATILE volatile
+
182 #endif
+
183 #if (defined __ARM7M__) // Needed for old versions that do not know the define yet
+
184 #if (__CORE__ == __ARM7M__) // Cortex-M3
+
185 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
186 #endif
+
187 #endif
+
188 #if (defined __ARM7EM__)
+
189 #if (__CORE__ == __ARM7EM__) // Cortex-M4/M7
+
190 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
191 #define _CORE_NEEDS_DMB 1
+
192 #define RTT__DMB() asm VOLATILE ("DMB");
+
193 #endif
+
194 #endif
+
195 #if (defined __ARM8M_BASELINE__)
+
196 #if (__CORE__ == __ARM8M_BASELINE__) // Cortex-M23
+
197 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
198 #define _CORE_NEEDS_DMB 1
+
199 #define RTT__DMB() asm VOLATILE ("DMB");
+
200 #endif
+
201 #endif
+
202 #if (defined __ARM8M_MAINLINE__)
+
203 #if (__CORE__ == __ARM8M_MAINLINE__) // Cortex-M33
+
204 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
205 #define _CORE_NEEDS_DMB 1
+
206 #define RTT__DMB() asm VOLATILE ("DMB");
+
207 #endif
+
208 #endif
+
209 #if (defined __ARM8EM_MAINLINE__)
+
210 #if (__CORE__ == __ARM8EM_MAINLINE__) // Cortex-???
+
211 #define _CORE_HAS_RTT_ASM_SUPPORT 1
+
212 #define _CORE_NEEDS_DMB 1
+
213 #define RTT__DMB() asm VOLATILE ("DMB");
+
214 #endif
+
215 #endif
+
216 #if (defined __ARM7A__)
+
217 #if (__CORE__ == __ARM7A__) // Cortex-A 32-bit ARMv7-A
+
218 #define _CORE_NEEDS_DMB 1
+
219 #define RTT__DMB() asm VOLATILE ("DMB");
+
220 #endif
+
221 #endif
+
222 #if (defined __ARM7R__)
+
223 #if (__CORE__ == __ARM7R__) // Cortex-R 32-bit ARMv7-R
+
224 #define _CORE_NEEDS_DMB 1
+
225 #define RTT__DMB() asm VOLATILE ("DMB");
+
226 #endif
+
227 #endif
+
228// TBD: __ARM8A__ => Cortex-A 64-bit ARMv8-A
+
229// TBD: __ARM8R__ => Cortex-R 64-bit ARMv8-R
+
230 #else
+
231 //
+
232 // Other compilers
+
233 //
+
234 #define _CC_HAS_RTT_ASM_SUPPORT 0
+
235 #define _CORE_HAS_RTT_ASM_SUPPORT 0
+
236 #endif
+
237 //
+
238 // If IDE and core support the ASM version, enable ASM version by default
+
239 //
+
240 #ifndef _CORE_HAS_RTT_ASM_SUPPORT
+
241 #define _CORE_HAS_RTT_ASM_SUPPORT 0 // Default for unknown cores
+
242 #endif
+
243 #if (_CC_HAS_RTT_ASM_SUPPORT && _CORE_HAS_RTT_ASM_SUPPORT)
+
244 #define RTT_USE_ASM (1)
+
245 #else
+
246 #define RTT_USE_ASM (0)
+
247 #endif
+
248#endif
+
249
+
250#ifndef _CORE_NEEDS_DMB
+
251 #define _CORE_NEEDS_DMB 0
+
252#endif
+
253
+
254#ifndef RTT__DMB
+
255 #if _CORE_NEEDS_DMB
+
256 #error "Don't know how to place inline assembly for DMB"
+
257 #else
+
258 #define RTT__DMB()
+
259 #endif
+
260#endif
+
261
+
262#ifndef SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
263 #define SEGGER_RTT_CPU_CACHE_LINE_SIZE (0) // On most target systems where RTT is used, we do not have a CPU cache, therefore 0 is a good default here
+
264#endif
+
265
+
266#ifndef SEGGER_RTT_UNCACHED_OFF
+
267 #if SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
268 #error "SEGGER_RTT_UNCACHED_OFF must be defined when setting SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
269 #else
+
270 #define SEGGER_RTT_UNCACHED_OFF (0)
+
271 #endif
+
272#endif
+
273#if RTT_USE_ASM
+
274 #if SEGGER_RTT_CPU_CACHE_LINE_SIZE
+
275 #error "RTT_USE_ASM is not available if SEGGER_RTT_CPU_CACHE_LINE_SIZE != 0"
+
276 #endif
+
277#endif
+
278
+
279#ifndef SEGGER_RTT_ASM // defined when SEGGER_RTT.h is included from assembly file
+
280#include <stdlib.h>
+
281#include <stdarg.h>
+
282#include <stdint.h>
+
283
+
284/*********************************************************************
+
285*
+
286* Defines, fixed
+
287*
+
288**********************************************************************
+
289*/
+
290
+
291//
+
292// Determine how much we must pad the control block to make it a multiple of a cache line in size
+
293// Assuming: U8 = 1B
+
294// U16 = 2B
+
295// U32 = 4B
+
296// U8/U16/U32* = 4B
+
297//
+
298#if SEGGER_RTT_CPU_CACHE_LINE_SIZE // Avoid division by zero in case we do not have any cache
+
299 #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)
+
300#else
+
301 #define SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(NumBytes) (NumBytes)
+
302#endif
+
303#define SEGGER_RTT__CB_SIZE (16 + 4 + 4 + (SEGGER_RTT_MAX_NUM_UP_BUFFERS * 24) + (SEGGER_RTT_MAX_NUM_DOWN_BUFFERS * 24))
+
304#define SEGGER_RTT__CB_PADDING (SEGGER_RTT__ROUND_UP_2_CACHE_LINE_SIZE(SEGGER_RTT__CB_SIZE) - SEGGER_RTT__CB_SIZE)
+
305
+
306/*********************************************************************
+
307*
+
308* Types
+
309*
+
310**********************************************************************
+
311*/
+
312
+
313//
+
314// Description for a circular buffer (also called "ring buffer")
+
315// which is used as up-buffer (T->H)
+
316//
+
+
317typedef struct {
+
318 const char* sName; // Optional name. Standard names so far are: "Terminal", "SysView", "J-Scope_t4i4"
+
319 char* pBuffer; // Pointer to start of buffer
+
320 unsigned SizeOfBuffer; // 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.
+
321 unsigned WrOff; // Position of next item to be written by either target.
+
322 volatile unsigned RdOff; // Position of next item to be read by host. Must be volatile since it may be modified by host.
+
323 unsigned Flags; // 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.
+ +
+
325
+
326//
+
327// Description for a circular buffer (also called "ring buffer")
+
328// which is used as down-buffer (H->T)
+
329//
+
+
330typedef struct {
+
331 const char* sName; // Optional name. Standard names so far are: "Terminal", "SysView", "J-Scope_t4i4"
+
332 char* pBuffer; // Pointer to start of buffer
+
333 unsigned SizeOfBuffer; // 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.
+
334 volatile unsigned WrOff; // Position of next item to be written by host. Must be volatile since it may be modified by host.
+
335 unsigned RdOff; // Position of next item to be read by target (down-buffer).
+
336 unsigned Flags; // 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.
+ +
+
338
+
339//
+
340// RTT control block which describes the number of buffers available
+
341// as well as the configuration for each buffer
+
342//
+
343//
+
+
344typedef struct {
+
345 char acID[16]; // Initialized to "SEGGER RTT"
+
346 int MaxNumUpBuffers; // Initialized to SEGGER_RTT_MAX_NUM_UP_BUFFERS (type. 2)
+
347 int MaxNumDownBuffers; // Initialized to SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (type. 2)
+
348 SEGGER_RTT_BUFFER_UP aUp[SEGGER_RTT_MAX_NUM_UP_BUFFERS]; // Up buffers, transferring information up from target via debug probe to host
+
349 SEGGER_RTT_BUFFER_DOWN aDown[SEGGER_RTT_MAX_NUM_DOWN_BUFFERS]; // Down buffers, transferring information down from host via debug probe to target
+
350#if SEGGER_RTT__CB_PADDING
+
351 unsigned char aDummy[SEGGER_RTT__CB_PADDING];
+
352#endif
+ +
+
354
+
355/*********************************************************************
+
356*
+
357* Global data
+
358*
+
359**********************************************************************
+
360*/
+
361extern SEGGER_RTT_CB _SEGGER_RTT;
+
362
+
363/*********************************************************************
+
364*
+
365* RTT API functions
+
366*
+
367**********************************************************************
+
368*/
+
369#ifdef __cplusplus
+
370 extern "C" {
+
371#endif
+
372int SEGGER_RTT_AllocDownBuffer (const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
+
373int SEGGER_RTT_AllocUpBuffer (const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
+
374int SEGGER_RTT_ConfigUpBuffer (unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
+
375int SEGGER_RTT_ConfigDownBuffer (unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
+
376int SEGGER_RTT_GetKey (void);
+
377unsigned SEGGER_RTT_HasData (unsigned BufferIndex);
+
378int SEGGER_RTT_HasKey (void);
+
379unsigned SEGGER_RTT_HasDataUp (unsigned BufferIndex);
+
380void SEGGER_RTT_Init (void);
+
381unsigned SEGGER_RTT_Read (unsigned BufferIndex, void* pBuffer, unsigned BufferSize);
+
382unsigned SEGGER_RTT_ReadNoLock (unsigned BufferIndex, void* pData, unsigned BufferSize);
+
383int SEGGER_RTT_SetNameDownBuffer (unsigned BufferIndex, const char* sName);
+
384int SEGGER_RTT_SetNameUpBuffer (unsigned BufferIndex, const char* sName);
+
385int SEGGER_RTT_SetFlagsDownBuffer (unsigned BufferIndex, unsigned Flags);
+
386int SEGGER_RTT_SetFlagsUpBuffer (unsigned BufferIndex, unsigned Flags);
+
387int SEGGER_RTT_WaitKey (void);
+
388unsigned SEGGER_RTT_Write (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
+
389unsigned SEGGER_RTT_WriteNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
+
390unsigned SEGGER_RTT_WriteSkipNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
+
391unsigned SEGGER_RTT_ASM_WriteSkipNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
+
392unsigned SEGGER_RTT_WriteString (unsigned BufferIndex, const char* s);
+
393void SEGGER_RTT_WriteWithOverwriteNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
+
394unsigned SEGGER_RTT_PutChar (unsigned BufferIndex, char c);
+
395unsigned SEGGER_RTT_PutCharSkip (unsigned BufferIndex, char c);
+
396unsigned SEGGER_RTT_PutCharSkipNoLock (unsigned BufferIndex, char c);
+
397unsigned SEGGER_RTT_GetAvailWriteSpace (unsigned BufferIndex);
+
398unsigned SEGGER_RTT_GetBytesInBuffer (unsigned BufferIndex);
+
399//
+
400// Function macro for performance optimization
+
401//
+
402#define SEGGER_RTT_HASDATA(n) (((SEGGER_RTT_BUFFER_DOWN*)((uintptr_t)&_SEGGER_RTT.aDown[n] + SEGGER_RTT_UNCACHED_OFF))->WrOff - ((SEGGER_RTT_BUFFER_DOWN*)((uintptr_t)&_SEGGER_RTT.aDown[n] + SEGGER_RTT_UNCACHED_OFF))->RdOff)
+
403
+
404#if RTT_USE_ASM
+
405 #define SEGGER_RTT_WriteSkipNoLock SEGGER_RTT_ASM_WriteSkipNoLock
+
406#endif
+
407
+
408/*********************************************************************
+
409*
+
410* RTT transfer functions to send RTT data via other channels.
+
411*
+
412**********************************************************************
+
413*/
+
414unsigned SEGGER_RTT_ReadUpBuffer (unsigned BufferIndex, void* pBuffer, unsigned BufferSize);
+
415unsigned SEGGER_RTT_ReadUpBufferNoLock (unsigned BufferIndex, void* pData, unsigned BufferSize);
+
416unsigned SEGGER_RTT_WriteDownBuffer (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
+
417unsigned SEGGER_RTT_WriteDownBufferNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
+
418
+
419#define SEGGER_RTT_HASDATA_UP(n) (((SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))->WrOff - ((SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))->RdOff) // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
+
420
+
421/*********************************************************************
+
422*
+
423* RTT "Terminal" API functions
+
424*
+
425**********************************************************************
+
426*/
+
427int SEGGER_RTT_SetTerminal (unsigned char TerminalId);
+
428int SEGGER_RTT_TerminalOut (unsigned char TerminalId, const char* s);
+
429
+
430/*********************************************************************
+
431*
+
432* RTT printf functions (require SEGGER_RTT_printf.c)
+
433*
+
434**********************************************************************
+
435*/
+
436int SEGGER_RTT_printf(unsigned BufferIndex, const char * sFormat, ...);
+
437int SEGGER_RTT_vprintf(unsigned BufferIndex, const char * sFormat, va_list * pParamList);
+
438
+
439#ifdef __cplusplus
+
440 }
+
441#endif
+
442
+
443#endif // ifndef(SEGGER_RTT_ASM)
+
444
+
445//
+
446// For some environments, NULL may not be defined until certain headers are included
+
447//
+
448#ifndef NULL
+
449 #define NULL ((void*)0)
+
450#endif
+
451
+
452/*********************************************************************
+
453*
+
454* Defines
+
455*
+
456**********************************************************************
+
457*/
+
458
+
459//
+
460// Operating modes. Define behavior if buffer is full (not enough space for entire message)
+
461//
+
462#define SEGGER_RTT_MODE_NO_BLOCK_SKIP (0) // Skip. Do not block, output nothing. (Default)
+
463#define SEGGER_RTT_MODE_NO_BLOCK_TRIM (1) // Trim: Do not block, output as much as fits.
+
464#define SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL (2) // Block: Wait until there is space in the buffer.
+
465#define SEGGER_RTT_MODE_MASK (3)
+
466
+
467//
+
468// Control sequences, based on ANSI.
+
469// Can be used to control color, and clear the screen
+
470//
+
471#define RTT_CTRL_RESET "\x1B[0m" // Reset to default colors
+
472#define RTT_CTRL_CLEAR "\x1B[2J" // Clear screen, reposition cursor to top left
+
473
+
474#define RTT_CTRL_TEXT_BLACK "\x1B[2;30m"
+
475#define RTT_CTRL_TEXT_RED "\x1B[2;31m"
+
476#define RTT_CTRL_TEXT_GREEN "\x1B[2;32m"
+
477#define RTT_CTRL_TEXT_YELLOW "\x1B[2;33m"
+
478#define RTT_CTRL_TEXT_BLUE "\x1B[2;34m"
+
479#define RTT_CTRL_TEXT_MAGENTA "\x1B[2;35m"
+
480#define RTT_CTRL_TEXT_CYAN "\x1B[2;36m"
+
481#define RTT_CTRL_TEXT_WHITE "\x1B[2;37m"
+
482
+
483#define RTT_CTRL_TEXT_BRIGHT_BLACK "\x1B[1;30m"
+
484#define RTT_CTRL_TEXT_BRIGHT_RED "\x1B[1;31m"
+
485#define RTT_CTRL_TEXT_BRIGHT_GREEN "\x1B[1;32m"
+
486#define RTT_CTRL_TEXT_BRIGHT_YELLOW "\x1B[1;33m"
+
487#define RTT_CTRL_TEXT_BRIGHT_BLUE "\x1B[1;34m"
+
488#define RTT_CTRL_TEXT_BRIGHT_MAGENTA "\x1B[1;35m"
+
489#define RTT_CTRL_TEXT_BRIGHT_CYAN "\x1B[1;36m"
+
490#define RTT_CTRL_TEXT_BRIGHT_WHITE "\x1B[1;37m"
+
491
+
492#define RTT_CTRL_BG_BLACK "\x1B[24;40m"
+
493#define RTT_CTRL_BG_RED "\x1B[24;41m"
+
494#define RTT_CTRL_BG_GREEN "\x1B[24;42m"
+
495#define RTT_CTRL_BG_YELLOW "\x1B[24;43m"
+
496#define RTT_CTRL_BG_BLUE "\x1B[24;44m"
+
497#define RTT_CTRL_BG_MAGENTA "\x1B[24;45m"
+
498#define RTT_CTRL_BG_CYAN "\x1B[24;46m"
+
499#define RTT_CTRL_BG_WHITE "\x1B[24;47m"
+
500
+
501#define RTT_CTRL_BG_BRIGHT_BLACK "\x1B[4;40m"
+
502#define RTT_CTRL_BG_BRIGHT_RED "\x1B[4;41m"
+
503#define RTT_CTRL_BG_BRIGHT_GREEN "\x1B[4;42m"
+
504#define RTT_CTRL_BG_BRIGHT_YELLOW "\x1B[4;43m"
+
505#define RTT_CTRL_BG_BRIGHT_BLUE "\x1B[4;44m"
+
506#define RTT_CTRL_BG_BRIGHT_MAGENTA "\x1B[4;45m"
+
507#define RTT_CTRL_BG_BRIGHT_CYAN "\x1B[4;46m"
+
508#define RTT_CTRL_BG_BRIGHT_WHITE "\x1B[4;47m"
+
509
+
510
+
511#endif
+
512
+
513/*************************** End of file ****************************/
+ + + +
+
+
+ + + + diff --git a/Doc/html/_s_e_g_g_e_r___r_t_t___conf_8h_source.html b/Doc/html/_s_e_g_g_e_r___r_t_t___conf_8h_source.html new file mode 100644 index 0000000..98a785c --- /dev/null +++ b/Doc/html/_s_e_g_g_e_r___r_t_t___conf_8h_source.html @@ -0,0 +1,543 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT_Conf.h Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SEGGER_RTT_Conf.h
+
+
+
1/*********************************************************************
+
2* SEGGER Microcontroller GmbH *
+
3* The Embedded Experts *
+
4**********************************************************************
+
5* *
+
6* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
+
7* *
+
8* www.segger.com Support: support@segger.com *
+
9* *
+
10**********************************************************************
+
11* *
+
12* SEGGER RTT * Real Time Transfer for embedded targets *
+
13* *
+
14**********************************************************************
+
15* *
+
16* All rights reserved. *
+
17* *
+
18* SEGGER strongly recommends to not make any changes *
+
19* to or modify the source code of this software in order to stay *
+
20* compatible with the RTT protocol and J-Link. *
+
21* *
+
22* Redistribution and use in source and binary forms, with or *
+
23* without modification, are permitted provided that the following *
+
24* condition is met: *
+
25* *
+
26* o Redistributions of source code must retain the above copyright *
+
27* notice, this condition and the following disclaimer. *
+
28* *
+
29* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
+
30* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
+
31* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
+
32* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
+
33* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
+
34* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
+
35* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
+
36* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
+
37* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
+
38* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+
39* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
+
40* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
+
41* DAMAGE. *
+
42* *
+
43**********************************************************************
+
44* *
+
45* RTT version: 8.10g *
+
46* *
+
47**********************************************************************
+
48
+
49---------------------------END-OF-HEADER------------------------------
+
50File : SEGGER_RTT_Conf.h
+
51Purpose : Implementation of SEGGER real-time transfer (RTT) which
+
52 allows real-time communication on targets which support
+
53 debugger memory accesses while the CPU is running.
+
54Revision: $Rev: 24316 $
+
55
+
56*/
+
57
+
58#ifndef SEGGER_RTT_CONF_H
+
59#define SEGGER_RTT_CONF_H
+
60
+
61#ifdef __IAR_SYSTEMS_ICC__
+
62 #include <intrinsics.h>
+
63#endif
+
64
+
65/*********************************************************************
+
66*
+
67* Defines, configurable
+
68*
+
69**********************************************************************
+
70*/
+
71
+
72//
+
73// Take in and set to correct values for Cortex-A systems with CPU cache
+
74//
+
75//#define SEGGER_RTT_CPU_CACHE_LINE_SIZE (32) // Largest cache line size (in bytes) in the current system
+
76//#define SEGGER_RTT_UNCACHED_OFF (0xFB000000) // Address alias where RTT CB and buffers can be accessed uncached
+
77//
+
78// Most common case:
+
79// Up-channel 0: RTT
+
80// Up-channel 1: SystemView
+
81//
+
82#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS
+
83 #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3)
+
84#endif
+
85//
+
86// Most common case:
+
87// Down-channel 0: RTT
+
88// Down-channel 1: SystemView
+
89//
+
90#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS
+
91 #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3)
+
92#endif
+
93
+
94#ifndef BUFFER_SIZE_UP
+
95 #define BUFFER_SIZE_UP (4096) // Size of the buffer for terminal output of target, up to host (Default: 1k)
+
96#endif
+
97
+
98#ifndef BUFFER_SIZE_DOWN
+
99 #define BUFFER_SIZE_DOWN (16) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)
+
100#endif
+
101
+
102#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE
+
103 #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64)
+
104#endif
+
105
+
106#ifndef SEGGER_RTT_MODE_DEFAULT
+
107 #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_TRIM // Mode for pre-initialized terminal channel (buffer 0)
+
108#endif
+
109
+
110/*********************************************************************
+
111*
+
112* RTT memcpy configuration
+
113*
+
114* memcpy() is good for large amounts of data,
+
115* but the overhead is big for small amounts, which are usually stored via RTT.
+
116* With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead.
+
117*
+
118* SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions.
+
119* This is may be required with memory access restrictions,
+
120* such as on Cortex-A devices with MMU.
+
121*/
+
122#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP
+
123 #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 // 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop
+
124#endif
+
125//
+
126// Example definition of SEGGER_RTT_MEMCPY to external memcpy with GCC toolchains and Cortex-A targets
+
127//
+
128//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) && (defined (__ARM_ARCH_7A__))
+
129// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes))
+
130//#endif
+
131
+
132//
+
133// Target is not allowed to perform other RTT operations while string still has not been stored completely.
+
134// Otherwise we would probably end up with a mixed string in the buffer.
+
135// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here.
+
136//
+
137// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4.
+
138// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches.
+
139// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly.
+
140// (Higher priority = lower priority number)
+
141// Default value for embOS: 128u
+
142// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
+
143// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC
+
144// or define SEGGER_RTT_LOCK() to completely disable interrupts.
+
145//
+
146#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
+
147 #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20)
+
148#endif
+
149
+
150/*********************************************************************
+
151*
+
152* RTT lock configuration for SEGGER Embedded Studio,
+
153* Rowley CrossStudio and GCC
+
154*/
+
155#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32))
+
156 #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__))
+
157 #define SEGGER_RTT_LOCK() { \
+
158 unsigned int _SEGGER_RTT__LockState; \
+
159 __asm volatile ("mrs %0, primask \n\t" \
+
160 "movs r1, #1 \n\t" \
+
161 "msr primask, r1 \n\t" \
+
162 : "=r" (_SEGGER_RTT__LockState) \
+
163 : \
+
164 : "r1", "cc" \
+
165 );
+
166
+
167 #define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \
+
168 : \
+
169 : "r" (_SEGGER_RTT__LockState) \
+
170 : \
+
171 ); \
+
172 }
+
173 #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8_1M_MAIN__))
+
174 #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
+
175 #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
+
176 #endif
+
177 #define SEGGER_RTT_LOCK() { \
+
178 unsigned int _SEGGER_RTT__LockState; \
+
179 __asm volatile ("mrs %0, basepri \n\t" \
+
180 "mov r1, %1 \n\t" \
+
181 "msr basepri, r1 \n\t" \
+
182 : "=r" (_SEGGER_RTT__LockState) \
+
183 : "i"(SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \
+
184 : "r1", "cc" \
+
185 );
+
186
+
187 #define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \
+
188 : \
+
189 : "r" (_SEGGER_RTT__LockState) \
+
190 : \
+
191 ); \
+
192 }
+
193
+
194 #elif (defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__))
+
195 #define SEGGER_RTT_LOCK() { \
+
196 unsigned int _SEGGER_RTT__LockState; \
+
197 __asm volatile ("mrs r1, CPSR \n\t" \
+
198 "mov %0, r1 \n\t" \
+
199 "orr r1, r1, #0xC0 \n\t" \
+
200 "msr CPSR_c, r1 \n\t" \
+
201 : "=r" (_SEGGER_RTT__LockState) \
+
202 : \
+
203 : "r1", "cc" \
+
204 );
+
205
+
206 #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \
+
207 "mrs r1, CPSR \n\t" \
+
208 "bic r1, r1, #0xC0 \n\t" \
+
209 "and r0, r0, #0xC0 \n\t" \
+
210 "orr r1, r1, r0 \n\t" \
+
211 "msr CPSR_c, r1 \n\t" \
+
212 : \
+
213 : "r" (_SEGGER_RTT__LockState) \
+
214 : "r0", "r1", "cc" \
+
215 ); \
+
216 }
+
217 #elif defined(__riscv) || defined(__riscv_xlen)
+
218 #define SEGGER_RTT_LOCK() { \
+
219 unsigned int _SEGGER_RTT__LockState; \
+
220 __asm volatile ("csrr %0, mstatus \n\t" \
+
221 "csrci mstatus, 8 \n\t" \
+
222 "andi %0, %0, 8 \n\t" \
+
223 : "=r" (_SEGGER_RTT__LockState) \
+
224 : \
+
225 : \
+
226 );
+
227
+
228 #define SEGGER_RTT_UNLOCK() __asm volatile ("csrr a1, mstatus \n\t" \
+
229 "or %0, %0, a1 \n\t" \
+
230 "csrs mstatus, %0 \n\t" \
+
231 : \
+
232 : "r" (_SEGGER_RTT__LockState) \
+
233 : "a1" \
+
234 ); \
+
235 }
+
236 #else
+
237 #define SEGGER_RTT_LOCK()
+
238 #define SEGGER_RTT_UNLOCK()
+
239 #endif
+
240#endif
+
241
+
242/*********************************************************************
+
243*
+
244* RTT lock configuration for IAR EWARM
+
245*/
+
246#ifdef __ICCARM__
+
247 #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) || \
+
248 (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__))
+
249 #define SEGGER_RTT_LOCK() { \
+
250 unsigned int _SEGGER_RTT__LockState; \
+
251 _SEGGER_RTT__LockState = __get_PRIMASK(); \
+
252 __set_PRIMASK(1);
+
253
+
254 #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \
+
255 }
+
256 #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || \
+
257 (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || \
+
258 (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) || \
+
259 (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__))
+
260 #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
+
261 #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
+
262 #endif
+
263 #define SEGGER_RTT_LOCK() { \
+
264 unsigned int _SEGGER_RTT__LockState; \
+
265 _SEGGER_RTT__LockState = __get_BASEPRI(); \
+
266 __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);
+
267
+
268 #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \
+
269 }
+
270 #elif (defined (__ARM7A__) && (__CORE__ == __ARM7A__)) || \
+
271 (defined (__ARM7R__) && (__CORE__ == __ARM7R__))
+
272 #define SEGGER_RTT_LOCK() { \
+
273 unsigned int _SEGGER_RTT__LockState; \
+
274 __asm volatile ("mrs r1, CPSR \n\t" \
+
275 "mov %0, r1 \n\t" \
+
276 "orr r1, r1, #0xC0 \n\t" \
+
277 "msr CPSR_c, r1 \n\t" \
+
278 : "=r" (_SEGGER_RTT__LockState) \
+
279 : \
+
280 : "r1", "cc" \
+
281 );
+
282
+
283 #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \
+
284 "mrs r1, CPSR \n\t" \
+
285 "bic r1, r1, #0xC0 \n\t" \
+
286 "and r0, r0, #0xC0 \n\t" \
+
287 "orr r1, r1, r0 \n\t" \
+
288 "msr CPSR_c, r1 \n\t" \
+
289 : \
+
290 : "r" (_SEGGER_RTT__LockState) \
+
291 : "r0", "r1", "cc" \
+
292 ); \
+
293 }
+
294 #endif
+
295#endif
+
296
+
297/*********************************************************************
+
298*
+
299* RTT lock configuration for IAR RX
+
300*/
+
301#ifdef __ICCRX__
+
302 #define SEGGER_RTT_LOCK() { \
+
303 unsigned long _SEGGER_RTT__LockState; \
+
304 _SEGGER_RTT__LockState = __get_interrupt_state(); \
+
305 __disable_interrupt();
+
306
+
307 #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \
+
308 }
+
309#endif
+
310
+
311/*********************************************************************
+
312*
+
313* RTT lock configuration for IAR RL78
+
314*/
+
315#ifdef __ICCRL78__
+
316 #define SEGGER_RTT_LOCK() { \
+
317 __istate_t _SEGGER_RTT__LockState; \
+
318 _SEGGER_RTT__LockState = __get_interrupt_state(); \
+
319 __disable_interrupt();
+
320
+
321 #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \
+
322 }
+
323#endif
+
324
+
325/*********************************************************************
+
326*
+
327* RTT lock configuration for KEIL ARM
+
328*/
+
329#ifdef __CC_ARM
+
330 #if (defined __TARGET_ARCH_6S_M)
+
331 #define SEGGER_RTT_LOCK() { \
+
332 unsigned int _SEGGER_RTT__LockState; \
+
333 register unsigned char _SEGGER_RTT__PRIMASK __asm( "primask"); \
+
334 _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \
+
335 _SEGGER_RTT__PRIMASK = 1u; \
+
336 __schedule_barrier();
+
337
+
338 #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \
+
339 __schedule_barrier(); \
+
340 }
+
341 #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))
+
342 #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
+
343 #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
+
344 #endif
+
345 #define SEGGER_RTT_LOCK() { \
+
346 unsigned int _SEGGER_RTT__LockState; \
+
347 register unsigned char BASEPRI __asm( "basepri"); \
+
348 _SEGGER_RTT__LockState = BASEPRI; \
+
349 BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \
+
350 __schedule_barrier();
+
351
+
352 #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \
+
353 __schedule_barrier(); \
+
354 }
+
355 #endif
+
356#endif
+
357
+
358/*********************************************************************
+
359*
+
360* RTT lock configuration for TI ARM
+
361*/
+
362#ifdef __TI_ARM__
+
363 #if defined (__TI_ARM_V6M0__)
+
364 #define SEGGER_RTT_LOCK() { \
+
365 unsigned int _SEGGER_RTT__LockState; \
+
366 _SEGGER_RTT__LockState = __get_PRIMASK(); \
+
367 __set_PRIMASK(1);
+
368
+
369 #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \
+
370 }
+
371 #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__))
+
372 #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
+
373 #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
+
374 #endif
+
375 #define SEGGER_RTT_LOCK() { \
+
376 unsigned int _SEGGER_RTT__LockState; \
+
377 _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);
+
378
+
379 #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \
+
380 }
+
381 #endif
+
382#endif
+
383
+
384/*********************************************************************
+
385*
+
386* RTT lock configuration for CCRX
+
387*/
+
388#ifdef __RX
+
389 #include <machine.h>
+
390 #define SEGGER_RTT_LOCK() { \
+
391 unsigned long _SEGGER_RTT__LockState; \
+
392 _SEGGER_RTT__LockState = get_psw() & 0x010000; \
+
393 clrpsw_i();
+
394
+
395 #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \
+
396 }
+
397#endif
+
398
+
399/*********************************************************************
+
400*
+
401* RTT lock configuration for embOS Simulation on Windows
+
402* (Can also be used for generic RTT locking with embOS)
+
403*/
+
404#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS)
+
405
+
406void OS_SIM_EnterCriticalSection(void);
+
407void OS_SIM_LeaveCriticalSection(void);
+
408
+
409#define SEGGER_RTT_LOCK() { \
+
410 OS_SIM_EnterCriticalSection();
+
411
+
412#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \
+
413 }
+
414#endif
+
415
+
416/*********************************************************************
+
417*
+
418* RTT lock configuration fallback
+
419*/
+
420#ifndef SEGGER_RTT_LOCK
+
421 #define SEGGER_RTT_LOCK() // Lock RTT (nestable) (i.e. disable interrupts)
+
422#endif
+
423
+
424#ifndef SEGGER_RTT_UNLOCK
+
425 #define SEGGER_RTT_UNLOCK() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state)
+
426#endif
+
427
+
428#endif
+
429/*************************** End of file ****************************/
+
+
+
+ + + + diff --git a/Doc/html/_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html b/Doc/html/_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html new file mode 100644 index 0000000..e7b9f66 --- /dev/null +++ b/Doc/html/_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html @@ -0,0 +1,508 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT_Syscalls_KEIL.c Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SEGGER_RTT_Syscalls_KEIL.c
+
+
+
1/*********************************************************************
+
2* SEGGER Microcontroller GmbH *
+
3* The Embedded Experts *
+
4**********************************************************************
+
5* *
+
6* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
+
7* *
+
8* www.segger.com Support: support@segger.com *
+
9* *
+
10**********************************************************************
+
11* *
+
12* SEGGER RTT * Real Time Transfer for embedded targets *
+
13* *
+
14**********************************************************************
+
15* *
+
16* All rights reserved. *
+
17* *
+
18* SEGGER strongly recommends to not make any changes *
+
19* to or modify the source code of this software in order to stay *
+
20* compatible with the RTT protocol and J-Link. *
+
21* *
+
22* Redistribution and use in source and binary forms, with or *
+
23* without modification, are permitted provided that the following *
+
24* condition is met: *
+
25* *
+
26* o Redistributions of source code must retain the above copyright *
+
27* notice, this condition and the following disclaimer. *
+
28* *
+
29* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
+
30* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
+
31* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
+
32* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
+
33* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
+
34* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
+
35* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
+
36* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
+
37* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
+
38* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+
39* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
+
40* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
+
41* DAMAGE. *
+
42* *
+
43**********************************************************************
+
44* *
+
45* RTT version: 7.54 *
+
46* *
+
47**********************************************************************
+
48
+
49---------------------------END-OF-HEADER------------------------------
+
50File : RTT_Syscalls_KEIL.c
+
51Purpose : Retargeting module for KEIL MDK-CM3.
+
52 Low-level functions for using printf() via RTT
+
53Revision: $Rev: 24316 $
+
54Notes : (1) https://wiki.segger.com/Keil_MDK-ARM#RTT_in_uVision
+
55----------------------------------------------------------------------
+
56*/
+
57#if (defined __CC_ARM) || (defined __ARMCC_VERSION)
+
58
+
59#include <stdio.h>
+
60#include <stdlib.h>
+
61#include <string.h>
+
62#include <rt_sys.h>
+
63#include <rt_misc.h>
+
64
+
65#include "SEGGER_RTT.h"
+
66/*********************************************************************
+
67*
+
68* #pragmas
+
69*
+
70**********************************************************************
+
71*/
+
72#if __ARMCC_VERSION < 6000000
+
73#pragma import(__use_no_semihosting)
+
74#endif
+
75
+
76#ifdef _MICROLIB
+
77 #pragma import(__use_full_stdio)
+
78#endif
+
79
+
80/*********************************************************************
+
81*
+
82* Defines non-configurable
+
83*
+
84**********************************************************************
+
85*/
+
86
+
87/* Standard IO device handles - arbitrary, but any real file system handles must be
+
88 less than 0x8000. */
+
89#define STDIN 0x8001 // Standard Input Stream
+
90#define STDOUT 0x8002 // Standard Output Stream
+
91#define STDERR 0x8003 // Standard Error Stream
+
92
+
93/*********************************************************************
+
94*
+
95* Public const
+
96*
+
97**********************************************************************
+
98*/
+
99#if __ARMCC_VERSION < 5000000
+
100//const char __stdin_name[] = "STDIN";
+
101const char __stdout_name[] = "STDOUT";
+
102const char __stderr_name[] = "STDERR";
+
103#endif
+
104
+
105/*********************************************************************
+
106*
+
107* Public code
+
108*
+
109**********************************************************************
+
110*/
+
111
+
112/*********************************************************************
+
113*
+
114* _ttywrch
+
115*
+
116* Function description:
+
117* Outputs a character to the console
+
118*
+
119* Parameters:
+
120* c - character to output
+
121*
+
122*/
+
123void _ttywrch(int c) {
+
124 fputc(c, stdout); // stdout
+
125 fflush(stdout);
+
126}
+
127
+
128/*********************************************************************
+
129*
+
130* _sys_open
+
131*
+
132* Function description:
+
133* Opens the device/file in order to do read/write operations
+
134*
+
135* Parameters:
+
136* sName - sName of the device/file to open
+
137* OpenMode - This parameter is currently ignored
+
138*
+
139* Return value:
+
140* != 0 - Handle to the object to open, otherwise
+
141* == 0 -"device" is not handled by this module
+
142*
+
143*/
+
144FILEHANDLE _sys_open(const char * sName, int OpenMode) {
+
145 (void)OpenMode;
+
146 // Register standard Input Output devices.
+
147 if (strcmp(sName, __stdout_name) == 0) {
+
148 return (STDOUT);
+
149 } else if (strcmp(sName, __stderr_name) == 0) {
+
150 return (STDERR);
+
151 } else
+
152 return (0); // Not implemented
+
153}
+
154
+
155/*********************************************************************
+
156*
+
157* _sys_close
+
158*
+
159* Function description:
+
160* Closes the handle to the open device/file
+
161*
+
162* Parameters:
+
163* hFile - Handle to a file opened via _sys_open
+
164*
+
165* Return value:
+
166* 0 - device/file closed
+
167*
+
168*/
+
169int _sys_close(FILEHANDLE hFile) {
+
170 (void)hFile;
+
171 return 0; // Not implemented
+
172}
+
173
+
174/*********************************************************************
+
175*
+
176* _sys_write
+
177*
+
178* Function description:
+
179* Writes the data to an open handle.
+
180* Currently this function only outputs data to the console
+
181*
+
182* Parameters:
+
183* hFile - Handle to a file opened via _sys_open
+
184* pBuffer - Pointer to the data that shall be written
+
185* NumBytes - Number of bytes to write
+
186* Mode - The Mode that shall be used
+
187*
+
188* Return value:
+
189* Number of bytes *not* written to the file/device
+
190*
+
191*/
+
192int _sys_write(FILEHANDLE hFile, const unsigned char * pBuffer, unsigned NumBytes, int Mode) {
+
193 int r = 0;
+
194
+
195 (void)Mode;
+
196 if (hFile == STDOUT) {
+
197 SEGGER_RTT_Write(0, (const char*)pBuffer, NumBytes);
+
198 return 0;
+
199 }
+
200 return r;
+
201}
+
202
+
203/*********************************************************************
+
204*
+
205* _sys_read
+
206*
+
207* Function description:
+
208* Reads data from an open handle.
+
209* Currently this modules does nothing.
+
210*
+
211* Parameters:
+
212* hFile - Handle to a file opened via _sys_open
+
213* pBuffer - Pointer to buffer to store the read data
+
214* NumBytes - Number of bytes to read
+
215* Mode - The Mode that shall be used
+
216*
+
217* Return value:
+
218* Number of bytes read from the file/device
+
219*
+
220*/
+
221int _sys_read(FILEHANDLE hFile, unsigned char * pBuffer, unsigned NumBytes, int Mode) {
+
222 (void)hFile;
+
223 (void)pBuffer;
+
224 (void)NumBytes;
+
225 (void)Mode;
+
226 return (0); // Not implemented
+
227}
+
228
+
229/*********************************************************************
+
230*
+
231* _sys_istty
+
232*
+
233* Function description:
+
234* This function shall return whether the opened file
+
235* is a console device or not.
+
236*
+
237* Parameters:
+
238* hFile - Handle to a file opened via _sys_open
+
239*
+
240* Return value:
+
241* 1 - Device is a console
+
242* 0 - Device is not a console
+
243*
+
244*/
+
245int _sys_istty(FILEHANDLE hFile) {
+
246 if (hFile > 0x8000) {
+
247 return (1);
+
248 }
+
249 return (0); // Not implemented
+
250}
+
251
+
252/*********************************************************************
+
253*
+
254* _sys_seek
+
255*
+
256* Function description:
+
257* Seeks via the file to a specific position
+
258*
+
259* Parameters:
+
260* hFile - Handle to a file opened via _sys_open
+
261* Pos -
+
262*
+
263* Return value:
+
264* int -
+
265*
+
266*/
+
267int _sys_seek(FILEHANDLE hFile, long Pos) {
+
268 (void)hFile;
+
269 (void)Pos;
+
270 return (0); // Not implemented
+
271}
+
272
+
273/*********************************************************************
+
274*
+
275* _sys_ensure
+
276*
+
277* Function description:
+
278*
+
279*
+
280* Parameters:
+
281* hFile - Handle to a file opened via _sys_open
+
282*
+
283* Return value:
+
284* int -
+
285*
+
286*/
+
287int _sys_ensure(FILEHANDLE hFile) {
+
288 (void)hFile;
+
289 return (-1); // Not implemented
+
290}
+
291
+
292/*********************************************************************
+
293*
+
294* _sys_flen
+
295*
+
296* Function description:
+
297* Returns the length of the opened file handle
+
298*
+
299* Parameters:
+
300* hFile - Handle to a file opened via _sys_open
+
301*
+
302* Return value:
+
303* Length of the file
+
304*
+
305*/
+
306long _sys_flen(FILEHANDLE hFile) {
+
307 (void)hFile;
+
308 return (0); // Not implemented
+
309}
+
310
+
311/*********************************************************************
+
312*
+
313* _sys_tmpnam
+
314*
+
315* Function description:
+
316* This function converts the file number fileno for a temporary
+
317* file to a unique filename, for example, tmp0001.
+
318*
+
319* Parameters:
+
320* pBuffer - Pointer to a buffer to store the name
+
321* FileNum - file number to convert
+
322* MaxLen - Size of the buffer
+
323*
+
324* Return value:
+
325* 1 - Error
+
326* 0 - Success
+
327*
+
328*/
+
329int _sys_tmpnam2(char * pBuffer, int FileNum, unsigned MaxLen) {
+
330 (void)pBuffer;
+
331 (void)FileNum;
+
332 (void)MaxLen;
+
333 return (1); // Not implemented
+
334}
+
335
+
336/*********************************************************************
+
337*
+
338* _sys_command_string
+
339*
+
340* Function description:
+
341* This function shall execute a system command.
+
342*
+
343* Parameters:
+
344* cmd - Pointer to the command string
+
345* len - Length of the string
+
346*
+
347* Return value:
+
348* == NULL - Command was not successfully executed
+
349* == sCmd - Command was passed successfully
+
350*
+
351*/
+
352char * _sys_command_string(char * cmd, int len) {
+
353 (void)len;
+
354 return cmd; // Not implemented
+
355}
+
356
+
357/*********************************************************************
+
358*
+
359* _sys_exit
+
360*
+
361* Function description:
+
362* This function is called when the application returns from main
+
363*
+
364* Parameters:
+
365* ReturnCode - Return code from the main function
+
366*
+
367*
+
368*/
+
369void _sys_exit(int ReturnCode) {
+
370 (void)ReturnCode;
+
371 while (1); // Not implemented
+
372}
+
373
+
374#if __ARMCC_VERSION >= 5000000
+
375/*********************************************************************
+
376*
+
377* stdout_putchar
+
378*
+
379* Function description:
+
380* Put a character to the stdout
+
381*
+
382* Parameters:
+
383* ch - Character to output
+
384*
+
385*
+
386*/
+
387int stdout_putchar(int ch) {
+
388 (void)ch;
+
389 return ch; // Not implemented
+
390}
+
391#endif
+
392
+
393#endif
+
394/*************************** End of file ****************************/
+
+
+
+ + + + diff --git a/Doc/html/_s_e_g_g_e_r___r_t_t__printf_8c_source.html b/Doc/html/_s_e_g_g_e_r___r_t_t__printf_8c_source.html new file mode 100644 index 0000000..edf16e6 --- /dev/null +++ b/Doc/html/_s_e_g_g_e_r___r_t_t__printf_8c_source.html @@ -0,0 +1,625 @@ + + + + + + + +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT_printf.c Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MyLibs 1.0 +
+
Расширенные библиотеки для STM32
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SEGGER_RTT_printf.c
+
+
+
1/*********************************************************************
+
2* SEGGER Microcontroller GmbH *
+
3* The Embedded Experts *
+
4**********************************************************************
+
5* *
+
6* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
+
7* *
+
8* www.segger.com Support: support@segger.com *
+
9* *
+
10**********************************************************************
+
11* *
+
12* SEGGER RTT * Real Time Transfer for embedded targets *
+
13* *
+
14**********************************************************************
+
15* *
+
16* All rights reserved. *
+
17* *
+
18* SEGGER strongly recommends to not make any changes *
+
19* to or modify the source code of this software in order to stay *
+
20* compatible with the RTT protocol and J-Link. *
+
21* *
+
22* Redistribution and use in source and binary forms, with or *
+
23* without modification, are permitted provided that the following *
+
24* condition is met: *
+
25* *
+
26* o Redistributions of source code must retain the above copyright *
+
27* notice, this condition and the following disclaimer. *
+
28* *
+
29* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
+
30* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
+
31* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
+
32* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
+
33* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
+
34* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
+
35* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
+
36* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
+
37* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
+
38* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+
39* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
+
40* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
+
41* DAMAGE. *
+
42* *
+
43**********************************************************************
+
44* *
+
45* RTT version: 8.10g *
+
46* *
+
47**********************************************************************
+
48
+
49---------------------------END-OF-HEADER------------------------------
+
50File : SEGGER_RTT_printf.c
+
51Purpose : Replacement for printf to write formatted data via RTT
+
52Revision: $Rev: 17697 $
+
53----------------------------------------------------------------------
+
54*/
+
55#include "SEGGER_RTT.h"
+
56#include "SEGGER_RTT_Conf.h"
+
57
+
58/*********************************************************************
+
59*
+
60* Defines, configurable
+
61*
+
62**********************************************************************
+
63*/
+
64
+
65#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE
+
66 #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64)
+
67#endif
+
68
+
69#include <stdlib.h>
+
70#include <stdarg.h>
+
71
+
72
+
73#define FORMAT_FLAG_LEFT_JUSTIFY (1u << 0)
+
74#define FORMAT_FLAG_PAD_ZERO (1u << 1)
+
75#define FORMAT_FLAG_PRINT_SIGN (1u << 2)
+
76#define FORMAT_FLAG_ALTERNATE (1u << 3)
+
77
+
78/*********************************************************************
+
79*
+
80* Types
+
81*
+
82**********************************************************************
+
83*/
+
84
+
+
85typedef struct {
+
86 char* pBuffer;
+
87 unsigned BufferSize;
+
88 unsigned Cnt;
+
89
+
90 int ReturnValue;
+
91
+
92 unsigned RTTBufferIndex;
+ +
+
94
+
95/*********************************************************************
+
96*
+
97* Function prototypes
+
98*
+
99**********************************************************************
+
100*/
+
101
+
102/*********************************************************************
+
103*
+
104* Static code
+
105*
+
106**********************************************************************
+
107*/
+
108/*********************************************************************
+
109*
+
110* _StoreChar
+
111*/
+
112static void _StoreChar(SEGGER_RTT_PRINTF_DESC * p, char c) {
+
113 unsigned Cnt;
+
114
+
115 Cnt = p->Cnt;
+
116 if ((Cnt + 1u) <= p->BufferSize) {
+
117 *(p->pBuffer + Cnt) = c;
+
118 p->Cnt = Cnt + 1u;
+
119 p->ReturnValue++;
+
120 }
+
121 //
+
122 // Write part of string, when the buffer is full
+
123 //
+
124 if (p->Cnt == p->BufferSize) {
+
125 if (SEGGER_RTT_Write(p->RTTBufferIndex, p->pBuffer, p->Cnt) != p->Cnt) {
+
126 p->ReturnValue = -1;
+
127 } else {
+
128 p->Cnt = 0u;
+
129 }
+
130 }
+
131}
+
132
+
133/*********************************************************************
+
134*
+
135* _PrintUnsigned
+
136*/
+
137static void _PrintUnsigned(SEGGER_RTT_PRINTF_DESC * pBufferDesc, unsigned v, unsigned Base, unsigned NumDigits, unsigned FieldWidth, unsigned FormatFlags) {
+
138 static const char _aV2C[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+
139 unsigned Div;
+
140 unsigned Digit;
+
141 unsigned Number;
+
142 unsigned Width;
+
143 char c;
+
144
+
145 Number = v;
+
146 Digit = 1u;
+
147 //
+
148 // Get actual field width
+
149 //
+
150 Width = 1u;
+
151 while (Number >= Base) {
+
152 Number = (Number / Base);
+
153 Width++;
+
154 }
+
155 if (NumDigits > Width) {
+
156 Width = NumDigits;
+
157 }
+
158 //
+
159 // Print leading chars if necessary
+
160 //
+
161 if ((FormatFlags & FORMAT_FLAG_LEFT_JUSTIFY) == 0u) {
+
162 if (FieldWidth != 0u) {
+
163 if (((FormatFlags & FORMAT_FLAG_PAD_ZERO) == FORMAT_FLAG_PAD_ZERO) && (NumDigits == 0u)) {
+
164 c = '0';
+
165 } else {
+
166 c = ' ';
+
167 }
+
168 while ((FieldWidth != 0u) && (Width < FieldWidth)) {
+
169 FieldWidth--;
+
170 _StoreChar(pBufferDesc, c);
+
171 if (pBufferDesc->ReturnValue < 0) {
+
172 break;
+
173 }
+
174 }
+
175 }
+
176 }
+
177 if (pBufferDesc->ReturnValue >= 0) {
+
178 //
+
179 // Compute Digit.
+
180 // Loop until Digit has the value of the highest digit required.
+
181 // Example: If the output is 345 (Base 10), loop 2 times until Digit is 100.
+
182 //
+
183 while (1) {
+
184 if (NumDigits > 1u) { // User specified a min number of digits to print? => Make sure we loop at least that often, before checking anything else (> 1 check avoids problems with NumDigits being signed / unsigned)
+
185 NumDigits--;
+
186 } else {
+
187 Div = v / Digit;
+
188 if (Div < Base) { // Is our divider big enough to extract the highest digit from value? => Done
+
189 break;
+
190 }
+
191 }
+
192 Digit *= Base;
+
193 }
+
194 //
+
195 // Output digits
+
196 //
+
197 do {
+
198 Div = v / Digit;
+
199 v -= Div * Digit;
+
200 _StoreChar(pBufferDesc, _aV2C[Div]);
+
201 if (pBufferDesc->ReturnValue < 0) {
+
202 break;
+
203 }
+
204 Digit /= Base;
+
205 } while (Digit);
+
206 //
+
207 // Print trailing spaces if necessary
+
208 //
+
209 if ((FormatFlags & FORMAT_FLAG_LEFT_JUSTIFY) == FORMAT_FLAG_LEFT_JUSTIFY) {
+
210 if (FieldWidth != 0u) {
+
211 while ((FieldWidth != 0u) && (Width < FieldWidth)) {
+
212 FieldWidth--;
+
213 _StoreChar(pBufferDesc, ' ');
+
214 if (pBufferDesc->ReturnValue < 0) {
+
215 break;
+
216 }
+
217 }
+
218 }
+
219 }
+
220 }
+
221}
+
222
+
223/*********************************************************************
+
224*
+
225* _PrintInt
+
226*/
+
227static void _PrintInt(SEGGER_RTT_PRINTF_DESC * pBufferDesc, int v, unsigned Base, unsigned NumDigits, unsigned FieldWidth, unsigned FormatFlags) {
+
228 unsigned Width;
+
229 int Number;
+
230
+
231 Number = (v < 0) ? -v : v;
+
232
+
233 //
+
234 // Get actual field width
+
235 //
+
236 Width = 1u;
+
237 while (Number >= (int)Base) {
+
238 Number = (Number / (int)Base);
+
239 Width++;
+
240 }
+
241 if (NumDigits > Width) {
+
242 Width = NumDigits;
+
243 }
+
244 if ((FieldWidth > 0u) && ((v < 0) || ((FormatFlags & FORMAT_FLAG_PRINT_SIGN) == FORMAT_FLAG_PRINT_SIGN))) {
+
245 FieldWidth--;
+
246 }
+
247
+
248 //
+
249 // Print leading spaces if necessary
+
250 //
+
251 if ((((FormatFlags & FORMAT_FLAG_PAD_ZERO) == 0u) || (NumDigits != 0u)) && ((FormatFlags & FORMAT_FLAG_LEFT_JUSTIFY) == 0u)) {
+
252 if (FieldWidth != 0u) {
+
253 while ((FieldWidth != 0u) && (Width < FieldWidth)) {
+
254 FieldWidth--;
+
255 _StoreChar(pBufferDesc, ' ');
+
256 if (pBufferDesc->ReturnValue < 0) {
+
257 break;
+
258 }
+
259 }
+
260 }
+
261 }
+
262 //
+
263 // Print sign if necessary
+
264 //
+
265 if (pBufferDesc->ReturnValue >= 0) {
+
266 if (v < 0) {
+
267 v = -v;
+
268 _StoreChar(pBufferDesc, '-');
+
269 } else if ((FormatFlags & FORMAT_FLAG_PRINT_SIGN) == FORMAT_FLAG_PRINT_SIGN) {
+
270 _StoreChar(pBufferDesc, '+');
+
271 } else {
+
272
+
273 }
+
274 if (pBufferDesc->ReturnValue >= 0) {
+
275 //
+
276 // Print leading zeros if necessary
+
277 //
+
278 if (((FormatFlags & FORMAT_FLAG_PAD_ZERO) == FORMAT_FLAG_PAD_ZERO) && ((FormatFlags & FORMAT_FLAG_LEFT_JUSTIFY) == 0u) && (NumDigits == 0u)) {
+
279 if (FieldWidth != 0u) {
+
280 while ((FieldWidth != 0u) && (Width < FieldWidth)) {
+
281 FieldWidth--;
+
282 _StoreChar(pBufferDesc, '0');
+
283 if (pBufferDesc->ReturnValue < 0) {
+
284 break;
+
285 }
+
286 }
+
287 }
+
288 }
+
289 if (pBufferDesc->ReturnValue >= 0) {
+
290 //
+
291 // Print number without sign
+
292 //
+
293 _PrintUnsigned(pBufferDesc, (unsigned)v, Base, NumDigits, FieldWidth, FormatFlags);
+
294 }
+
295 }
+
296 }
+
297}
+
298
+
299/*********************************************************************
+
300*
+
301* Public code
+
302*
+
303**********************************************************************
+
304*/
+
305/*********************************************************************
+
306*
+
307* SEGGER_RTT_vprintf
+
308*
+
309* Function description
+
310* Stores a formatted string in SEGGER RTT control block.
+
311* This data is read by the host.
+
312*
+
313* Parameters
+
314* BufferIndex Index of "Up"-buffer to be used. (e.g. 0 for "Terminal")
+
315* sFormat Pointer to format string
+
316* pParamList Pointer to the list of arguments for the format string
+
317*
+
318* Return values
+
319* >= 0: Number of bytes which have been stored in the "Up"-buffer.
+
320* < 0: Error
+
321*/
+
322int SEGGER_RTT_vprintf(unsigned BufferIndex, const char * sFormat, va_list * pParamList) {
+
323 char c;
+
324 SEGGER_RTT_PRINTF_DESC BufferDesc;
+
325 int v;
+
326 unsigned NumDigits;
+
327 unsigned FormatFlags;
+
328 unsigned FieldWidth;
+
329 char acBuffer[SEGGER_RTT_PRINTF_BUFFER_SIZE];
+
330
+
331 BufferDesc.pBuffer = acBuffer;
+
332 BufferDesc.BufferSize = SEGGER_RTT_PRINTF_BUFFER_SIZE;
+
333 BufferDesc.Cnt = 0u;
+
334 BufferDesc.RTTBufferIndex = BufferIndex;
+
335 BufferDesc.ReturnValue = 0;
+
336
+
337 do {
+
338 c = *sFormat;
+
339 sFormat++;
+
340 if (c == 0u) {
+
341 break;
+
342 }
+
343 if (c == '%') {
+
344 //
+
345 // Filter out flags
+
346 //
+
347 FormatFlags = 0u;
+
348 v = 1;
+
349 do {
+
350 c = *sFormat;
+
351 switch (c) {
+
352 case '-': FormatFlags |= FORMAT_FLAG_LEFT_JUSTIFY; sFormat++; break;
+
353 case '0': FormatFlags |= FORMAT_FLAG_PAD_ZERO; sFormat++; break;
+
354 case '+': FormatFlags |= FORMAT_FLAG_PRINT_SIGN; sFormat++; break;
+
355 case '#': FormatFlags |= FORMAT_FLAG_ALTERNATE; sFormat++; break;
+
356 default: v = 0; break;
+
357 }
+
358 } while (v);
+
359 //
+
360 // filter out field with
+
361 //
+
362 FieldWidth = 0u;
+
363 do {
+
364 c = *sFormat;
+
365 if ((c < '0') || (c > '9')) {
+
366 break;
+
367 }
+
368 sFormat++;
+
369 FieldWidth = (FieldWidth * 10u) + ((unsigned)c - '0');
+
370 } while (1);
+
371
+
372 //
+
373 // Filter out precision (number of digits to display)
+
374 //
+
375 NumDigits = 0u;
+
376 c = *sFormat;
+
377 if (c == '.') {
+
378 sFormat++;
+
379 do {
+
380 c = *sFormat;
+
381 if ((c < '0') || (c > '9')) {
+
382 break;
+
383 }
+
384 sFormat++;
+
385 NumDigits = NumDigits * 10u + ((unsigned)c - '0');
+
386 } while (1);
+
387 }
+
388 //
+
389 // Filter out length modifier
+
390 //
+
391 c = *sFormat;
+
392 do {
+
393 if ((c == 'l') || (c == 'h')) {
+
394 sFormat++;
+
395 c = *sFormat;
+
396 } else {
+
397 break;
+
398 }
+
399 } while (1);
+
400 //
+
401 // Handle specifiers
+
402 //
+
403 switch (c) {
+
404 case 'c': {
+
405 char c0;
+
406 v = va_arg(*pParamList, int);
+
407 c0 = (char)v;
+
408 _StoreChar(&BufferDesc, c0);
+
409 break;
+
410 }
+
411 case 'd':
+
412 v = va_arg(*pParamList, int);
+
413 _PrintInt(&BufferDesc, v, 10u, NumDigits, FieldWidth, FormatFlags);
+
414 break;
+
415 case 'u':
+
416 v = va_arg(*pParamList, int);
+
417 _PrintUnsigned(&BufferDesc, (unsigned)v, 10u, NumDigits, FieldWidth, FormatFlags);
+
418 break;
+
419 case 'x':
+
420 case 'X':
+
421 v = va_arg(*pParamList, int);
+
422 _PrintUnsigned(&BufferDesc, (unsigned)v, 16u, NumDigits, FieldWidth, FormatFlags);
+
423 break;
+
424 case 's':
+
425 {
+
426 const char * s = va_arg(*pParamList, const char *);
+
427 if (s == NULL) {
+
428 s = "(NULL)"; // Print (NULL) instead of crashing or breaking, as it is more informative to the user.
+
429 }
+
430 do {
+
431 c = *s;
+
432 s++;
+
433 if (c == '\0') {
+
434 break;
+
435 }
+
436 _StoreChar(&BufferDesc, c);
+
437 } while (BufferDesc.ReturnValue >= 0);
+
438 }
+
439 break;
+
440 case 'p':
+
441 v = va_arg(*pParamList, int);
+
442 _PrintUnsigned(&BufferDesc, (unsigned)v, 16u, 8u, 8u, 0u);
+
443 break;
+
444 case '%':
+
445 _StoreChar(&BufferDesc, '%');
+
446 break;
+
447 default:
+
448 break;
+
449 }
+
450 sFormat++;
+
451 } else {
+
452 _StoreChar(&BufferDesc, c);
+
453 }
+
454 } while (BufferDesc.ReturnValue >= 0);
+
455
+
456 if (BufferDesc.ReturnValue > 0) {
+
457 //
+
458 // Write remaining data, if any
+
459 //
+
460 if (BufferDesc.Cnt != 0u) {
+
461 SEGGER_RTT_Write(BufferIndex, acBuffer, BufferDesc.Cnt);
+
462 }
+
463 BufferDesc.ReturnValue += (int)BufferDesc.Cnt;
+
464 }
+
465 return BufferDesc.ReturnValue;
+
466}
+
467
+
468/*********************************************************************
+
469*
+
470* SEGGER_RTT_printf
+
471*
+
472* Function description
+
473* Stores a formatted string in SEGGER RTT control block.
+
474* This data is read by the host.
+
475*
+
476* Parameters
+
477* BufferIndex Index of "Up"-buffer to be used. (e.g. 0 for "Terminal")
+
478* sFormat Pointer to format string, followed by the arguments for conversion
+
479*
+
480* Return values
+
481* >= 0: Number of bytes which have been stored in the "Up"-buffer.
+
482* < 0: Error
+
483*
+
484* Notes
+
485* (1) Conversion specifications have following syntax:
+
486* %[flags][FieldWidth][.Precision]ConversionSpecifier
+
487* (2) Supported flags:
+
488* -: Left justify within the field width
+
489* +: Always print sign extension for signed conversions
+
490* 0: Pad with 0 instead of spaces. Ignored when using '-'-flag or precision
+
491* Supported conversion specifiers:
+
492* c: Print the argument as one char
+
493* d: Print the argument as a signed integer
+
494* u: Print the argument as an unsigned integer
+
495* x: Print the argument as an hexadecimal integer
+
496* s: Print the string pointed to by the argument
+
497* p: Print the argument as an 8-digit hexadecimal integer. (Argument shall be a pointer to void.)
+
498*/
+
499int SEGGER_RTT_printf(unsigned BufferIndex, const char * sFormat, ...) {
+
500 int r;
+
501 va_list ParamList;
+
502
+
503 va_start(ParamList, sFormat);
+
504 r = SEGGER_RTT_vprintf(BufferIndex, sFormat, &ParamList);
+
505 va_end(ParamList);
+
506 return r;
+
507}
+
508/*************************** End of file ****************************/
+ +
+
+
+ + + + diff --git a/Doc/html/annotated.html b/Doc/html/annotated.html index 180ffa8..c4e0c3d 100644 --- a/Doc/html/annotated.html +++ b/Doc/html/annotated.html @@ -106,18 +106,16 @@ $(function(){initNavTree('annotated.html','',''); });  CBenchTimeChannel_tСтруктура канала измерения  CBenchTimeStats_tСтруктура статистики измерений  CGenOptimizer_tСтруктура эволюционного оптимизатора - CGPIO_LEDTypeDefСтруктура светодиода - CGPIO_SwitchTypeDefСтруктура кнопки - CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault - CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash - CSPI_SettingsTypeDefСтруктура настроек SPI - CTIM_EncoderTypeDefСтруктура инициализации енкодера - CTIM_SettingsTypeDefСтруктура инициализации таймера - CUART_SettingsTypeDefСтруктура настроек UART - Cuint16_BitTypeDef - Cuint32_BitTypeDef - Cuint64_BitTypeDef - Cuint8_BitTypeDef + CHF_StackFrame_tКонтекст стек-фрейма процессора при HardFault + CRTT_FlashHeader_tСтруктура RTT, которая будет положена в Flash + CSEGGER_RTT_BUFFER_DOWN + CSEGGER_RTT_BUFFER_UP + CSEGGER_RTT_CB + CSEGGER_RTT_PRINTF_DESC + Cuint16_BitTypeDef + Cuint32_BitTypeDef + Cuint64_BitTypeDef + Cuint8_BitTypeDef diff --git a/Doc/html/annotated_dup.js b/Doc/html/annotated_dup.js index f3fc3cd..0ae31f8 100644 --- a/Doc/html/annotated_dup.js +++ b/Doc/html/annotated_dup.js @@ -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 ], diff --git a/Doc/html/bench__time_8h.html b/Doc/html/bench__time_8h.html index eef2024..db834ca 100644 --- a/Doc/html/bench__time_8h.html +++ b/Doc/html/bench__time_8h.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h File Reference +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h File Reference @@ -109,9 +109,9 @@ $(function(){initNavTree('bench__time_8h.html','',''); });
diff --git a/Doc/html/globals_func.html b/Doc/html/globals_func.html index 516e274..b04a565 100644 --- a/Doc/html/globals_func.html +++ b/Doc/html/globals_func.html @@ -97,9 +97,7 @@ $(function(){initNavTree('globals_func.html','',''); });
-
Here is a list of all documented functions with links to the documentation:
- -

- b -

diff --git a/Doc/html/group___b_e_n_c_h___t_i_m_e.html b/Doc/html/group___b_e_n_c_h___t_i_m_e.html index 74a3d1e..8a616a4 100644 --- a/Doc/html/group___b_e_n_c_h___t_i_m_e.html +++ b/Doc/html/group___b_e_n_c_h___t_i_m_e.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___b_e_n_c_h___t_i_m_e.html','',''); });
-
Time measurement
+
Time measurement
@@ -109,8 +109,8 @@ $(function(){initNavTree('group___b_e_n_c_h___t_i_m_e.html','',''); }); @@ -202,8 +202,8 @@ Variables
uint32_t avg_time = BenchTime_GetAverage(0);
uint32_t count = BenchTime_GetCount(0);
Заголовочный файл для измерения времени между событиями
-
static void BenchTime_Init(void)
Инициализация системы измерения времени
Definition bench_time.h:111
- +
static void BenchTime_Init(void)
Инициализация системы измерения времени
Definition bench_time.h:110
+

Function Documentation

◆ BenchTime_Init()

@@ -230,7 +230,7 @@ Variables

Инициализация системы измерения времени

-

Definition at line 111 of file bench_time.h.

+

Definition at line 110 of file bench_time.h.

@@ -277,7 +277,7 @@ Variables
Returns
1 - успех, 0 - ошибка
-

Definition at line 131 of file bench_time.h.

+

Definition at line 130 of file bench_time.h.

@@ -318,7 +318,7 @@ Variables
Returns
Измеренное время в тиках, 0 - в случае ошибки
-

Definition at line 147 of file bench_time.h.

+

Definition at line 146 of file bench_time.h.

@@ -347,7 +347,7 @@ Variables

Получение минимального времени измерения

-

Definition at line 189 of file bench_time.h.

+

Definition at line 188 of file bench_time.h.

@@ -376,7 +376,7 @@ Variables

Получение максимального времени измерения

-

Definition at line 197 of file bench_time.h.

+

Definition at line 196 of file bench_time.h.

@@ -405,7 +405,7 @@ Variables

Получение среднего времени измерения

-

Definition at line 205 of file bench_time.h.

+

Definition at line 204 of file bench_time.h.

@@ -434,7 +434,7 @@ Variables

Получение количества измерений

-

Definition at line 215 of file bench_time.h.

+

Definition at line 214 of file bench_time.h.

@@ -463,7 +463,7 @@ Variables

Получение последнего измеренного времени

-

Definition at line 223 of file bench_time.h.

+

Definition at line 222 of file bench_time.h.

@@ -492,7 +492,7 @@ Variables

Сброс статистики для канала

-

Definition at line 231 of file bench_time.h.

+

Definition at line 230 of file bench_time.h.

@@ -519,7 +519,7 @@ Variables

Внутренний экземпляр

-

Definition at line 106 of file bench_time.h.

+

Definition at line 105 of file bench_time.h.

diff --git a/Doc/html/group___b_e_n_c_h___t_i_m_e.js b/Doc/html/group___b_e_n_c_h___t_i_m_e.js index b4ce582..4887185 100644 --- a/Doc/html/group___b_e_n_c_h___t_i_m_e.js +++ b/Doc/html/group___b_e_n_c_h___t_i_m_e.js @@ -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 ], diff --git a/Doc/html/group___b_e_n_c_h___t_i_m_e.map b/Doc/html/group___b_e_n_c_h___t_i_m_e.map index 29fd6e1..feafbf7 100644 --- a/Doc/html/group___b_e_n_c_h___t_i_m_e.map +++ b/Doc/html/group___b_e_n_c_h___t_i_m_e.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___b_e_n_c_h___t_i_m_e.md5 b/Doc/html/group___b_e_n_c_h___t_i_m_e.md5 index a1ee85e..a4cef7c 100644 --- a/Doc/html/group___b_e_n_c_h___t_i_m_e.md5 +++ b/Doc/html/group___b_e_n_c_h___t_i_m_e.md5 @@ -1 +1 @@ -15b595630eeca30c57a018017bc540ba \ No newline at end of file +6705808550d728844cfae44f809a322b \ No newline at end of file diff --git a/Doc/html/group___b_e_n_c_h___t_i_m_e.png b/Doc/html/group___b_e_n_c_h___t_i_m_e.png index bca67f2..9b3f8b4 100644 Binary files a/Doc/html/group___b_e_n_c_h___t_i_m_e.png and b/Doc/html/group___b_e_n_c_h___t_i_m_e.png differ diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html index 91e6dff..544eceb 100644 --- a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html','','
-
Bit access defines
+
Bit access defines
@@ -110,7 +110,7 @@ $(function(){initNavTree('group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html','','
- +
diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map index b06dfee..1e8476e 100644 --- a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - + diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 index d0764fb..96b7e88 100644 --- a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -56d577ae2ce4b45bacd111b61cb7554f \ No newline at end of file +b15e6059b024c1bd57db4f03c04931dd \ No newline at end of file diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html index 5591e12..49b5d8e 100644 --- a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___d_e_l_a_y_s___d_e_f_i_n_e_s.html','',''); });
-
Delays defines
+
Delays defines
@@ -110,7 +110,7 @@ $(function(){initNavTree('group___d_e_l_a_y_s___d_e_f_i_n_e_s.html','',''); });
- +
@@ -159,7 +159,7 @@ Macros
Note
Использует задержку через local_time или osDelay в зависимости от FREERTOS_DELAY.
-

Definition at line 80 of file mylibs_defs.h.

+

Definition at line 95 of file mylibs_defs.h.

@@ -190,7 +190,7 @@ Macros

После вызова этого макроса переменная pvar содержит текущее количество миллисекунд с момента запуска системы (local_time).

Используется для реализации неблокирующих задержек.

-

Definition at line 98 of file mylibs_defs.h.

+

Definition at line 113 of file mylibs_defs.h.

@@ -232,9 +232,9 @@ Macros

Возвращает true, пока время задержки не истекло. Используется в проверках, когда нужно действовать, пока задержка выполняется. Пример:

while(msDelayWhileActive(1000, &tick)) {
// выполняем другие задачи, задержка не блокирует поток
}
-
#define msDelayWhileActive(_ms_, _pvar_)
Проверяет, активна ли задержка.
+
#define msDelayWhileActive(_ms_, _pvar_)
Проверяет, активна ли задержка.
-

Definition at line 115 of file mylibs_defs.h.

+

Definition at line 130 of file mylibs_defs.h.

@@ -276,9 +276,9 @@ Macros

Возвращает true, когда задержка уже завершена. Используется в проверках, когда нужно выполнить действие только после окончания задержки. Пример:

if(msDelayWaitDone(1000, &tick)) {
// выполняем действие после завершения задержки
}
-
#define msDelayWaitDone(_ms_, _pvar_)
Проверяет, завершилась ли задержка.
+
#define msDelayWaitDone(_ms_, _pvar_)
Проверяет, завершилась ли задержка.
-

Definition at line 132 of file mylibs_defs.h.

+

Definition at line 147 of file mylibs_defs.h.

diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map index 8bd8a8e..ce5893a 100644 --- a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - + diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 index 286061b..eba3690 100644 --- a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -c52cb47284eaa7377e976a0f04f0002e \ No newline at end of file +9bb1fbf15e0d245a5219c269dfcf886b \ No newline at end of file diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html index 02199b4..e3bc252 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html @@ -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
-
Error Handler defines
+
Error Handler defines
@@ -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
- +
@@ -155,7 +155,7 @@ void 
  • Сконфигурировать mylibs_config.h:
  • -
  • Подключить mylibs_include.h туда, где необходим доступ к библиотекам.
  • diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.js b/Doc/html/group___m_y_l_i_b_s___a_l_l.js index 54a84ed..6cfffba 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.js +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.js @@ -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" ] ]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.map b/Doc/html/group___m_y_l_i_b_s___a_l_l.map index 3343382..718cd58 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.map +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.map @@ -1,6 +1,6 @@ - - + + diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 b/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 index 4e0e91b..28b87e4 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.md5 @@ -1 +1 @@ -52c11e57bdabafd5d7af3828f403f995 \ No newline at end of file +13c33a8645a936a94af7b6b5cac2a05a \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.png b/Doc/html/group___m_y_l_i_b_s___a_l_l.png index bbe49fc..f2fe317 100644 Binary files a/Doc/html/group___m_y_l_i_b_s___a_l_l.png and b/Doc/html/group___m_y_l_i_b_s___a_l_l.png differ diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html new file mode 100644 index 0000000..3f565ee --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html @@ -0,0 +1,151 @@ + + + + + + + +MyLibs: Debug Tools + + + + + + + + + + + + + + + + + +
    +
    +
    Error_Handler (vo

    Error_Handler который будет вызыватся в библиотеке

    -

    Definition at line 31 of file mylibs_defs.h.

    +

    Definition at line 46 of file mylibs_defs.h.

    @@ -177,7 +177,7 @@ void 
    Error_Handler (vo

    Проверить один указатель на NULL.

    -

    Definition at line 38 of file mylibs_defs.h.

    +

    Definition at line 53 of file mylibs_defs.h.

    @@ -203,7 +203,7 @@ void 
    Error_Handler (vo

    Проверить два указателя на NULL.

    -

    Definition at line 41 of file mylibs_defs.h.

    +

    Definition at line 56 of file mylibs_defs.h.

    @@ -234,7 +234,7 @@ void 
    Error_Handler (vo

    Проверить три указателя на NULL.

    -

    Definition at line 44 of file mylibs_defs.h.

    +

    Definition at line 59 of file mylibs_defs.h.

    @@ -270,7 +270,7 @@ void 
    Error_Handler (vo

    Проверить четыре указателя на NULL.

    -

    Definition at line 47 of file mylibs_defs.h.

    +

    Definition at line 62 of file mylibs_defs.h.

    @@ -311,7 +311,7 @@ void 
    Error_Handler (vo

    Проверить пять указателей на NULL.

    -

    Definition at line 50 of file mylibs_defs.h.

    +

    Definition at line 65 of file mylibs_defs.h.

    diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map index bee5f9c..b4ecebf 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - + diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 index 2db04ea..b989b0c 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -d5db8daac36cb4cc1a3fac830c6bfd88 \ No newline at end of file +48759eae8e94aea68fae58ca8d91b5d1 \ No newline at end of file diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html index 77d711e..950fc52 100644 --- a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___g_e_n___o_p_t_i_m_i_z_e_r.html','',''); });
    -
    Genetic optimizer
    +
    Genetic optimizer
    @@ -109,8 +109,8 @@ $(function(){initNavTree('group___g_e_n___o_p_t_i_m_i_z_e_r.html','',''); }); @@ -186,12 +186,12 @@ Functions
    param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);
    param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
    Заголовочный файл для адаптивного подбора параметров
    -
    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)
    Инициализация эволюционного оптимизатора.
    -
    #define PARAM_SCALE(x, min_val, max_val)
    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    -
    #define PARAM_UNSCALE(val, min_val, max_val)
    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
    -
    static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    -
    Структура эволюционного оптимизатора
    - +
    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)
    Инициализация эволюционного оптимизатора.
    +
    #define PARAM_SCALE(x, min_val, max_val)
    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    +
    #define PARAM_UNSCALE(val, min_val, max_val)
    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
    +
    static int GenOptimizer_Step(GenOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    +
    Структура эволюционного оптимизатора
    +

    Macro Definition Documentation

    ◆ PARAM_SCALE

    @@ -220,7 +220,7 @@ Functions

    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)

    -

    Definition at line 73 of file gen_optimizer.h.

    +

    Definition at line 72 of file gen_optimizer.h.

    @@ -251,7 +251,7 @@ Functions

    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].

    -

    Definition at line 79 of file gen_optimizer.h.

    +

    Definition at line 78 of file gen_optimizer.h.

    @@ -269,7 +269,7 @@ Functions

    Минимальная мутация (в процентах от Loss)

    -

    Definition at line 89 of file gen_optimizer.h.

    +

    Definition at line 88 of file gen_optimizer.h.

    @@ -287,7 +287,7 @@ Functions

    Максимальная мутация (в процентах от Loss)

    -

    Definition at line 92 of file gen_optimizer.h.

    +

    Definition at line 91 of file gen_optimizer.h.

    @@ -305,7 +305,7 @@ Functions

    Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)

    -

    Definition at line 95 of file gen_optimizer.h.

    +

    Definition at line 94 of file gen_optimizer.h.

    @@ -371,7 +371,7 @@ Functions
    Returns
    0 — если окей, -1 — если ошибка
    -

    Definition at line 155 of file gen_optimizer.h.

    +

    Definition at line 154 of file gen_optimizer.h.

    @@ -420,7 +420,7 @@ Functions

    Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n_cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.

    На выходе params содержит параметры следующего кандидата для измерений.

    Note
    Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени
    -

    Definition at line 225 of file gen_optimizer.h.

    +

    Definition at line 224 of file gen_optimizer.h.

    diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js index f13bdd9..42d4587 100644 --- a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.js @@ -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 ], diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.map b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.map index 5430a1c..7be6afa 100644 --- a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.map +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 index 63165ab..4f41ea9 100644 --- a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 +++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 @@ -1 +1 @@ -ec124a446898cfdeeba090736e9d2802 \ No newline at end of file +117f38e130c123102c33539947be2ce0 \ No newline at end of file diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png index 835cdf4..594f54a 100644 Binary files a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png and b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png differ diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.html b/Doc/html/group___m_y_l_i_b_s___a_l_l.html index 2edb3f9..117db7c 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.html +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.html @@ -111,8 +111,8 @@ $(function(){initNavTree('group___m_y_l_i_b_s___a_l_l.html','',''); }); - - + +
    @@ -120,10 +120,10 @@ $(function(){initNavTree('group___m_y_l_i_b_s___a_l_l.html','',''); }); Topics - - - - + + + +
     Configs
     Конфигурации для библиотек MyLibs.
     General Tools
     Общие макросы и typedef'ы, используемые по всему проекту
     Peripheral
     Модули для управления периферией
     General Tools
     Общие макросы и typedef'ы, используемые по всему проекту
     Debug Tools
     Утилиты для тестирования программы

    Detailed Description

    Все используемые MyLibs библиотеки

    @@ -131,10 +131,9 @@ Topics
    + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Debug Tools
    +
    +
    + +

    Утилиты для тестирования программы +More...

    +
    Collaboration diagram for Debug Tools:
    +
    +
    + + + + + + + + + + + +

    +Topics

     Time measurement
     Библиотека для измерения времени/тиков между событиями
     Genetic optimizer
     Библиотека для эволюционного подбора параметров
     Trace defines
     Дефайны для работы с трассировкой
     Trackers defines
     Дефайны для работы с трекерами
    +

    Detailed Description

    +

    Утилиты для тестирования программы

    +
    +
    + +
    + + + + diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js new file mode 100644 index 0000000..342b7d8 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.js @@ -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" ] +]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.map b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.map new file mode 100644 index 0000000..e6aea37 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.md5 b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.md5 new file mode 100644 index 0000000..cb91b74 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.md5 @@ -0,0 +1 @@ +e10d808e73658cbf4719fc412f2e0b91 \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.png b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.png new file mode 100644 index 0000000..7ecd95f Binary files /dev/null and b/Doc/html/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.png differ diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html index 1131a7c..17cc146 100644 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html +++ b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html @@ -102,34 +102,17 @@ $(function(){initNavTree('group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html','','')

    Модули для управления периферией -More...

    +

    Collaboration diagram for Peripheral:
    - - - - - - - - - - -

    -Topics

     GPIO Tools
     Функции и макросы для удобной работы с GPIO.
     SPI Tools
     Функции и макросы для удобной работы с SPI.
     TIM Tools
     Функции и макросы для удобной работы с TIM.
     UART Tools
     Функции и макросы для удобной работы с UART.
    -

    Detailed Description

    Модули для управления периферией

    diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map index 0321692..8380677 100644 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map +++ b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.map @@ -1,8 +1,4 @@ - - - - - - + + diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 index 2e10e09..a0f8bc3 100644 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 +++ b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 @@ -1 +1 @@ -1044283365b108883d0b7a448ff91792 \ No newline at end of file +01d6066aba098d16d320b5b455fdca4f \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png index f29ac65..07b5886 100644 Binary files a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png and b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.png differ diff --git a/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.html b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.html new file mode 100644 index 0000000..1f1825c --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.html @@ -0,0 +1,151 @@ + + + + + + + +MyLibs: General Tools + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    General Tools
    +
    +
    + +

    Общие макросы и typedef'ы, используемые по всему проекту +More...

    +
    Collaboration diagram for General Tools:
    +
    +
    + + + + + + + + + + + +

    +Topics

     Bit access defines
     Макросы и typedef'ы для работы с битами в unsigned типах.
     Error Handler defines
     Дефайны для обработки ошибок
     Delays defines
     Макросы и определения для работы с задержками в миллисекундах.
     Utils defines
     Общие вспомогательные макросы
    +

    Detailed Description

    +

    Общие макросы и typedef'ы, используемые по всему проекту

    +
    +
    + +
    + + + + diff --git a/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.js b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.js new file mode 100644 index 0000000..b515dc7 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.js @@ -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" ] +]; \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.map b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.map new file mode 100644 index 0000000..6174e14 --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.md5 b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.md5 new file mode 100644 index 0000000..a4fbe2d --- /dev/null +++ b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.md5 @@ -0,0 +1 @@ +78998b4170ecf65af8583f6c3acb669a \ No newline at end of file diff --git a/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.png b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.png new file mode 100644 index 0000000..40239c9 Binary files /dev/null and b/Doc/html/group___m_y_l_i_b_s___t_o_o_l_s.png differ diff --git a/Doc/html/group___t_r_a_c_e.html b/Doc/html/group___t_r_a_c_e.html index 6941ffc..b141d59 100644 --- a/Doc/html/group___t_r_a_c_e.html +++ b/Doc/html/group___t_r_a_c_e.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e.html','',''); });
    -
    Trace defines
    +
    Trace defines
    @@ -109,12 +109,12 @@ $(function(){initNavTree('group___t_r_a_c_e.html','',''); }); diff --git a/Doc/html/group___t_r_a_c_e.map b/Doc/html/group___t_r_a_c_e.map index cf0579e..30c66b6 100644 --- a/Doc/html/group___t_r_a_c_e.map +++ b/Doc/html/group___t_r_a_c_e.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/Doc/html/group___t_r_a_c_e.md5 b/Doc/html/group___t_r_a_c_e.md5 index 940cd9f..daf1d70 100644 --- a/Doc/html/group___t_r_a_c_e.md5 +++ b/Doc/html/group___t_r_a_c_e.md5 @@ -1 +1 @@ -231806d9df0ebec28cd371e85eb1e78c \ No newline at end of file +d398645521a6e65c12178c326d8a6a8c \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_e.png b/Doc/html/group___t_r_a_c_e.png index 3da1dc4..97192d2 100644 Binary files a/Doc/html/group___t_r_a_c_e.png and b/Doc/html/group___t_r_a_c_e.png differ diff --git a/Doc/html/group___t_r_a_c_e___g_p_i_o.html b/Doc/html/group___t_r_a_c_e___g_p_i_o.html index 647e041..9faf7d6 100644 --- a/Doc/html/group___t_r_a_c_e___g_p_i_o.html +++ b/Doc/html/group___t_r_a_c_e___g_p_i_o.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___g_p_i_o.html','',''); });
    -
    GPIO trace defines
    +
    GPIO trace defines
    @@ -162,7 +162,7 @@ Macros
  • GPIO_TRACE_ENABLE определён - устанавливает бит сброса через BSRR ((pin)<<16)
  • -

    Definition at line 155 of file trace.h.

    +

    Definition at line 154 of file trace.h.

    @@ -199,7 +199,7 @@ Macros
  • GPIO_TRACE_ENABLE определён - устанавливает бит установки через BSRR (pin)
  • -

    Definition at line 154 of file trace.h.

    +

    Definition at line 153 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html index 5dbf3f2..c047f19 100644 --- a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html +++ b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html','',''); })
    -
    Hardfault trace defines
    +
    Hardfault trace defines
    @@ -129,7 +129,7 @@ Functions
    - +

    Variables

    static HF_StackFrame_tstack_frame
    static uint32_t stack_dump [32]
    static uint32_t stack_dump [HF_STACK_DUMP_WORDS]
    static void * ret_adr [10] = {0}

    Detailed Description

    @@ -172,9 +172,9 @@ Variables
    RTT_EraseFlash(); // erase rtt flash after message readed
    }
    }
    -
    __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    Проверка и вывод последнего HardFault-трейса из Flash.
    Definition trace.h:499
    -
    __STATIC_FORCEINLINE void HF_HandleFault(void)
    Обработчик HardFault.
    Definition trace.h:540
    -
    __STATIC_FORCEINLINE int RTT_EraseFlash(void)
    Стирание сектора Flash с RTT-буфером
    Definition trace.h:388
    +
    __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    Проверка и вывод последнего HardFault-трейса из Flash.
    Definition trace.h:498
    +
    __STATIC_FORCEINLINE void HF_HandleFault(void)
    Обработчик HardFault.
    Definition trace.h:539
    +
    __STATIC_FORCEINLINE int RTT_EraseFlash(void)
    Стирание сектора Flash с RTT-буфером
    Definition trace.h:387

    Function Documentation

    ◆ HF_CheckRecovered()

    @@ -200,7 +200,7 @@ Variables
    Note
    Вызов рекомендуется при инициализации приложения для анализа предыдущего сбоя.
    -

    Definition at line 499 of file trace.h.

    +

    Definition at line 498 of file trace.h.

    @@ -230,7 +230,7 @@ Variables
    Note
    Функция защищена, так как вызывается в контексте сбоя — минимизирует использование вызовов HAL.
    -

    Definition at line 540 of file trace.h.

    +

    Definition at line 539 of file trace.h.

    @@ -255,12 +255,12 @@ Variables
    -

    Definition at line 523 of file trace.h.

    +

    Definition at line 522 of file trace.h.

    - -

    ◆ stack_dump

    + +

    ◆ stack_dump

    @@ -269,7 +269,7 @@ Variables - +
    uint32_t stack_dump[32]uint32_t stack_dump[HF_STACK_DUMP_WORDS]
    @@ -279,7 +279,7 @@ Variables
    -

    Definition at line 524 of file trace.h.

    +

    Definition at line 523 of file trace.h.

    @@ -303,7 +303,7 @@ Variables
    -

    Definition at line 525 of file trace.h.

    +

    Definition at line 524 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html index 20cd2c9..c30362d 100644 --- a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html +++ b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___r_t_t___f_l_a_s_h.html','',''); })
    -
    Flash RTT Buffer
    +
    Flash RTT Buffer
    @@ -170,7 +170,7 @@ Functions

    Подготовка Flash к записи

    Сбрасывает ошибки Flash и ожидает готовности перед записью

    -

    Definition at line 203 of file trace.h.

    +

    Definition at line 202 of file trace.h.

    @@ -208,7 +208,7 @@ Functions
  • Если конкретный (младший байт != 0) — запись выполняется только с этим тегом, иначе ошибка.
  • -

    Definition at line 227 of file trace.h.

    +

    Definition at line 226 of file trace.h.

    @@ -257,7 +257,7 @@ Functions
  • Если конкретный (младший байт != 0) — прочитывается именно эта запись.
  • -

    Definition at line 324 of file trace.h.

    +

    Definition at line 323 of file trace.h.

    @@ -278,7 +278,7 @@ Functions

    Стирание сектора Flash с RTT-буфером

    -

    Definition at line 388 of file trace.h.

    +

    Definition at line 387 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.js b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.js index d616ea9..0ad3823 100644 --- a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.js +++ b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.js @@ -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 ], diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html index 2aab441..07d20f0 100644 --- a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html +++ b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_e___s_e_r_i_a_l.html','',''); });
    -
    Serial trace defines
    +
    Serial trace defines
    @@ -126,7 +126,7 @@ Macros

    В зависимости от настроек определяется дефайн my_printf() и log_printf() для работы с трассировкой:

    -

    Definition at line 80 of file trace.h.

    +

    Definition at line 79 of file trace.h.

    @@ -193,11 +193,7 @@ Macros
    -Value:
    my_printf("\n[%lu] [%s] " fmt, \
    -
    (unsigned long)local_time(), TAG, ##__VA_ARGS__)
    -
    #define local_time()
    Локальное время
    -
    #define my_printf(...)
    Универсальный макрос для вывода трассировки
    Definition trace.h:80
    -
    +

    Макрос логирования с поддержкой уровней LOG_LEVEL.

    Parameters
    @@ -216,7 +212,7 @@ Macros -

    Definition at line 109 of file trace.h.

    +

    Definition at line 106 of file trace.h.

    diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.html b/Doc/html/group___t_r_a_c_k_e_r_s.html index 66db708..2478e0e 100644 --- a/Doc/html/group___t_r_a_c_k_e_r_s.html +++ b/Doc/html/group___t_r_a_c_k_e_r_s.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___t_r_a_c_k_e_r_s.html','',''); });
    -
    Trackers defines
    +
    Trackers defines
    @@ -109,8 +109,8 @@ $(function(){initNavTree('group___t_r_a_c_k_e_r_s.html','',''); });
    @@ -234,7 +234,7 @@ Macros

    Содержит счетчик для успешных событый (cnt_ok), счетчик для ошибок (cnt_err), счетчик для предупреждений (cnt_warn).

    Также есть возможность объявить пользовательские переменные в количестве <num_user_vars> штук.

    -

    Definition at line 70 of file trackers.h.

    +

    Definition at line 69 of file trackers.h.

    @@ -256,7 +256,7 @@ Macros

    Получить количетство пользовательских переменных

    -

    Definition at line 80 of file trackers.h.

    +

    Definition at line 79 of file trackers.h.

    @@ -279,11 +279,11 @@ Macros
    Value:
    ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
    -
    #define num_of_usercnts(_user_)
    Получить количетство пользовательских переменных
    Definition trackers.h:80
    +
    #define num_of_usercnts(_user_)
    Получить количетство пользовательских переменных
    Definition trackers.h:79

    Проверка существует ли указанная пользовательская переменная

    -

    Definition at line 82 of file trackers.h.

    +

    Definition at line 81 of file trackers.h.

    @@ -306,11 +306,11 @@ Macros
    Value:
    if(assert_usertracker(_cntstruct_, _uservarnumb_))
    -
    #define assert_usertracker(_cntstruct_, _uservarnumb_)
    Проверка существует ли указанная пользовательская переменная
    Definition trackers.h:82
    +
    #define assert_usertracker(_cntstruct_, _uservarnumb_)
    Проверка существует ли указанная пользовательская переменная
    Definition trackers.h:81

    Условие для проверки существует ли указанная пользовательская переменная

    -

    Definition at line 84 of file trackers.h.

    +

    Definition at line 83 of file trackers.h.

    @@ -336,7 +336,7 @@ Macros

    Тернарный оператор для проверки существует ли указанная пользовательская переменная

    -

    Definition at line 86 of file trackers.h.

    +

    Definition at line 85 of file trackers.h.

    @@ -358,7 +358,7 @@ Macros

    Считать счетчик успешных событий

    -

    Definition at line 90 of file trackers.h.

    +

    Definition at line 89 of file trackers.h.

    @@ -380,7 +380,7 @@ Macros

    Считать счетчик ошибок

    -

    Definition at line 92 of file trackers.h.

    +

    Definition at line 91 of file trackers.h.

    @@ -402,7 +402,7 @@ Macros

    Считать счетчик предупреждений

    -

    Definition at line 94 of file trackers.h.

    +

    Definition at line 93 of file trackers.h.

    @@ -425,7 +425,7 @@ Macros
    Value:
    (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
    -
    #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)
    Тернарный оператор для проверки существует ли указанная пользовательская переменная
    Definition trackers.h:86
    +
    #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)
    Тернарный оператор для проверки существует ли указанная пользовательская переменная
    Definition trackers.h:85

    Считать пользовательскую переменную

    Note
    Здесь нет проверки - существует ли пользовательская переменная! Есть возможность выйти за границы структуры!!! Чтобы этого избежать можно использовать дефайн #ref assert_usertracker()
      if(assert_usertracker(struct, 0)) {
    @@ -433,7 +433,7 @@ Macros
       }
     
    -

    Definition at line 106 of file trackers.h.

    +

    Definition at line 105 of file trackers.h.

    @@ -455,7 +455,7 @@ Macros

    Инкрементирование счетчика успешных событий

    -

    Definition at line 111 of file trackers.h.

    +

    Definition at line 110 of file trackers.h.

    @@ -477,7 +477,7 @@ Macros

    Инкрементирование счетчика ошибок

    -

    Definition at line 113 of file trackers.h.

    +

    Definition at line 112 of file trackers.h.

    @@ -499,7 +499,7 @@ Macros

    Инкрементирование счетчика предупреждений

    -

    Definition at line 115 of file trackers.h.

    +

    Definition at line 114 of file trackers.h.

    @@ -522,11 +522,11 @@ Macros
    Value:
    if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
    -
    #define if_assert_usertracker(_cntstruct_, _uservarnumb_)
    Условие для проверки существует ли указанная пользовательская переменная
    Definition trackers.h:84
    +
    #define if_assert_usertracker(_cntstruct_, _uservarnumb_)
    Условие для проверки существует ли указанная пользовательская переменная
    Definition trackers.h:83

    Инкрементирование пользовательской переменной

    -

    Definition at line 117 of file trackers.h.

    +

    Definition at line 116 of file trackers.h.

    @@ -557,7 +557,7 @@ Macros

    Запись числа в пользовательскую переменную

    -

    Definition at line 119 of file trackers.h.

    +

    Definition at line 118 of file trackers.h.

    @@ -579,7 +579,7 @@ Macros

    Очистка всей структуры

    -

    Definition at line 122 of file trackers.h.

    +

    Definition at line 121 of file trackers.h.

    @@ -601,7 +601,7 @@ Macros

    Очистка счетчика успешных событий

    -

    Definition at line 124 of file trackers.h.

    +

    Definition at line 123 of file trackers.h.

    @@ -623,7 +623,7 @@ Macros

    Очистка счетчика ошибок

    -

    Definition at line 126 of file trackers.h.

    +

    Definition at line 125 of file trackers.h.

    @@ -645,7 +645,7 @@ Macros

    Очистка счетчика предупреждений

    -

    Definition at line 128 of file trackers.h.

    +

    Definition at line 127 of file trackers.h.

    @@ -671,7 +671,7 @@ Macros

    Очистка пользовательской переменной

    -

    Definition at line 130 of file trackers.h.

    +

    Definition at line 129 of file trackers.h.

    @@ -693,7 +693,7 @@ Macros

    Очистка всех пользовательских переменных

    -

    Definition at line 132 of file trackers.h.

    +

    Definition at line 131 of file trackers.h.

    diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.map b/Doc/html/group___t_r_a_c_k_e_r_s.map index bf5f146..b9caafc 100644 --- a/Doc/html/group___t_r_a_c_k_e_r_s.map +++ b/Doc/html/group___t_r_a_c_k_e_r_s.map @@ -1,4 +1,4 @@ - - + + diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.md5 b/Doc/html/group___t_r_a_c_k_e_r_s.md5 index d924fcc..ad44552 100644 --- a/Doc/html/group___t_r_a_c_k_e_r_s.md5 +++ b/Doc/html/group___t_r_a_c_k_e_r_s.md5 @@ -1 +1 @@ -a7565b03babdeb6094e59ffacae9c523 \ No newline at end of file +5e8d7e9fe8d7afc9f2f5dd4a2692dbb0 \ No newline at end of file diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.png b/Doc/html/group___t_r_a_c_k_e_r_s.png index 64eb575..fa73363 100644 Binary files a/Doc/html/group___t_r_a_c_k_e_r_s.png and b/Doc/html/group___t_r_a_c_k_e_r_s.png differ diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html index bd87445..bcef1cb 100644 --- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html @@ -97,7 +97,7 @@ $(function(){initNavTree('group___u_t_i_l_s___d_e_f_i_n_e_s.html','',''); });
    -
    Utils defines
    +
    Utils defines
    @@ -109,7 +109,7 @@ $(function(){initNavTree('group___u_t_i_l_s___d_e_f_i_n_e_s.html','',''); }); @@ -153,7 +153,7 @@ Macros

    Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля.

    -

    Definition at line 154 of file mylibs_defs.h.

    +

    Definition at line 169 of file mylibs_defs.h.

    @@ -188,7 +188,7 @@ Macros
    Returns
    Результат деления, округленный вверх.

    Если результат деления без остатка: он возвращается как есть Если с остатком - округляется вверх

    -

    Definition at line 165 of file mylibs_defs.h.

    +

    Definition at line 180 of file mylibs_defs.h.

    @@ -218,7 +218,7 @@ Macros
    Returns
    Результат с поменяными местами старшим и младшим байтом.

    Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.

    -

    Definition at line 173 of file mylibs_defs.h.

    +

    Definition at line 188 of file mylibs_defs.h.

    @@ -248,7 +248,7 @@ Macros
    Returns
    Абсолютное значение числа x.

    Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.

    -

    Definition at line 181 of file mylibs_defs.h.

    +

    Definition at line 196 of file mylibs_defs.h.

    diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map index f130ade..f6979af 100644 --- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map +++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.map @@ -1,4 +1,4 @@ - + diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 index ead6af3..26c4ecb 100644 --- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 +++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -e4f09128a7c7fea7dcaa8c425861feae \ No newline at end of file +2cc6db69719569eeaf3a77181ade09ce \ No newline at end of file diff --git a/Doc/html/index.html b/Doc/html/index.html index bdab5f7..be97eba 100644 --- a/Doc/html/index.html +++ b/Doc/html/index.html @@ -5,7 +5,7 @@ -MyLibs: MyLibs +MyLibs: Обзор ExtendedLibs @@ -97,101 +97,83 @@ $(function(){initNavTree('index.html','',''); });
    -
    MyLibs
    +
    Обзор ExtendedLibs
    -

    -Обзор

    -

    MyLibs - это набор библиотек для удобной работы с STM32.

    -

    -Актуальная версия -

    -

    -Основные возможности

    -

    -Общие утилиты (General Tools)

    +

    +

    ExtendedLibs - это набор библиотек для удобной работы с STM32. Данный субмодуль подключается напрямую из Git и содержит набор вспомогательных библиотек для работы МК, в частности STM32 и SEGGER RTT.

    +

    +Основные возможности

    +

    +Общие утилиты MyLibs (General Tools)

    -

    -Трассировка Trace defines

    +

    +Отладка* (Debug Tools)

    -

    -Модуль GPIO GPIO Tools

    -
      -
    • Инициализация портов и тактирования (General tools)
    • -
    • Управление светодиодами (включение/выключение, моргание, плавное затухание) (LED tools)
    • -
    • Работа с кнопками (чтение состояния, фильтрация дребезга) (Switch tools)
    • -
    -

    -Модуль таймеров TIM Tools

    -
      -
    • Базовая инициализация таймеров (General tools)
    • -
    • Формирование задержек (блокирующие и неблокирующие) (Delay tools)
    • -
    • Работа с энкодерами (чтение положения, обработка кнопок) (Encoder tools)
    • -
    • Настройка ШИМ и Output Compare (PWM/OC Channels tools)
    • -
    -

    -Модуль UART UART Tools

    -
      -
    • Базовая инициализация UART и его пинов одной функцией (UART_Base_Init)
    • -
    -

    -Модуль SPI SPI Tools

    -
      -
    • Базовая инициализация SPI и пинов одной функцией (SPI_Base_Init)
    • -
    -

    -Структура проекта

    -
    ProjectRoot/
    +

    *Модули отладки независимы от MyLibs и могут быть использованы отдельно

    +

    +Структура библиотеки

    +

    *Note: Файлы начинающиеся с __ и которых нет в этом дереве являются **внутренними/непротестированными/недокументированными***

    ProjectRoot/
    ├── MyLibs/ # Общие библиотеки, независимые от платформы (или почти)
    │ ├── inc/
    -
    │ │ ├── mylibs_include.h # Главный include файл
    -
    │ │ ├── mylibs_config.h # Конфигурация библиотек
    +
    │ │ ├── __mylibs_include.h # Главный include файл
    +
    │ │ ├── __mylibs_config.h # Конфигурация библиотек
    │ │ ├── mylibs_defs.h # Общие определения и макросы
    │ │ ├── bit_access.h # Битовый доступ к регистрам
    -
    │ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
    +
    │ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
    │ │ ├── trackers.h # Трекеры для отладки
    │ │ └── trace.h # Трассировка и логирование
    │ └── src/
    -
    ├──RTT # Библиотека RTT
    -
    │ ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT
    -
    │ ├── SEGGER_RTT.c # Основной модуль RTT
    -
    │ ├── SEGGER_RTT.h # Основной заголовок RTT
    -
    │ ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M
    -
    │ └── SEGGER_RTT_printf.c # Реализация printf() через RTT
    -
    -
    └── STM32_General # Работа с периферией STM32
    -
    ├── inc/
    -
    │ ├── general_gpio.h # Работа с GPIO
    -
    │ ├── general_spi.h # Работа с SPI
    -
    │ ├── general_tim.h # Работа с таймерами
    -
    │ └── general_uart.h # Работа с UART
    -
    └── src/
    -
    ├── general_gpio.c # Реализация GPIO
    -
    ├── general_spi.c # Реализация SPI
    -
    ├── general_tim.c # Реализация TIM
    -
    └── general_uart.c # Реализация UART
    -

    -Использование

    -

    Инструкция по подключению:

    +
    └──RTT # Библиотека RTT
    +
    ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT
    +
    ├── SEGGER_RTT.c # Основной модуль RTT
    +
    ├── SEGGER_RTT.h # Основной заголовок RTT
    +
    ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M
    +
    └── SEGGER_RTT_printf.c # Реализация printf() через RTT
    +

    +Инструкция по подключению

      -
    1. Настройте конфигурацию Configs в mylibs_config.h
    2. -
    3. Подключите главный заголовочный файл:
      #include "mylibs_include.h"
      -
      Заголочный файл для всех библиотек
      -
    4. -
    5. Используйте нужные модули в своем коде. Примеры использования приведены в соответствующей теме
    6. +
    7. Склонируйте субмодуль в ваш проект:
    -
    +
    git submodule add https://git.arktika.cyou/Razvalyaev/STM32_ExtendedLibs path/to/ExtendedLibs
    +
    git submodule update --init --recursive
    +
      +
    1. Скопируйте файлы конфигурации и главный include в отдельную папку в вашем проекте (вне субмодуля) и удалите __:
    2. +
    +
    ProjectRoot/
    +
    ├── Configs/
    +
    │ ├── mylibs_include.h
    +
    │ └── mylibs_config.h
    +
    │ └── SEGGER_RTT_Conf.h
    +
      +
    1. Настройте конфигурацию под ваш проект:
    2. +
    + +
      +
    1. Подключайте библиотеки в вашем коде через главный include файл:
    2. +
    +
    #include "mylibs_include.h"
    +
    Заголочный файл для всех библиотек
    +
      +
    1. Обновление библиотеки:
    2. +
    +

    После обновления субмодуля из Git, исходные файлы библиотеки будут обновлены, но ваши конфиги останутся в целевой папке и не перезапишутся:

    +
    git submodule update --remote
    +
    diff --git a/Doc/html/index.js b/Doc/html/index.js new file mode 100644 index 0000000..573dfcf --- /dev/null +++ b/Doc/html/index.js @@ -0,0 +1,6 @@ +var index = +[ + [ "Основные возможности", "index.html#основные-возможности", null ], + [ "Структура библиотеки", "index.html#структура-библиотеки", null ], + [ "Инструкция по подключению", "index.html#инструкция-по-подключению", null ] +]; \ No newline at end of file diff --git a/Doc/html/mainpage_8h_source.html b/Doc/html/mainpage_8h_source.html index 4945489..5ef7a1a 100644 --- a/Doc/html/mainpage_8h_source.html +++ b/Doc/html/mainpage_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/mainpage.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/mainpage.h Source File @@ -97,10 +97,10 @@ $(function(){initNavTree('mainpage_8h_source.html','',''); });
    -
    E:/.WORK/STM32/STM32_ExtendedLibs/mainpage.h
    +
    E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/mainpage.h
    -
    1/**
    +
    1/*
    2@mainpage
    3
    4
    @@ -113,7 +113,7 @@ $(function(){initNavTree('mainpage_8h_source.html','',''); });
    11
    12@subsection features Основные возможности
    13
    -
    14@subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES)
    +
    14@subsubsection utils_module Общие утилиты (@ref MYLIBS_TOOLS)
    15- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES)
    16- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE)
    17- Эволюционный алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER)
    @@ -148,52 +148,58 @@ $(function(){initNavTree('mainpage_8h_source.html','',''); });
    46ProjectRoot/
    47├── MyLibs/ # Общие библиотеки, независимые от платформы (или почти)
    48│ ├── inc/
    -
    49│ │ ├── mylibs_include.h # Главный include файл
    -
    50│ │ ├── mylibs_config.h # Конфигурация библиотек
    +
    49│ │ ├── __mylibs_include.h # Главный include файл
    +
    50│ │ ├── __mylibs_config.h # Конфигурация библиотек
    51│ │ ├── mylibs_defs.h # Общие определения и макросы
    52│ │ ├── bit_access.h # Битовый доступ к регистрам
    -
    53│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
    +
    53│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
    54│ │ ├── trackers.h # Трекеры для отладки
    55│ │ └── trace.h # Трассировка и логирование
    56│ └── src/
    57
    -
    58├──RTT # Библиотека RTT
    -
    59│ ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT
    -
    60│ ├── SEGGER_RTT.c # Основной модуль RTT
    -
    61│ ├── SEGGER_RTT.h # Основной заголовок RTT
    -
    62│ ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M
    -
    63│ └── SEGGER_RTT_printf.c # Реализация printf() через RTT
    -
    64
    -
    65└── STM32_General # Работа с периферией STM32
    -
    66 ├── inc/
    -
    67 │ ├── general_gpio.h # Работа с GPIO
    -
    68 │ ├── general_spi.h # Работа с SPI
    -
    69 │ ├── general_tim.h # Работа с таймерами
    -
    70 │ └── general_uart.h # Работа с UART
    -
    71 └── src/
    -
    72 ├── general_gpio.c # Реализация GPIO
    -
    73 ├── general_spi.c # Реализация SPI
    -
    74 ├── general_tim.c # Реализация TIM
    -
    75 └── general_uart.c # Реализация UART
    -
    76@endcode
    -
    77
    -
    78
    +
    58└──RTT # Библиотека RTT
    +
    59 ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT
    +
    60 ├── SEGGER_RTT.c # Основной модуль RTT
    +
    61 ├── SEGGER_RTT.h # Основной заголовок RTT
    +
    62 ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M
    +
    63 └── SEGGER_RTT_printf.c # Реализация printf() через RTT
    +
    64@endcode
    +
    65
    +
    66#### Модуль GPIO @ref MY_LIBS_GPIO
    +
    67- Инициализация портов и тактирования (@ref MYLIBS_GPIO_GENERAL)
    +
    68- Управление светодиодами (включение/выключение, моргание, плавное затухание) (@ref MYLIBS_GPIO_LEDS)
    +
    69- Работа с кнопками (чтение состояния, фильтрация дребезга) (@ref MYLIBS_GPIO_SWITCH)
    +
    70
    +
    71#### Модуль таймеров @ref MY_LIBS_TIM
    +
    72- Базовая инициализация таймеров (@ref MYLIBS_TIM_GENERAL)
    +
    73- Формирование задержек (блокирующие и неблокирующие) (@ref MYLIBS_TIM_DELAY)
    +
    74- Работа с энкодерами (чтение положения, обработка кнопок) (@ref MYLIBS_TIM_ENCODER)
    +
    75- Настройка ШИМ и Output Compare (@ref MYLIBS_TIM_OC)
    +
    76
    +
    77#### Модуль UART @ref MY_LIBS_UART
    +
    78- Базовая инициализация UART и его пинов одной функцией (@ref UART_Base_Init)
    79
    -
    80
    -
    81@subsection usage_basic Использование
    +
    80@subsubsection spi_module Модуль SPI @ref MY_LIBS_SPI
    +
    81- Базовая инициализация SPI и пинов одной функцией (@ref SPI_Base_Init)
    82
    -
    83Инструкция по подключению:
    +
    83
    84
    -
    851. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h
    +
    85
    86
    -
    872. Подключите главный заголовочный файл:
    -
    88@code
    -
    89#include "mylibs_include.h"
    -
    90@endcode
    -
    91
    -
    923. Используйте нужные модули в своем коде. Примеры использования приведены в соответствующей теме
    -
    93
    -
    94*/
    +
    87@subsection usage_basic Использование
    +
    88
    +
    89Инструкция по подключению:
    +
    90
    +
    911. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h
    +
    92
    +
    932. Подключите главный заголовочный файл:
    +
    94@code
    +
    95#include "mylibs_include.h"
    +
    96@endcode
    +
    97
    +
    983. Используйте нужные модули в своем коде. Примеры использования приведены в соответствующей теме
    +
    99
    +
    100*/
    diff --git a/Doc/html/menudata.js b/Doc/html/menudata.js index c4eb5d4..cc6c5bc 100644 --- a/Doc/html/menudata.js +++ b/Doc/html/menudata.js @@ -32,9 +32,7 @@ var menudata={children:[ {text:"All",url:"functions.html",children:[ {text:"c",url:"functions.html#index_c"}, {text:"d",url:"functions.html#index_d"}, -{text:"e",url:"functions.html#index_e"}, {text:"g",url:"functions.html#index_g"}, -{text:"h",url:"functions.html#index_h"}, {text:"i",url:"functions.html#index_i"}, {text:"l",url:"functions.html#index_l"}, {text:"m",url:"functions.html#index_m"}, @@ -46,9 +44,7 @@ var menudata={children:[ {text:"Variables",url:"functions_vars.html",children:[ {text:"c",url:"functions_vars.html#index_c"}, {text:"d",url:"functions_vars.html#index_d"}, -{text:"e",url:"functions_vars.html#index_e"}, {text:"g",url:"functions_vars.html#index_g"}, -{text:"h",url:"functions_vars.html#index_h"}, {text:"i",url:"functions_vars.html#index_i"}, {text:"l",url:"functions_vars.html#index_l"}, {text:"m",url:"functions_vars.html#index_m"}, @@ -62,33 +58,24 @@ var menudata={children:[ {text:"File Members",url:"globals.html",children:[ {text:"All",url:"globals.html",children:[ {text:"a",url:"globals.html#index_a"}, -{text:"b",url:"globals_b.html#index_b"}, -{text:"c",url:"globals_c.html#index_c"}, -{text:"d",url:"globals_d.html#index_d"}, -{text:"e",url:"globals_e.html#index_e"}, -{text:"f",url:"globals_f.html#index_f"}, -{text:"g",url:"globals_g.html#index_g"}, -{text:"h",url:"globals_h.html#index_h"}, -{text:"i",url:"globals_i.html#index_i"}, -{text:"l",url:"globals_l.html#index_l"}, -{text:"m",url:"globals_m.html#index_m"}, -{text:"n",url:"globals_n.html#index_n"}, -{text:"p",url:"globals_p.html#index_p"}, -{text:"r",url:"globals_r.html#index_r"}, -{text:"s",url:"globals_s.html#index_s"}, -{text:"t",url:"globals_t.html#index_t"}, -{text:"u",url:"globals_u.html#index_u"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"b",url:"globals_func.html#index_b"}, -{text:"g",url:"globals_func.html#index_g"}, -{text:"h",url:"globals_func.html#index_h"}, -{text:"r",url:"globals_func.html#index_r"}, -{text:"s",url:"globals_func.html#index_s"}, -{text:"t",url:"globals_func.html#index_t"}, -{text:"u",url:"globals_func.html#index_u"}]}, +{text:"b",url:"globals.html#index_b"}, +{text:"c",url:"globals.html#index_c"}, +{text:"d",url:"globals.html#index_d"}, +{text:"e",url:"globals.html#index_e"}, +{text:"f",url:"globals.html#index_f"}, +{text:"g",url:"globals.html#index_g"}, +{text:"h",url:"globals.html#index_h"}, +{text:"i",url:"globals.html#index_i"}, +{text:"l",url:"globals.html#index_l"}, +{text:"m",url:"globals.html#index_m"}, +{text:"n",url:"globals.html#index_n"}, +{text:"p",url:"globals.html#index_p"}, +{text:"r",url:"globals.html#index_r"}, +{text:"s",url:"globals.html#index_s"}, +{text:"t",url:"globals.html#index_t"}, +{text:"u",url:"globals.html#index_u"}]}, +{text:"Functions",url:"globals_func.html"}, {text:"Variables",url:"globals_vars.html"}, -{text:"Enumerations",url:"globals_enum.html"}, -{text:"Enumerator",url:"globals_eval.html"}, {text:"Macros",url:"globals_defs.html",children:[ {text:"a",url:"globals_defs.html#index_a"}, {text:"b",url:"globals_defs.html#index_b"}, diff --git a/Doc/html/mylibs__config_8h.html b/Doc/html/mylibs__config_8h.html index 19f82bf..a6c4675 100644 --- a/Doc/html/mylibs__config_8h.html +++ b/Doc/html/mylibs__config_8h.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/mylibs_config.h File Reference +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_config.h File Reference @@ -108,63 +108,38 @@ $(function(){initNavTree('mylibs__config_8h.html','',''); });
    This graph shows which files directly or indirectly include this file:
    diff --git a/Doc/html/mylibs__config_8h__dep__incl.map b/Doc/html/mylibs__config_8h__dep__incl.map index 8f1d357..1542c18 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.map +++ b/Doc/html/mylibs__config_8h__dep__incl.map @@ -1,46 +1,21 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__config_8h__dep__incl.md5 b/Doc/html/mylibs__config_8h__dep__incl.md5 index 8005ab1..6c166ca 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.md5 +++ b/Doc/html/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -1c7c706656d0b5264849d45ac47d4507 \ No newline at end of file +9f6a6341f51dca56a013198eaece7a80 \ No newline at end of file diff --git a/Doc/html/mylibs__config_8h__dep__incl.png b/Doc/html/mylibs__config_8h__dep__incl.png index a374176..cda23b3 100644 Binary files a/Doc/html/mylibs__config_8h__dep__incl.png and b/Doc/html/mylibs__config_8h__dep__incl.png differ diff --git a/Doc/html/mylibs__config_8h__incl.map b/Doc/html/mylibs__config_8h__incl.map index 12ec093..6ec7c40 100644 --- a/Doc/html/mylibs__config_8h__incl.map +++ b/Doc/html/mylibs__config_8h__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/mylibs__config_8h__incl.md5 b/Doc/html/mylibs__config_8h__incl.md5 index 64436a1..1f4d753 100644 --- a/Doc/html/mylibs__config_8h__incl.md5 +++ b/Doc/html/mylibs__config_8h__incl.md5 @@ -1 +1 @@ -3b483905491b70f9181b98bcf03c66f5 \ No newline at end of file +182ed3e6f3a3467bc43cf6c0e3bd6349 \ No newline at end of file diff --git a/Doc/html/mylibs__config_8h__incl.png b/Doc/html/mylibs__config_8h__incl.png index 725c7fb..ab00650 100644 Binary files a/Doc/html/mylibs__config_8h__incl.png and b/Doc/html/mylibs__config_8h__incl.png differ diff --git a/Doc/html/mylibs__config_8h_source.html b/Doc/html/mylibs__config_8h_source.html index 64d652b..00ce4e4 100644 --- a/Doc/html/mylibs__config_8h_source.html +++ b/Doc/html/mylibs__config_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/mylibs_config.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_config.h Source File diff --git a/Doc/html/mylibs__defs_8h.html b/Doc/html/mylibs__defs_8h.html index 5709d6b..702dd58 100644 --- a/Doc/html/mylibs__defs_8h.html +++ b/Doc/html/mylibs__defs_8h.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/mylibs_defs.h File Reference +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_defs.h File Reference @@ -108,63 +108,38 @@ $(function(){initNavTree('mylibs__defs_8h.html','',''); });
    This graph shows which files directly or indirectly include this file:
    diff --git a/Doc/html/mylibs__defs_8h__dep__incl.map b/Doc/html/mylibs__defs_8h__dep__incl.map index f952e29..bad0bfc 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.map +++ b/Doc/html/mylibs__defs_8h__dep__incl.map @@ -1,44 +1,19 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__defs_8h__dep__incl.md5 b/Doc/html/mylibs__defs_8h__dep__incl.md5 index 27e2e55..153e76d 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/html/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -9853b50743578d4b3267175adda5a3af \ No newline at end of file +92e1c89b3dbabc5f5dcd703628a3cd09 \ No newline at end of file diff --git a/Doc/html/mylibs__defs_8h__dep__incl.png b/Doc/html/mylibs__defs_8h__dep__incl.png index 02c276a..1998e01 100644 Binary files a/Doc/html/mylibs__defs_8h__dep__incl.png and b/Doc/html/mylibs__defs_8h__dep__incl.png differ diff --git a/Doc/html/mylibs__defs_8h__incl.map b/Doc/html/mylibs__defs_8h__incl.map index c155425..b054d95 100644 --- a/Doc/html/mylibs__defs_8h__incl.map +++ b/Doc/html/mylibs__defs_8h__incl.map @@ -1,7 +1,7 @@ - - - - - - + + + + + + diff --git a/Doc/html/mylibs__defs_8h__incl.md5 b/Doc/html/mylibs__defs_8h__incl.md5 index 9bb77a8..35c2a13 100644 --- a/Doc/html/mylibs__defs_8h__incl.md5 +++ b/Doc/html/mylibs__defs_8h__incl.md5 @@ -1 +1 @@ -3a51314a907fe511867519c1d9e934bd \ No newline at end of file +22a4095654c32e9721a5fd17008a93fa \ No newline at end of file diff --git a/Doc/html/mylibs__defs_8h__incl.png b/Doc/html/mylibs__defs_8h__incl.png index bf20d2d..a691649 100644 Binary files a/Doc/html/mylibs__defs_8h__incl.png and b/Doc/html/mylibs__defs_8h__incl.png differ diff --git a/Doc/html/mylibs__defs_8h_source.html b/Doc/html/mylibs__defs_8h_source.html index 570cc52..d99efaa 100644 --- a/Doc/html/mylibs__defs_8h_source.html +++ b/Doc/html/mylibs__defs_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/mylibs_defs.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_defs.h Source File @@ -105,207 +105,222 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
    3* @file mylibs_defs.h
    4* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
    5**************************************************************************
    -
    6* @defgroup MYLIBS_DEFINES General Tools
    +
    6* @defgroup MYLIBS_TOOLS General Tools
    7* @ingroup MYLIBS_ALL
    8* @brief Общие макросы и typedef'ы, используемые по всему проекту
    9*
    -
    10*************************************************************************/
    -
    11#ifndef __MYLIBS_DEFINES_H_
    -
    12#define __MYLIBS_DEFINES_H_
    -
    13
    -
    14#include "mylibs_config.h"
    -
    15
    -
    16/***************************************************************************
    -
    17******************************ERROR_HANDLER********************************/
    -
    18/**
    -
    19 * @addtogroup ERROR_HANDLER_DEFINES Error Handler defines
    -
    20 * @ingroup MYLIBS_DEFINES
    -
    21 * @brief Дефайны для обработки ошибок
    -
    22 * @{
    -
    23 */
    -
    24
    -
    25/* extern Error_Handler from main.h */
    -
    26extern void Error_Handler(void);
    -
    27
    -
    28/**
    -
    29 * @brief Error_Handler который будет вызыватся в библиотеке
    -
    30 */
    -
    31#define MyLibs_Error_Handler(params) Error_Handler(params)
    -
    32/* If error handler not defined - set void */
    -
    33#ifndef MyLibs_Error_Handler
    -
    34#define MyLibs_Error_Handler(...)
    -
    35#endif // MyLibs_Error_Handler
    -
    36
    -
    37/** @brief Проверить один указатель на NULL */
    -
    38#define check_null_ptr_1(p1) (p1 == NULL)
    -
    39
    -
    40/** @brief Проверить два указателя на NULL */
    -
    41#define check_null_ptr_2(p1, p2) ((p1 == NULL) || (p1 != NULL && p2 == NULL))
    +
    10* @defgroup MYLIBS_DEBUG_TOOLS Debug Tools
    +
    11* @ingroup MYLIBS_ALL
    +
    12* @brief Утилиты для тестирования программы
    +
    13*
    +
    14* @addtogroup BENCH_TIME
    +
    15* @ingroup MYLIBS_DEBUG_TOOLS
    +
    16*
    +
    17* @addtogroup GEN_OPTIMIZER
    +
    18* @ingroup MYLIBS_DEBUG_TOOLS
    +
    19*
    +
    20* @addtogroup TRACE
    +
    21* @ingroup MYLIBS_DEBUG_TOOLS
    +
    22*
    +
    23* @addtogroup TRACKERS
    +
    24* @ingroup MYLIBS_DEBUG_TOOLS
    +
    25*************************************************************************/
    +
    26#ifndef __MYLIBS_TOOLS_H_
    +
    27#define __MYLIBS_TOOLS_H_
    +
    28
    +
    29#include "mylibs_config.h"
    +
    30
    +
    31/***************************************************************************
    +
    32******************************ERROR_HANDLER********************************/
    +
    33/**
    +
    34 * @addtogroup ERROR_HANDLER_DEFINES Error Handler defines
    +
    35 * @ingroup MYLIBS_TOOLS
    +
    36 * @brief Дефайны для обработки ошибок
    +
    37 * @{
    +
    38 */
    +
    39
    +
    40/* extern Error_Handler from main.h */
    +
    41extern void Error_Handler(void);
    42
    -
    43/** @brief Проверить три указателя на NULL */
    -
    44#define check_null_ptr_3(p1, p2, p3) ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && p3 == NULL))))
    -
    45
    -
    46/** @brief Проверить четыре указателя на NULL */
    -
    47#define check_null_ptr_4(p1, p2, p3, p4) ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && p4 == NULL))))))
    -
    48
    -
    49/** @brief Проверить пять указателей на NULL */
    -
    50#define check_null_ptr_5(p1, p2, p3, p4, p5) ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && ((p4 == NULL) || (p4 != NULL && p5 == NULL))))))))
    +
    43/**
    +
    44 * @brief Error_Handler который будет вызыватся в библиотеке
    +
    45 */
    +
    46#define MyLibs_Error_Handler(params) Error_Handler(params)
    +
    47/* If error handler not defined - set void */
    +
    48#ifndef MyLibs_Error_Handler
    +
    49#define MyLibs_Error_Handler(...)
    +
    50#endif // MyLibs_Error_Handler
    51
    -
    52/** ERROR_HANDLER_DEFINES
    -
    53 * @}
    -
    54 */
    -
    55
    -
    56
    -
    57/***************************************************************************
    -
    58******************************DELAYS_DEFINES*******************************/
    -
    59/**
    -
    60 * @addtogroup DELAYS_DEFINES Delays defines
    -
    61 * @ingroup MYLIBS_DEFINES
    -
    62 * @brief Макросы и определения для работы с задержками в миллисекундах.
    -
    63 * @details
    -
    64 * Этот блок содержит макросы для реализации задержек с использованием HAL или FreeRTOS:
    -
    65 * - @ref msDelay — простая задержка заданной длительности;
    -
    66 * - @ref msDelayStart — сохранение текущего времени начала задержки;
    -
    67 * - @ref msDelayWhileActive — проверка, активна ли задержка;
    -
    68 * - @ref msDelayWaitDone — проверка, завершена ли задержка.
    -
    69 * Эти макросы удобны для реализации неблокирующих задержек.
    -
    70 * @{
    -
    71 */
    -
    72
    -
    73/**
    -
    74 * @def msDelay(_ms_)
    -
    75 * @brief Блокирующая задержка на указанное количество миллисекунд.
    -
    76 * @param _ms_ Время задержки в миллисекундах.
    -
    77 * @note Использует задержку через @ref local_time или osDelay в зависимости от @ref FREERTOS_DELAY.
    -
    78 */
    -
    79#ifdef FREERTOS_DELAY
    -
    80 #define msDelay(_ms_) osDelay(_ms_)
    -
    81#else
    -
    82 #define msDelay(_ms_) \
    -
    83 do { \
    -
    84 uint32_t _start_ = local_time(); \
    -
    85 while (local_time() - _start_ < (_ms_)) {} \
    -
    86 } while(0)
    -
    87#endif
    -
    88
    -
    89
    -
    90/**
    -
    91 * @brief Начать отсчет задержки.
    -
    92 * @param _pvar_ Указатель на переменную типа uint32_t для хранения времени старта.
    -
    93 * @details После вызова этого макроса переменная _pvar_ содержит текущее количество миллисекунд
    -
    94 * с момента запуска системы (@ref local_time).
    -
    95 *
    -
    96 * Используется для реализации неблокирующих задержек.
    -
    97 */
    -
    98#define msDelayStart(_pvar_) *(_pvar_) = local_time()
    -
    99
    -
    100/**
    -
    101 * @brief Проверяет, активна ли задержка.
    -
    102 * @param _ms_ Длительность задержки в миллисекундах.
    -
    103 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (@ref msDelayStart).
    -
    104 * @retval 1 Задержка еще активна.
    -
    105 * @retval 0 Задержка завершена.
    -
    106 * @details
    -
    107 * Возвращает true, пока время задержки не истекло. Используется в проверках,
    -
    108 * когда нужно **действовать, пока задержка выполняется**. Пример:
    -
    109 * @code
    -
    110 * while(msDelayWhileActive(1000, &tick)) {
    -
    111 * // выполняем другие задачи, задержка не блокирует поток
    -
    112 * }
    -
    113 * @endcode
    -
    114 */
    -
    115#define msDelayWhileActive(_ms_, _pvar_) (local_time() - *(_pvar_) < _ms_)
    -
    116
    -
    117/**
    -
    118 * @brief Проверяет, завершилась ли задержка.
    -
    119 * @param _ms_ Длительность задержки в миллисекундах.
    -
    120 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (msDelayStart).
    -
    121 * @retval 1 Задержка завершена.
    -
    122 * @retval 0 Задержка еще активна.
    -
    123 * @details
    -
    124 * Возвращает true, когда задержка уже завершена. Используется в проверках,
    -
    125 * когда нужно **выполнить действие только после окончания задержки**. Пример:
    -
    126 * @code
    -
    127 * if(msDelayWaitDone(1000, &tick)) {
    -
    128 * // выполняем действие после завершения задержки
    -
    129 * }
    -
    130 * @endcode
    -
    131 */
    -
    132#define msDelayWaitDone(_ms_, _pvar_) (local_time() - *(_pvar_) >= _ms_)
    -
    133
    -
    134/** DELAYS_DEFINES
    -
    135 * @}
    -
    136 */
    -
    137
    -
    138
    -
    139/***************************************************************************
    -
    140*******************************UTIL_DEFINES********************************/
    -
    141/**
    -
    142 * @addtogroup UTILS_DEFINES Utils defines
    -
    143 * @ingroup MYLIBS_DEFINES
    -
    144 * @brief Общие вспомогательные макросы
    -
    145 * @{
    -
    146 */
    -
    147
    -
    148/**
    -
    149 * @brief Обнуление структуры.
    -
    150 * @param _struct_ Структура, которую нужно обнулить.
    -
    151 * @details Макрос использует memset для обнуления всей памяти структуры.
    -
    152 * Используется для быстрой и безопасной инициализации переменных структур до нуля.
    -
    153 */
    -
    154#define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
    -
    155
    -
    156/**
    -
    157 * @brief Деление с округлением вверх
    -
    158 * @param _val_ Делимое.
    -
    159 * @param _div_ Делитель.
    -
    160 * @return Результат деления, округленный вверх.
    -
    161 * @details Если результат деления без остатка: он возвращается как есть
    -
    162 Если с остатком - округляется вверх
    -
    163 */
    -
    164//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
    -
    165#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
    -
    166
    -
    167/**
    -
    168 * @brief Swap between Little Endian and Big Endian
    -
    169 * @param v Исходное 16-битное значение.
    -
    170 * @return Результат с поменяными местами старшим и младшим байтом.
    -
    171 * @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
    -
    172 */
    -
    173#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
    -
    174
    -
    175/**
    -
    176 * @brief Абсолютное значение числа
    -
    177 * @param x Число.
    -
    178 * @return Абсолютное значение числа x.
    -
    179 * @details Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
    -
    180 */
    -
    181#define ABS(x) ( ((x) > 0)? (x) : -(x))
    -
    182
    -
    183/** UTILS_DEFINES
    -
    184 * @}
    -
    185 */
    -
    186
    -
    187
    -
    188
    -
    189/**
    -
    190 * @cond LIBS_INTERNAL
    -
    191 */
    -
    192
    -
    193static int dummy; // переменная которой присваиваются значения, которые некуда присвоить
    -
    194
    -
    195/**
    -
    196 * @brief Аналог HAL макроса для привязки DMA к UART.
    -
    197 * @note @ref __HAL_LINKDMA.
    -
    198 */
    -
    199#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
    -
    200do{ \
    -
    201(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \
    -
    202(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
    -
    203
    -
    204
    -
    205/** @endcond */
    -
    206#endif //__MYLIBS_DEFINES_H_
    +
    52/** @brief Проверить один указатель на NULL */
    +
    53#define check_null_ptr_1(p1) (p1 == NULL)
    +
    54
    +
    55/** @brief Проверить два указателя на NULL */
    +
    56#define check_null_ptr_2(p1, p2) ((p1 == NULL) || (p1 != NULL && p2 == NULL))
    +
    57
    +
    58/** @brief Проверить три указателя на NULL */
    +
    59#define check_null_ptr_3(p1, p2, p3) ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && p3 == NULL))))
    +
    60
    +
    61/** @brief Проверить четыре указателя на NULL */
    +
    62#define check_null_ptr_4(p1, p2, p3, p4) ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && p4 == NULL))))))
    +
    63
    +
    64/** @brief Проверить пять указателей на NULL */
    +
    65#define check_null_ptr_5(p1, p2, p3, p4, p5) ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && ((p4 == NULL) || (p4 != NULL && p5 == NULL))))))))
    +
    66
    +
    67/** ERROR_HANDLER_DEFINES
    +
    68 * @}
    +
    69 */
    +
    70
    +
    71
    +
    72/***************************************************************************
    +
    73******************************DELAYS_DEFINES*******************************/
    +
    74/**
    +
    75 * @addtogroup DELAYS_DEFINES Delays defines
    +
    76 * @ingroup MYLIBS_TOOLS
    +
    77 * @brief Макросы и определения для работы с задержками в миллисекундах.
    +
    78 * @details
    +
    79 * Этот блок содержит макросы для реализации задержек с использованием HAL или FreeRTOS:
    +
    80 * - @ref msDelay — простая задержка заданной длительности;
    +
    81 * - @ref msDelayStart — сохранение текущего времени начала задержки;
    +
    82 * - @ref msDelayWhileActive — проверка, активна ли задержка;
    +
    83 * - @ref msDelayWaitDone — проверка, завершена ли задержка.
    +
    84 * Эти макросы удобны для реализации неблокирующих задержек.
    +
    85 * @{
    +
    86 */
    +
    87
    +
    88/**
    +
    89 * @def msDelay(_ms_)
    +
    90 * @brief Блокирующая задержка на указанное количество миллисекунд.
    +
    91 * @param _ms_ Время задержки в миллисекундах.
    +
    92 * @note Использует задержку через @ref local_time или osDelay в зависимости от @ref FREERTOS_DELAY.
    +
    93 */
    +
    94#ifdef FREERTOS_DELAY
    +
    95 #define msDelay(_ms_) osDelay(_ms_)
    +
    96#else
    +
    97 #define msDelay(_ms_) \
    +
    98 do { \
    +
    99 uint32_t _start_ = local_time(); \
    +
    100 while (local_time() - _start_ < (_ms_)) {} \
    +
    101 } while(0)
    +
    102#endif
    +
    103
    +
    104
    +
    105/**
    +
    106 * @brief Начать отсчет задержки.
    +
    107 * @param _pvar_ Указатель на переменную типа uint32_t для хранения времени старта.
    +
    108 * @details После вызова этого макроса переменная _pvar_ содержит текущее количество миллисекунд
    +
    109 * с момента запуска системы (@ref local_time).
    +
    110 *
    +
    111 * Используется для реализации неблокирующих задержек.
    +
    112 */
    +
    113#define msDelayStart(_pvar_) *(_pvar_) = local_time()
    +
    114
    +
    115/**
    +
    116 * @brief Проверяет, активна ли задержка.
    +
    117 * @param _ms_ Длительность задержки в миллисекундах.
    +
    118 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (@ref msDelayStart).
    +
    119 * @retval 1 Задержка еще активна.
    +
    120 * @retval 0 Задержка завершена.
    +
    121 * @details
    +
    122 * Возвращает true, пока время задержки не истекло. Используется в проверках,
    +
    123 * когда нужно **действовать, пока задержка выполняется**. Пример:
    +
    124 * @code
    +
    125 * while(msDelayWhileActive(1000, &tick)) {
    +
    126 * // выполняем другие задачи, задержка не блокирует поток
    +
    127 * }
    +
    128 * @endcode
    +
    129 */
    +
    130#define msDelayWhileActive(_ms_, _pvar_) (local_time() - *(_pvar_) < _ms_)
    +
    131
    +
    132/**
    +
    133 * @brief Проверяет, завершилась ли задержка.
    +
    134 * @param _ms_ Длительность задержки в миллисекундах.
    +
    135 * @param _pvar_ Указатель на переменную, в которой сохранено время начала (msDelayStart).
    +
    136 * @retval 1 Задержка завершена.
    +
    137 * @retval 0 Задержка еще активна.
    +
    138 * @details
    +
    139 * Возвращает true, когда задержка уже завершена. Используется в проверках,
    +
    140 * когда нужно **выполнить действие только после окончания задержки**. Пример:
    +
    141 * @code
    +
    142 * if(msDelayWaitDone(1000, &tick)) {
    +
    143 * // выполняем действие после завершения задержки
    +
    144 * }
    +
    145 * @endcode
    +
    146 */
    +
    147#define msDelayWaitDone(_ms_, _pvar_) (local_time() - *(_pvar_) >= _ms_)
    +
    148
    +
    149/** DELAYS_DEFINES
    +
    150 * @}
    +
    151 */
    +
    152
    +
    153
    +
    154/***************************************************************************
    +
    155*******************************UTIL_DEFINES********************************/
    +
    156/**
    +
    157 * @addtogroup UTILS_DEFINES Utils defines
    +
    158 * @ingroup MYLIBS_TOOLS
    +
    159 * @brief Общие вспомогательные макросы
    +
    160 * @{
    +
    161 */
    +
    162
    +
    163/**
    +
    164 * @brief Обнуление структуры.
    +
    165 * @param _struct_ Структура, которую нужно обнулить.
    +
    166 * @details Макрос использует memset для обнуления всей памяти структуры.
    +
    167 * Используется для быстрой и безопасной инициализации переменных структур до нуля.
    +
    168 */
    +
    169#define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
    +
    170
    +
    171/**
    +
    172 * @brief Деление с округлением вверх
    +
    173 * @param _val_ Делимое.
    +
    174 * @param _div_ Делитель.
    +
    175 * @return Результат деления, округленный вверх.
    +
    176 * @details Если результат деления без остатка: он возвращается как есть
    +
    177 Если с остатком - округляется вверх
    +
    178 */
    +
    179//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
    +
    180#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
    +
    181
    +
    182/**
    +
    183 * @brief Swap between Little Endian and Big Endian
    +
    184 * @param v Исходное 16-битное значение.
    +
    185 * @return Результат с поменяными местами старшим и младшим байтом.
    +
    186 * @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
    +
    187 */
    +
    188#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
    +
    189
    +
    190/**
    +
    191 * @brief Абсолютное значение числа
    +
    192 * @param x Число.
    +
    193 * @return Абсолютное значение числа x.
    +
    194 * @details Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
    +
    195 */
    +
    196#define ABS(x) ( ((x) > 0)? (x) : -(x))
    +
    197
    +
    198/** UTILS_DEFINES
    +
    199 * @}
    +
    200 */
    +
    201
    +
    202
    +
    203
    +
    204/**
    +
    205 * @cond LIBS_INTERNAL
    +
    206 */
    +
    207
    +
    208static int dummy; // переменная которой присваиваются значения, которые некуда присвоить
    +
    209
    +
    210/**
    +
    211 * @brief Аналог HAL макроса для привязки DMA к UART.
    +
    212 * @note @ref __HAL_LINKDMA.
    +
    213 */
    +
    214#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
    +
    215do{ \
    +
    216(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \
    +
    217(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
    +
    218
    +
    219
    +
    220/** @endcond */
    +
    221#endif //__MYLIBS_TOOLS_H_
    Конфигурации для библиотек MyLibs.
    diff --git a/Doc/html/mylibs__include_8h.html b/Doc/html/mylibs__include_8h.html index 726ac42..9142d71 100644 --- a/Doc/html/mylibs__include_8h.html +++ b/Doc/html/mylibs__include_8h.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/mylibs_include.h File Reference +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_include.h File Reference @@ -110,48 +110,52 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); }); #include "trace.h"
    #include "gen_optimizer.h"
    #include "__general_flash.h"
    -#include "general_gpio.h"
    +#include "general_gpio.h"
    Include dependency graph for mylibs_include.h:
    @@ -190,7 +194,7 @@ Macros
    -

    Definition at line 104 of file mylibs_include.h.

    +

    Definition at line 99 of file mylibs_include.h.

    @@ -219,7 +223,7 @@ Macros
    Value:
    0
    -

    Definition at line 105 of file mylibs_include.h.

    +

    Definition at line 100 of file mylibs_include.h.

    @@ -243,7 +247,7 @@ Macros
    Value:
    0
    -

    Definition at line 106 of file mylibs_include.h.

    +

    Definition at line 101 of file mylibs_include.h.

    @@ -263,7 +267,7 @@ Macros
    Value:
    0
    -

    Definition at line 107 of file mylibs_include.h.

    +

    Definition at line 102 of file mylibs_include.h.

    @@ -283,7 +287,7 @@ Macros
    Value:
    0
    -

    Definition at line 108 of file mylibs_include.h.

    +

    Definition at line 103 of file mylibs_include.h.

    @@ -303,7 +307,7 @@ Macros
    Value:
    0
    -

    Definition at line 109 of file mylibs_include.h.

    +

    Definition at line 104 of file mylibs_include.h.

    @@ -323,7 +327,7 @@ Macros
    Value:
    0
    -

    Definition at line 110 of file mylibs_include.h.

    +

    Definition at line 105 of file mylibs_include.h.

    @@ -343,7 +347,7 @@ Macros
    Value:
    0
    -

    Definition at line 111 of file mylibs_include.h.

    +

    Definition at line 106 of file mylibs_include.h.

    @@ -362,7 +366,7 @@ Macros
    -

    Definition at line 112 of file mylibs_include.h.

    +

    Definition at line 107 of file mylibs_include.h.

    diff --git a/Doc/html/mylibs__include_8h__incl.map b/Doc/html/mylibs__include_8h__incl.map index 950b7db..dbb1c14 100644 --- a/Doc/html/mylibs__include_8h__incl.map +++ b/Doc/html/mylibs__include_8h__incl.map @@ -1,37 +1,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__include_8h__incl.md5 b/Doc/html/mylibs__include_8h__incl.md5 index ed70154..332c87b 100644 --- a/Doc/html/mylibs__include_8h__incl.md5 +++ b/Doc/html/mylibs__include_8h__incl.md5 @@ -1 +1 @@ -8e966aa98e7249a56c45bc830a455c74 \ No newline at end of file +ff959ac540a497b795d9fc794e4a70fa \ No newline at end of file diff --git a/Doc/html/mylibs__include_8h__incl.png b/Doc/html/mylibs__include_8h__incl.png index 6caf9f1..cc49418 100644 Binary files a/Doc/html/mylibs__include_8h__incl.png and b/Doc/html/mylibs__include_8h__incl.png differ diff --git a/Doc/html/mylibs__include_8h_source.html b/Doc/html/mylibs__include_8h_source.html index 5696b67..694c01e 100644 --- a/Doc/html/mylibs__include_8h_source.html +++ b/Doc/html/mylibs__include_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/mylibs_include.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/mylibs_include.h Source File @@ -116,140 +116,131 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });
    14- Сконфигурировать mylibs_config.h:
    15 - Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx_hal.h)
    16 - Подключить другие заголовочные файлы которые общие для всего проекта и должны быть видны
    -
    17 -
    -
    18- Подключить mylibs_include.h туда, где необходим доступ к библиотекам.
    -
    19
    -
    20* @defgroup MYLIBS_PERIPHERAL Peripheral
    -
    21* @ingroup MYLIBS_ALL
    -
    22* @brief Модули для управления периферией
    -
    23*
    -
    24*************************************************************************/
    -
    25#ifndef __MYLIBS_INCLUDE_H_
    -
    26#define __MYLIBS_INCLUDE_H_
    -
    27
    -
    28#include "mylibs_defs.h"
    -
    29
    -
    30
    -
    31#ifdef ARM_MATH_CM4
    -
    32 #include "arm_math.h"
    -
    33#else
    -
    34 #include "math.h"
    +
    17 - Подключить mylibs_include.h туда, где необходим доступ к библиотекам.
    +
    18
    +
    19*************************************************************************/
    +
    20#ifndef __MYLIBS_INCLUDE_H_
    +
    21#define __MYLIBS_INCLUDE_H_
    +
    22
    +
    23#include "mylibs_defs.h"
    +
    24
    +
    25
    +
    26#ifdef ARM_MATH_CM4
    +
    27 #include "arm_math.h"
    +
    28#else
    +
    29 #include "math.h"
    +
    30#endif
    +
    31
    +
    32
    +
    33#ifdef INCLUDE_BIT_ACCESS_LIB
    +
    34#include "bit_access.h"
    35#endif
    36
    -
    37
    -
    38#ifdef INCLUDE_BIT_ACCESS_LIB
    -
    39#include "bit_access.h"
    -
    40#endif
    -
    41
    -
    42#ifdef INCLUDE_TRACKERS_LIB
    -
    43#include "trackers.h"
    -
    44#else
    -
    45 #define TrackerTypeDef(num_user_vars) void *
    -
    46 #define num_of_usercnts(_user_) 0
    -
    47 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
    -
    48 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
    -
    49 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
    -
    50 #define TrackerGet_Ok(_cntstruct_) dummy
    -
    51 #define TrackerGet_Err(_cntstruct_) dummy
    -
    52 #define TrackerGet_Warn(_cntstruct_) dummy
    -
    53 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
    -
    54 #define TrackerCnt_Ok(_cntstruct_)
    -
    55 #define TrackerCnt_Err(_cntstruct_)
    -
    56 #define TrackerCnt_Warn(_cntstruct_)
    -
    57 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
    -
    58 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
    -
    59 #define TrackerClear_All(_cntstruct_)
    -
    60 #define TrackerClear_Ok(_cntstruct_)
    -
    61 #define TrackerClear_Err(_cntstruct_)
    -
    62 #define TrackerClear_Warn(_cntstruct_)
    -
    63 #define TrackerClear_User(_cntstruct_)
    -
    64 #define TrackerClear_UserAll(_cntstruct_)
    -
    65#endif
    -
    66
    -
    67#ifdef INCLUDE_TRACE_LIB
    -
    68#include "trace.h"
    -
    69#else
    -
    70#define my_printf(...)
    -
    71#define log_printf(TAG, fmt, ...)
    -
    72#define TRACE_GPIO_SET(_gpio_,_pin_)
    -
    73#define TRACE_GPIO_RESET(_gpio_,_pin_)
    -
    74#define RTT_FlashPrepare(...)
    -
    75#define RTT_EraseFlash(...) 0
    -
    76#define RTT_SaveToFlash(...) 0
    -
    77#define RTT_ReadFromFlash(...) 0
    -
    78#define HF_CheckRecovered(...) 0
    -
    79#define HF_HandleFault(...)
    -
    80#endif
    -
    81
    -
    82#ifdef INCLUDE_GEN_OPTIMIZER
    -
    83#include "gen_optimizer.h"
    -
    84#else
    -
    85typedef struct {
    -
    86 uint16_t n_params;
    -
    87 uint16_t n_cand;
    -
    88 uint16_t n_best;
    -
    89 uint16_t iq_mutation;
    -
    90 int32_t loss[0];
    -
    91 int32_t candidates[0][0];
    - -
    93#define GenOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
    -
    94#define GenOptimizer_Step(opt, params, LossFunc)
    -
    95#define PARAM_SCALE_Q16(x, min_val, max_val) (x)
    -
    96#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
    -
    97#endif
    -
    98
    -
    99
    -
    100
    -
    101#ifdef INCLUDE_BENCH_TEST
    -
    102#include "bench_time.h"
    -
    103#else //BENCH_TIME_ENABLE
    -
    104#define BenchTime_Init()
    -
    105#define BenchTime_Start(channel, ticks, tick_period) 0
    -
    106#define BenchTime_End(channel, ticks) 0
    -
    107#define BenchTime_GetMin(channel) 0
    -
    108#define BenchTime_GetMax(channel) 0
    -
    109#define BenchTime_GetAverage(channel) 0
    -
    110#define BenchTime_GetCount(channel) 0
    -
    111#define BenchTime_GetLast(channel) 0
    -
    112#define BenchTime_ResetStats(channel)
    -
    113#endif //BENCH_TIME_ENABLE
    -
    114
    -
    115#ifdef INCLUDE_GENERAL_PERIPH_LIBS
    -
    116
    -
    117#include "__general_flash.h"
    -
    118#include "general_gpio.h"
    -
    119#ifdef HAL_SPI_MODULE_ENABLED
    -
    120#include "general_spi.h"
    -
    121#endif
    -
    122#ifdef HAL_UART_MODULE_ENABLED
    -
    123#include "general_uart.h"
    -
    124#endif
    -
    125#ifdef HAL_TIM_MODULE_ENABLED
    -
    126#include "general_tim.h"
    -
    127#endif
    -
    128
    -
    129#endif //INCLUDE_GENERAL_PERIPH_LIBS
    -
    130
    +
    37#ifdef INCLUDE_TRACKERS_LIB
    +
    38#include "trackers.h"
    +
    39#else
    +
    40 #define TrackerTypeDef(num_user_vars) void *
    +
    41 #define num_of_usercnts(_user_) 0
    +
    42 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
    +
    43 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
    +
    44 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
    +
    45 #define TrackerGet_Ok(_cntstruct_) dummy
    +
    46 #define TrackerGet_Err(_cntstruct_) dummy
    +
    47 #define TrackerGet_Warn(_cntstruct_) dummy
    +
    48 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
    +
    49 #define TrackerCnt_Ok(_cntstruct_)
    +
    50 #define TrackerCnt_Err(_cntstruct_)
    +
    51 #define TrackerCnt_Warn(_cntstruct_)
    +
    52 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
    +
    53 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
    +
    54 #define TrackerClear_All(_cntstruct_)
    +
    55 #define TrackerClear_Ok(_cntstruct_)
    +
    56 #define TrackerClear_Err(_cntstruct_)
    +
    57 #define TrackerClear_Warn(_cntstruct_)
    +
    58 #define TrackerClear_User(_cntstruct_)
    +
    59 #define TrackerClear_UserAll(_cntstruct_)
    +
    60#endif
    +
    61
    +
    62#ifdef INCLUDE_TRACE_LIB
    +
    63#include "trace.h"
    +
    64#else
    +
    65#define my_printf(...)
    +
    66#define log_printf(TAG, fmt, ...)
    +
    67#define TRACE_GPIO_SET(_gpio_,_pin_)
    +
    68#define TRACE_GPIO_RESET(_gpio_,_pin_)
    +
    69#define RTT_FlashPrepare(...)
    +
    70#define RTT_EraseFlash(...) 0
    +
    71#define RTT_SaveToFlash(...) 0
    +
    72#define RTT_ReadFromFlash(...) 0
    +
    73#define HF_CheckRecovered(...) 0
    +
    74#define HF_HandleFault(...)
    +
    75#endif
    +
    76
    +
    77#ifdef INCLUDE_GEN_OPTIMIZER
    +
    78#include "gen_optimizer.h"
    +
    79#else
    +
    80typedef struct {
    +
    81 uint16_t n_params;
    +
    82 uint16_t n_cand;
    +
    83 uint16_t n_best;
    +
    84 uint16_t iq_mutation;
    +
    85 int32_t loss[0];
    +
    86 int32_t candidates[0][0];
    + +
    88#define GenOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
    +
    89#define GenOptimizer_Step(opt, params, LossFunc)
    +
    90#define PARAM_SCALE_Q16(x, min_val, max_val) (x)
    +
    91#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
    +
    92#endif
    +
    93
    +
    94
    +
    95
    +
    96#ifdef INCLUDE_BENCH_TEST
    +
    97#include "bench_time.h"
    +
    98#else //BENCH_TIME_ENABLE
    +
    99#define BenchTime_Init()
    +
    100#define BenchTime_Start(channel, ticks, tick_period) 0
    +
    101#define BenchTime_End(channel, ticks) 0
    +
    102#define BenchTime_GetMin(channel) 0
    +
    103#define BenchTime_GetMax(channel) 0
    +
    104#define BenchTime_GetAverage(channel) 0
    +
    105#define BenchTime_GetCount(channel) 0
    +
    106#define BenchTime_GetLast(channel) 0
    +
    107#define BenchTime_ResetStats(channel)
    +
    108#endif //BENCH_TIME_ENABLE
    +
    109
    +
    110#ifdef INCLUDE_GENERAL_PERIPH_LIBS
    +
    111
    +
    112#include "__general_flash.h"
    +
    113#include "general_gpio.h"
    +
    114#ifdef HAL_SPI_MODULE_ENABLED
    +
    115#include "general_spi.h"
    +
    116#endif
    +
    117#ifdef HAL_UART_MODULE_ENABLED
    +
    118#include "general_uart.h"
    +
    119#endif
    +
    120#ifdef HAL_TIM_MODULE_ENABLED
    +
    121#include "general_tim.h"
    +
    122#endif
    +
    123
    +
    124#endif //INCLUDE_GENERAL_PERIPH_LIBS
    +
    125
    +
    126
    +
    127
    +
    128
    +
    129/////////////////////////---USER SETTINGS---/////////////////////////
    +
    130// user includes
    131
    -
    132
    -
    133
    -
    134/////////////////////////---USER SETTINGS---/////////////////////////
    -
    135// user includes
    -
    136
    -
    137// user settings
    -
    138/////////////////////////---USER SETTINGS---/////////////////////////
    -
    139
    -
    140
    -
    141#endif // __MYLIBS_INCLUDE_H_
    +
    132// user settings
    +
    133/////////////////////////---USER SETTINGS---/////////////////////////
    +
    134
    +
    135
    +
    136#endif // __MYLIBS_INCLUDE_H_
    Заголовочный файл для измерения времени между событиями
    Заголочный файл для дефайнов битового доступа.
    Заголовочный файл для адаптивного подбора параметров
    -
    Заголовочный файл для модуля инициализации портов и работы с ними.
    -
    Заголовочный файл для модуля инициализации SPI.
    -
    Заголовочный файл для модуля инициализации таймеров и работы с ними.
    -
    Заголовочный файл для модуля инициализации UART.
    Заголочный файл для дефайнов библиотеки MyLibsGeneral.
    -
    Структура эволюционного оптимизатора
    +
    Структура эволюционного оптимизатора
    Заголочный файл для работы с трассировкой.
    Заголочный файл для работы с трекерами Trackers defines.
    diff --git a/Doc/html/navtreedata.js b/Doc/html/navtreedata.js index bde56f6..c8b5d88 100644 --- a/Doc/html/navtreedata.js +++ b/Doc/html/navtreedata.js @@ -25,18 +25,7 @@ var NAVTREE = [ [ "MyLibs", "index.html", [ - [ "Обзор", "index.html#overview", [ - [ "Основные возможности", "index.html#features", [ - [ "Общие утилиты (General Tools)", "index.html#utils_module", null ], - [ "Трассировка Trace defines", "index.html#trace_module", null ], - [ "Модуль GPIO GPIO Tools", "index.html#gpio_module", null ], - [ "Модуль таймеров TIM Tools", "index.html#tim_module", null ], - [ "Модуль UART UART Tools", "index.html#uart_module", null ], - [ "Модуль SPI SPI Tools", "index.html#spi_module", null ] - ] ], - [ "Структура проекта", "index.html#structure", null ], - [ "Использование", "index.html#usage_basic", null ] - ] ], + [ "Обзор ExtendedLibs", "index.html", "index" ], [ "Topics", "topics.html", "topics" ], [ "Classes", "annotated.html", [ [ "Class List", "annotated.html", "annotated_dup" ], @@ -49,11 +38,9 @@ var NAVTREE = [ "Files", "files.html", [ [ "File List", "files.html", "files_dup" ], [ "File Members", "globals.html", [ - [ "All", "globals.html", "globals_dup" ], + [ "All", "globals.html", null ], [ "Functions", "globals_func.html", null ], [ "Variables", "globals_vars.html", null ], - [ "Enumerations", "globals_enum.html", null ], - [ "Enumerator", "globals_eval.html", null ], [ "Macros", "globals_defs.html", null ] ] ] ] ] @@ -62,8 +49,7 @@ var NAVTREE = var NAVTREEINDEX = [ -"____general__flash_8c_source.html", -"group___u_a_r_t___i_n_i_t.html" +"_s_e_g_g_e_r___r_t_t_8c_source.html" ]; var SYNCONMSG = 'click to disable panel synchronization'; diff --git a/Doc/html/navtreeindex0.js b/Doc/html/navtreeindex0.js index 18c9dc7..a3450d8 100644 --- a/Doc/html/navtreeindex0.js +++ b/Doc/html/navtreeindex0.js @@ -1,16 +1,17 @@ var NAVTREEINDEX0 = { -"____general__flash_8c_source.html":[3,0,1,1,0], -"____general__flash_8h_source.html":[3,0,1,0,0], +"_s_e_g_g_e_r___r_t_t_8c_source.html":[3,0,1,0], +"_s_e_g_g_e_r___r_t_t_8h_source.html":[3,0,1,1], +"_s_e_g_g_e_r___r_t_t___conf_8h_source.html":[3,0,1,2], +"_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.html":[3,0,1,4], +"_s_e_g_g_e_r___r_t_t__printf_8c_source.html":[3,0,1,3], "annotated.html":[2,0], "bench__time_8h.html":[3,0,0,0,0], "bench__time_8h_source.html":[3,0,0,0,0], "bit__access_8h.html":[3,0,0,0,1], "bit__access_8h_source.html":[3,0,0,0,1], "classes.html":[2,1], -"dir_2cad7b5fa94233a09111fd73c6202518.html":[3,0,1,0], -"dir_3d5e348fed410a00f9c665596ca3b887.html":[3,0,1,1], -"dir_57feeba75fefbd1a9c832b76e3bce520.html":[3,0,1], +"dir_7de012165f681bf20d3995ae88f6551e.html":[3,0,1], "dir_8eb68c124db7670c3cb56141b10519ea.html":[3,0,0,0], "dir_d4b2573a0c19afb61452cc3d00967af1.html":[3,0,0], "files.html":[3,0], @@ -18,97 +19,52 @@ var NAVTREEINDEX0 = "functions_vars.html":[2,2,1], "gen__optimizer_8h.html":[3,0,0,0,2], "gen__optimizer_8h_source.html":[3,0,0,0,2], -"general__gpio_8c.html":[3,0,1,1,1], -"general__gpio_8c_source.html":[3,0,1,1,1], -"general__gpio_8h.html":[3,0,1,0,1], -"general__gpio_8h_source.html":[3,0,1,0,1], -"general__spi_8c.html":[3,0,1,1,2], -"general__spi_8c.html#ae80d21e5cab86571709a2619442733b5":[3,0,1,1,2,1], -"general__spi_8c_source.html":[3,0,1,1,2], -"general__spi_8h.html":[3,0,1,0,2], -"general__spi_8h_source.html":[3,0,1,0,2], -"general__tim_8c.html":[3,0,1,1,3], -"general__tim_8c_source.html":[3,0,1,1,3], -"general__tim_8h.html":[3,0,1,0,3], -"general__tim_8h_source.html":[3,0,1,0,3], -"general__uart_8c.html":[3,0,1,1,4], -"general__uart_8c.html#a3abae05bbde5f3b402bf18ca13dc6a0b":[3,0,1,1,4,1], -"general__uart_8c.html#ad82d0cbd19151675135fd75dad315d05":[3,0,1,1,4,2], -"general__uart_8c_source.html":[3,0,1,1,4], -"general__uart_8h.html":[3,0,1,0,4], -"general__uart_8h_source.html":[3,0,1,0,4], "globals.html":[3,1,0], -"globals.html":[3,1,0,0], -"globals_b.html":[3,1,0,1], -"globals_c.html":[3,1,0,2], -"globals_d.html":[3,1,0,3], -"globals_defs.html":[3,1,5], -"globals_e.html":[3,1,0,4], -"globals_enum.html":[3,1,3], -"globals_eval.html":[3,1,4], -"globals_f.html":[3,1,0,5], +"globals_defs.html":[3,1,3], "globals_func.html":[3,1,1], -"globals_g.html":[3,1,0,6], -"globals_h.html":[3,1,0,7], -"globals_i.html":[3,1,0,8], -"globals_l.html":[3,1,0,9], -"globals_m.html":[3,1,0,10], -"globals_n.html":[3,1,0,11], -"globals_p.html":[3,1,0,12], -"globals_r.html":[3,1,0,13], -"globals_s.html":[3,1,0,14], -"globals_t.html":[3,1,0,15], -"globals_u.html":[3,1,0,16], "globals_vars.html":[3,1,2], -"group___b_e_n_c_h___t_i_m_e.html":[1,0,1,1], -"group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e":[1,0,1,1,7], -"group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8":[1,0,1,1,8], -"group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705":[1,0,1,1,6], -"group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35":[1,0,1,1,11], -"group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439":[1,0,1,1,5], -"group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d":[1,0,1,1,12], -"group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054":[1,0,1,1,3], -"group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a":[1,0,1,1,9], -"group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349":[1,0,1,1,4], -"group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed":[1,0,1,1,10], +"group___b_e_n_c_h___t_i_m_e.html":[1,0,2,0], +"group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e":[1,0,2,0,7], +"group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8":[1,0,2,0,8], +"group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705":[1,0,2,0,6], +"group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35":[1,0,2,0,11], +"group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439":[1,0,2,0,5], +"group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d":[1,0,2,0,12], +"group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054":[1,0,2,0,3], +"group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a":[1,0,2,0,9], +"group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349":[1,0,2,0,4], +"group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed":[1,0,2,0,10], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html":[1,0,1,0], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a":[1,0,1,0,7], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396":[1,0,1,0,4], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086":[1,0,1,0,5], "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1":[1,0,1,0,6], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,4], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,4,2], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,4,1], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,4,0], -"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,4,3], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,3], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,3,2], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,3,4], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,3,1], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,3,3], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,3,5], -"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,3,0], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,2], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,2,2], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,2,1], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,2,0], +"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,2,3], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,1], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,1,2], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,1,4], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,1,1], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,1,3], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,1,5], +"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,1,0], "group___g_e_n___c_o_n_f_i_g.html":[1,0,0,1], "group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869":[1,0,0,1,2], "group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9":[1,0,0,1,3], "group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52":[1,0,0,1,4], "group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab":[1,0,0,1,1], "group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c":[1,0,0,1,0], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html":[1,0,1,2], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a":[1,0,1,2,6], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb":[1,0,1,2,5], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068":[1,0,1,2,3], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd":[1,0,1,2,4], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e":[1,0,1,2,1], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3":[1,0,1,2,2], -"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628":[1,0,1,2,7], -"group___g_p_i_o___i_n_i_t.html":[1,0,2,0,0,0], -"group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9":[1,0,2,0,0,0,4], -"group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023":[1,0,2,0,0,0,1], -"group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29":[1,0,2,0,0,0,3], -"group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653":[1,0,2,0,0,0,0], -"group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067":[1,0,2,0,0,0,5], -"group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25":[1,0,2,0,0,0,2], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html":[1,0,2,1], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a":[1,0,2,1,6], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb":[1,0,2,1,5], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068":[1,0,2,1,3], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd":[1,0,2,1,4], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e":[1,0,2,1,1], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3":[1,0,2,1,2], +"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628":[1,0,2,1,7], "group___l_i_b_s___c_o_n_f_i_g.html":[1,0,0,2], "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7":[1,0,0,2,4], "group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281":[1,0,0,2,5], @@ -117,87 +73,11 @@ var NAVTREEINDEX0 = "group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151":[1,0,0,2,6], "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653":[1,0,0,2,0], "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be":[1,0,0,2,2], -"group___m_y___l_i_b_s___g_p_i_o.html":[1,0,2,0], -"group___m_y___l_i_b_s___s_p_i.html":[1,0,2,1], -"group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba":[1,0,2,1,2], -"group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f":[1,0,2,1,3], -"group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac":[1,0,2,1,4], -"group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4":[1,0,2,1,5], -"group___m_y___l_i_b_s___t_i_m.html":[1,0,2,2], -"group___m_y___l_i_b_s___u_a_r_t.html":[1,0,2,3], -"group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a":[1,0,2,3,3], -"group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc":[1,0,2,3,5], -"group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb":[1,0,2,3,4], -"group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154":[1,0,2,3,2], "group___m_y_l_i_b_s___a_l_l.html":[1,0], "group___m_y_l_i_b_s___c_o_n_f_i_g.html":[1,0,0], -"group___m_y_l_i_b_s___d_e_f_i_n_e_s.html":[1,0,1], -"group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html":[1,0,2,0,0], -"group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6":[1,0,2,0,0,1], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html":[1,0,2,0,2], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c":[1,0,2,0,2,3], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a":[1,0,2,0,2,7], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1":[1,0,2,0,2,1], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357":[1,0,2,0,2,4], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084":[1,0,2,0,2,2], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2":[1,0,2,0,2,8], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2":[1,0,2,0,2,5], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9":[1,0,2,0,2,6], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb":[1,0,2,0,2,1,2], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae":[1,0,2,0,2,1,0], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b":[1,0,2,0,2,1,3], -"group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea":[1,0,2,0,2,1,1], -"group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html":[1,0,2,0,1], -"group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70":[1,0,2,0,1,2], -"group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7":[1,0,2,0,1,1], -"group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html":[1,0,2], -"group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html":[1,0,2,2,1], -"group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b":[1,0,2,2,1,2], -"group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834":[1,0,2,2,1,0], -"group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e":[1,0,2,2,1,1], -"group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html":[1,0,2,2,3], -"group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761":[1,0,2,2,3,3], -"group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc":[1,0,2,2,3,1], -"group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501":[1,0,2,2,3,2], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html":[1,0,2,2,0], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec":[1,0,2,2,0,4], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115":[1,0,2,2,0,6], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800":[1,0,2,2,0,3], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931":[1,0,2,2,0,5], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787":[1,0,2,2,0,2], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f":[1,0,2,2,0,3,2], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30":[1,0,2,2,0,3,3], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da":[1,0,2,2,0,3,6], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2":[1,0,2,2,0,3,1], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25":[1,0,2,2,0,3,4], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa":[1,0,2,2,0,3,5], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5":[1,0,2,2,0,3,0], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c":[1,0,2,2,0,2,1], -"group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8":[1,0,2,2,0,2,0], -"group___m_y_l_i_b_s___t_i_m___o_c.html":[1,0,2,2,2], -"group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6":[1,0,2,2,2,0], -"group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889":[1,0,2,2,2,1], -"group___s_p_i___i_n_i_t.html":[1,0,2,1,0], -"group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf":[1,0,2,1,0,1], -"group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b":[1,0,2,1,0,2], -"group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc":[1,0,2,1,0,3], -"group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c":[1,0,2,1,0,0], -"group___t_i_m___i_n_i_t.html":[1,0,2,2,0,0], -"group___t_i_m___i_n_i_t.html#ga1493b39c9214501180b81b4c892f9be0":[1,0,2,2,0,0,3], -"group___t_i_m___i_n_i_t.html#ga176c97f06ebcf14e06e5c5bdbfac44c2":[1,0,2,2,0,0,10], -"group___t_i_m___i_n_i_t.html#ga252f4fba93fc265110e83760e0590af3":[1,0,2,2,0,0,4], -"group___t_i_m___i_n_i_t.html#ga28ba33d7c6bf22821dafa5bcee4854be":[1,0,2,2,0,0,7], -"group___t_i_m___i_n_i_t.html#ga4e2b0e6cdf9eed74581b575c3fd9516b":[1,0,2,2,0,0,11], -"group___t_i_m___i_n_i_t.html#ga54a98c21365e0bc45b81555d2b101f2b":[1,0,2,2,0,0,0], -"group___t_i_m___i_n_i_t.html#ga5b5685a43273b6e37242a4aba3ee0617":[1,0,2,2,0,0,2], -"group___t_i_m___i_n_i_t.html#ga72535a44955b43cbcd56e25039ab32eb":[1,0,2,2,0,0,1], -"group___t_i_m___i_n_i_t.html#ga7cdc54cc8cbbb6e9f60001f1e3e6ec67":[1,0,2,2,0,0,6], -"group___t_i_m___i_n_i_t.html#ga8fe31b98160627d19038222910be3f46":[1,0,2,2,0,0,5], -"group___t_i_m___i_n_i_t.html#ga98c0691052d1da2c4053dd3586ff7ce9":[1,0,2,2,0,0,9], -"group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c":[1,0,2,2,0,0,13], -"group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a":[1,0,2,2,0,0,8], -"group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac":[1,0,2,2,0,0,12], -"group___t_r_a_c_e.html":[1,0,1,6], +"group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html":[1,0,2], +"group___m_y_l_i_b_s___t_o_o_l_s.html":[1,0,1], +"group___t_r_a_c_e.html":[1,0,2,2], "group___t_r_a_c_e___c_o_n_f_i_g.html":[1,0,0,0], "group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8":[1,0,0,0,2], "group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05":[1,0,0,0,4], @@ -215,39 +95,108 @@ var NAVTREEINDEX0 = "group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313":[1,0,0,0,10], "group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca":[1,0,0,0,11], "group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d":[1,0,0,0,8], -"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,6,1], -"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,6,1,1], -"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,6,1,0], -"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,6,3], -"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,6,3,1], -"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,6,3,2], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,6,2], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,6,2,1], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,6,2,3], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,6,2,2], -"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,6,2,4], -"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,6,0], -"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,6,0,1], -"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,6,0,0], -"group___t_r_a_c_k_e_r_s.html":[1,0,1,7], -"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,7,18], -"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,7,12], -"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,7,9], -"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,7,17], -"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,7,4], -"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,7,7], -"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,7,10], -"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,7,8], -"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,7,0], -"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,7,15], -"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,7,14], -"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,7,1], -"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,7,11], -"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,7,6], -"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,7,19], -"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,7,5], -"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,7,13], -"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,7,3], -"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,7,2], -"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,7,16] +"group___t_r_a_c_e___g_p_i_o.html":[1,0,2,2,1], +"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,2,2,1,1], +"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,2,2,1,0], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,2,2,3], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,2,2,3,1], +"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,2,2,3,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,2,2,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,2,2,2,1], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,2,2,2,3], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,2,2,2,2], +"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,2,2,2,4], +"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,2,2,0], +"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,2,2,0,1], +"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,2,2,0,0], +"group___t_r_a_c_k_e_r_s.html":[1,0,2,3], +"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,2,3,18], +"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,2,3,12], +"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,2,3,9], +"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,2,3,17], +"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,2,3,4], +"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,2,3,7], +"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,2,3,10], +"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,2,3,8], +"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,2,3,0], +"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,2,3,15], +"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,2,3,14], +"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,2,3,1], +"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,2,3,11], +"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,2,3,6], +"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,2,3,19], +"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,2,3,5], +"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,2,3,13], +"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,2,3,3], +"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,2,3,2], +"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,2,3,16], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,3], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,3,2], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,3,3], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,3,1], +"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,3,0], +"index.html":[], +"index.html":[0], +"index.html#инструкция-по-подключению":[0,2], +"index.html#основные-возможности":[0,0], +"index.html#структура-библиотеки":[0,1], +"mainpage_8h_source.html":[3,0,2], +"mylibs__config_8h.html":[3,0,0,0,3], +"mylibs__config_8h_source.html":[3,0,0,0,3], +"mylibs__defs_8h.html":[3,0,0,0,4], +"mylibs__defs_8h_source.html":[3,0,0,0,4], +"mylibs__include_8h.html":[3,0,0,0,5], +"mylibs__include_8h_source.html":[3,0,0,0,5], +"pages.html":[], +"struct_bench_time__t.html":[1,0,2,0,2], +"struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34":[1,0,2,0,2,0], +"struct_bench_time_channel__t.html":[1,0,2,0,1], +"struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd":[1,0,2,0,1,1], +"struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9":[1,0,2,0,1,2], +"struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c":[1,0,2,0,1,3], +"struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928":[1,0,2,0,1,0], +"struct_bench_time_stats__t.html":[1,0,2,0,0], +"struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec":[1,0,2,0,0,2], +"struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0":[1,0,2,0,0,4], +"struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8":[1,0,2,0,0,0], +"struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c":[1,0,2,0,0,1], +"struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71":[1,0,2,0,0,3], +"struct_gen_optimizer__t.html":[1,0,2,1,0], +"struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc":[1,0,2,1,0,5], +"struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320":[1,0,2,1,0,10], +"struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9":[1,0,2,1,0,3], +"struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c":[1,0,2,1,0,6], +"struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9":[1,0,2,1,0,2], +"struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192":[1,0,2,1,0,0], +"struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1":[1,0,2,1,0,7], +"struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c":[1,0,2,1,0,4], +"struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa":[1,0,2,1,0,8], +"struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947":[1,0,2,1,0,9], +"struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5":[1,0,2,1,0,1], +"struct_h_f___stack_frame__t.html":[1,0,2,2,3,0], +"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,2,2,3,0,6], +"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,2,2,3,0,1], +"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,2,2,3,0,0], +"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,2,2,3,0,3], +"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,2,2,3,0,2], +"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,2,2,3,0,5], +"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,2,2,3,0,4], +"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,2,2,3,0,7], +"struct_r_t_t___flash_header__t.html":[1,0,2,2,2,0], +"struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e":[1,0,2,2,2,0,2], +"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,2,2,2,0,0], +"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,2,2,2,0,1], +"struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html":[2,0,6], +"struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html":[2,0,7], +"struct_s_e_g_g_e_r___r_t_t___c_b.html":[2,0,8], +"struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html":[2,0,9], +"topics.html":[1], +"trace_8h.html":[3,0,0,0,6], +"trace_8h_source.html":[3,0,0,0,6], +"trackers_8h.html":[3,0,0,0,7], +"trackers_8h_source.html":[3,0,0,0,7], +"unionuint16___bit_type_def.html":[1,0,1,0,1], +"unionuint32___bit_type_def.html":[1,0,1,0,2], +"unionuint64___bit_type_def.html":[1,0,1,0,3], +"unionuint8___bit_type_def.html":[1,0,1,0,0] }; diff --git a/Doc/html/search/all_10.js b/Doc/html/search/all_10.js index 4476016..843fd86 100644 --- a/Doc/html/search/all_10.js +++ b/Doc/html/search/all_10.js @@ -3,59 +3,32 @@ var searchData= ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]], ['tern_5fassert_5fusertracker_1',['tern_assert_usertracker',['../group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30',1,'trackers.h']]], ['tick_5fperiod_2',['tick_period',['../struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd',1,'BenchTimeChannel_t']]], - ['tim_20tools_3',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], - ['tim_5fbase_5fdisable_4',['TIM_Base_Disable',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5',1,'general_tim.h']]], - ['tim_5fbase_5finit_5',['TIM_Base_Init',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c']]], - ['tim_5fbase_5fmspdeinit_6',['TIM_Base_MspDeInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c']]], - ['tim_5fbase_5fmspinit_7',['TIM_Base_MspInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c']]], - ['tim_5fdefault_8',['TIM_DEFAULT',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8',1,'general_tim.h']]], - ['tim_5fdelay_9',['TIM_Delay',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]], - ['tim_5fdelay_5fnonblocking_10',['TIM_Delay_NonBlocking',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]], - ['tim_5fdelay_5fstart_11',['TIM_Delay_Start',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c']]], - ['tim_5fencoder_5finit_12',['TIM_Encoder_Init',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim): general_tim.c']]], - ['tim_5fencoder_5fread_13',['TIM_Encoder_Read',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c']]], - ['tim_5fencoder_5freadswitch_14',['TIM_Encoder_ReadSwitch',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c']]], - ['tim_5fencodertypedef_15',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]], - ['tim_5fit_5fmode_16',['TIM_IT_MODE',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c',1,'general_tim.h']]], - ['tim_5fitmodetypedef_17',['TIM_ITModeTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787',1,'general_tim.h']]], - ['tim_5fmhztickbasetypedef_18',['TIM_MHzTickBaseTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800',1,'general_tim.h']]], - ['tim_5foc_5fcomparator_5finit_19',['TIM_OC_Comparator_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c']]], - ['tim_5foutput_5fpwm_5finit_20',['TIM_Output_PWM_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN): general_tim.c']]], - ['tim_5fsettingstypedef_21',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]], - ['tim_5ftickbase_5f100ms_22',['TIM_TickBase_100MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da',1,'general_tim.h']]], - ['tim_5ftickbase_5f100us_23',['TIM_TickBase_100US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30',1,'general_tim.h']]], - ['tim_5ftickbase_5f10ms_24',['TIM_TickBase_10MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa',1,'general_tim.h']]], - ['tim_5ftickbase_5f10us_25',['TIM_TickBase_10US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f',1,'general_tim.h']]], - ['tim_5ftickbase_5f1ms_26',['TIM_TickBase_1MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25',1,'general_tim.h']]], - ['tim_5ftickbase_5f1us_27',['TIM_TickBase_1US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2',1,'general_tim.h']]], - ['time_20measurement_28',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], - ['tools_29',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]], - ['tools_30',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], - ['total_5fticks_31',['total_ticks',['../struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec',1,'BenchTimeStats_t']]], - ['trace_32',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]], - ['trace_20configs_33',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], - ['trace_20defines_34',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], - ['trace_20defines_35',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], - ['trace_2eh_36',['trace.h',['../trace_8h.html',1,'']]], - ['trace_5fgpio_5freset_37',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]], - ['trace_5fgpio_5fset_38',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]], - ['trackerclear_5fall_39',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]], - ['trackerclear_5ferr_40',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]], - ['trackerclear_5fok_41',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]], - ['trackerclear_5fuser_42',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]], - ['trackerclear_5fuserall_43',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]], - ['trackerclear_5fwarn_44',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]], - ['trackercnt_5ferr_45',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]], - ['trackercnt_5fok_46',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]], - ['trackercnt_5fuser_47',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]], - ['trackercnt_5fwarn_48',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]], - ['trackerget_5ferr_49',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]], - ['trackerget_5fok_50',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]], - ['trackerget_5fuser_51',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]], - ['trackerget_5fwarn_52',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]], - ['trackers_20defines_53',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]], - ['trackers_2eh_54',['trackers.h',['../trackers_8h.html',1,'']]], - ['trackers_5fenable_55',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]], - ['trackertypedef_56',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]], - ['trackerwrite_5fuser_57',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]] + ['time_20measurement_3',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], + ['tools_4',['Tools',['../group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html',1,'Debug Tools'],['../group___m_y_l_i_b_s___t_o_o_l_s.html',1,'General Tools']]], + ['total_5fticks_5',['total_ticks',['../struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec',1,'BenchTimeStats_t']]], + ['trace_20configs_6',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], + ['trace_20defines_7',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], + ['trace_20defines_8',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], + ['trace_2eh_9',['trace.h',['../trace_8h.html',1,'']]], + ['trace_5fgpio_5freset_10',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]], + ['trace_5fgpio_5fset_11',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]], + ['trackerclear_5fall_12',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]], + ['trackerclear_5ferr_13',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]], + ['trackerclear_5fok_14',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]], + ['trackerclear_5fuser_15',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]], + ['trackerclear_5fuserall_16',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]], + ['trackerclear_5fwarn_17',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]], + ['trackercnt_5ferr_18',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]], + ['trackercnt_5fok_19',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]], + ['trackercnt_5fuser_20',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]], + ['trackercnt_5fwarn_21',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]], + ['trackerget_5ferr_22',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]], + ['trackerget_5fok_23',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]], + ['trackerget_5fuser_24',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]], + ['trackerget_5fwarn_25',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]], + ['trackers_20defines_26',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]], + ['trackers_2eh_27',['trackers.h',['../trackers_8h.html',1,'']]], + ['trackers_5fenable_28',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]], + ['trackertypedef_29',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]], + ['trackerwrite_5fuser_30',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]] ]; diff --git a/Doc/html/search/all_11.js b/Doc/html/search/all_11.js index e6fd0be..6a9372d 100644 --- a/Doc/html/search/all_11.js +++ b/Doc/html/search/all_11.js @@ -1,44 +1,12 @@ var searchData= [ - ['uart_20my_5flibs_5fuart_0',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]], - ['uart_20tools_1',['UART Tools',['../group___m_y___l_i_b_s___u_a_r_t.html',1,'']]], - ['uart_5fbase_5finit_2',['UART_Base_Init',['../group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154',1,'UART_Base_Init(UART_SettingsTypeDef *suart): general_uart.c'],['../group___m_y___l_i_b_s___u_a_r_t.html#gab9f07396b778505c934143e89953e154',1,'UART_Base_Init(UART_SettingsTypeDef *suart): general_uart.c']]], - ['uart_5fcheck_5finit_5fstruct_3',['UART_Check_Init_Struct',['../group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a',1,'UART_Check_Init_Struct(UART_SettingsTypeDef *suart): general_uart.c'],['../group___m_y___l_i_b_s___u_a_r_t.html#ga2a22e46ecb9e04b2ce197a0e9c09044a',1,'UART_Check_Init_Struct(UART_SettingsTypeDef *suart): general_uart.c']]], - ['uart_5fdma_5finit_4',['UART_DMA_Init',['../general__uart_8c.html#ad82d0cbd19151675135fd75dad315d05',1,'general_uart.c']]], - ['uart_5fgpio_5finit_5',['UART_GPIO_Init',['../general__uart_8c.html#a3abae05bbde5f3b402bf18ca13dc6a0b',1,'general_uart.c']]], - ['uart_5fmspdeinit_6',['UART_MspDeInit',['../group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc',1,'UART_MspDeInit(UART_HandleTypeDef *huart): general_uart.c'],['../group___m_y___l_i_b_s___u_a_r_t.html#ga93ed6ceef4e3b5e7885786125cce93bc',1,'UART_MspDeInit(UART_HandleTypeDef *huart): general_uart.c']]], - ['uart_5fmspinit_7',['UART_MspInit',['../group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb',1,'UART_MspInit(UART_HandleTypeDef *huart): general_uart.c'],['../group___m_y___l_i_b_s___u_a_r_t.html#gab9313fd2f9fc6873ca6bfbc5b96edbbb',1,'UART_MspInit(UART_HandleTypeDef *huart): general_uart.c']]], - ['uart_5fsettingstypedef_8',['UART_SettingsTypeDef',['../struct_u_a_r_t___settings_type_def.html',1,'']]], - ['uint16_5fbit_9',['uint16_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086',1,'bit_access.h']]], - ['uint16_5fbittypedef_10',['uint16_BitTypeDef',['../unionuint16___bit_type_def.html',1,'']]], - ['uint32_5fbit_11',['uint32_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1',1,'bit_access.h']]], - ['uint32_5fbittypedef_12',['uint32_BitTypeDef',['../unionuint32___bit_type_def.html',1,'']]], - ['uint64_5fbit_13',['uint64_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a',1,'bit_access.h']]], - ['uint64_5fbittypedef_14',['uint64_BitTypeDef',['../unionuint64___bit_type_def.html',1,'']]], - ['uint8_5fbit_15',['uint8_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396',1,'bit_access.h']]], - ['uint8_5fbittypedef_16',['uint8_BitTypeDef',['../unionuint8___bit_type_def.html',1,'']]], - ['use_5fspi1_17',['USE_SPI1',['../group___s_p_i___i_n_i_t.html#ga2fe0c8aeb2c61679f32836fef479eedf',1,'general_spi.h']]], - ['use_5fspi2_18',['USE_SPI2',['../group___s_p_i___i_n_i_t.html#ga53687cddb8e39e76a79b8ffaa152fb2b',1,'general_spi.h']]], - ['use_5fspi3_19',['USE_SPI3',['../group___s_p_i___i_n_i_t.html#ga5fdd6e5934a8005ef05b80f6d95883dc',1,'general_spi.h']]], - ['use_5ftim1_20',['USE_TIM1',['../group___t_i_m___i_n_i_t.html#ga54a98c21365e0bc45b81555d2b101f2b',1,'general_tim.h']]], - ['use_5ftim10_21',['USE_TIM10',['../group___t_i_m___i_n_i_t.html#ga98c0691052d1da2c4053dd3586ff7ce9',1,'general_tim.h']]], - ['use_5ftim11_22',['USE_TIM11',['../group___t_i_m___i_n_i_t.html#ga176c97f06ebcf14e06e5c5bdbfac44c2',1,'general_tim.h']]], - ['use_5ftim12_23',['USE_TIM12',['../group___t_i_m___i_n_i_t.html#ga4e2b0e6cdf9eed74581b575c3fd9516b',1,'general_tim.h']]], - ['use_5ftim13_24',['USE_TIM13',['../group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac',1,'general_tim.h']]], - ['use_5ftim14_25',['USE_TIM14',['../group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c',1,'general_tim.h']]], - ['use_5ftim2_26',['USE_TIM2',['../group___t_i_m___i_n_i_t.html#ga72535a44955b43cbcd56e25039ab32eb',1,'general_tim.h']]], - ['use_5ftim3_27',['USE_TIM3',['../group___t_i_m___i_n_i_t.html#ga5b5685a43273b6e37242a4aba3ee0617',1,'general_tim.h']]], - ['use_5ftim4_28',['USE_TIM4',['../group___t_i_m___i_n_i_t.html#ga1493b39c9214501180b81b4c892f9be0',1,'general_tim.h']]], - ['use_5ftim5_29',['USE_TIM5',['../group___t_i_m___i_n_i_t.html#ga252f4fba93fc265110e83760e0590af3',1,'general_tim.h']]], - ['use_5ftim6_30',['USE_TIM6',['../group___t_i_m___i_n_i_t.html#ga8fe31b98160627d19038222910be3f46',1,'general_tim.h']]], - ['use_5ftim7_31',['USE_TIM7',['../group___t_i_m___i_n_i_t.html#ga7cdc54cc8cbbb6e9f60001f1e3e6ec67',1,'general_tim.h']]], - ['use_5ftim8_32',['USE_TIM8',['../group___t_i_m___i_n_i_t.html#ga28ba33d7c6bf22821dafa5bcee4854be',1,'general_tim.h']]], - ['use_5ftim9_33',['USE_TIM9',['../group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a',1,'general_tim.h']]], - ['use_5fuart4_34',['USE_UART4',['../group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7',1,'general_uart.h']]], - ['use_5fuart5_35',['USE_UART5',['../group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340',1,'general_uart.h']]], - ['use_5fusart1_36',['USE_USART1',['../group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b',1,'general_uart.h']]], - ['use_5fusart2_37',['USE_USART2',['../group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d',1,'general_uart.h']]], - ['use_5fusart3_38',['USE_USART3',['../group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976',1,'general_uart.h']]], - ['use_5fusart6_39',['USE_USART6',['../group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868',1,'general_uart.h']]], - ['utils_20defines_40',['Utils defines',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'']]] + ['uint16_5fbit_0',['uint16_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086',1,'bit_access.h']]], + ['uint16_5fbittypedef_1',['uint16_BitTypeDef',['../unionuint16___bit_type_def.html',1,'']]], + ['uint32_5fbit_2',['uint32_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1',1,'bit_access.h']]], + ['uint32_5fbittypedef_3',['uint32_BitTypeDef',['../unionuint32___bit_type_def.html',1,'']]], + ['uint64_5fbit_4',['uint64_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a',1,'bit_access.h']]], + ['uint64_5fbittypedef_5',['uint64_BitTypeDef',['../unionuint64___bit_type_def.html',1,'']]], + ['uint8_5fbit_6',['uint8_bit',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396',1,'bit_access.h']]], + ['uint8_5fbittypedef_7',['uint8_BitTypeDef',['../unionuint8___bit_type_def.html',1,'']]], + ['utils_20defines_8',['Utils defines',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'']]] ]; diff --git a/Doc/html/search/all_12.js b/Doc/html/search/all_12.js index 205b15e..1668022 100644 --- a/Doc/html/search/all_12.js +++ b/Doc/html/search/all_12.js @@ -1,4 +1,4 @@ var searchData= [ - ['возможности_0',['Основные возможности',['../index.html#features',1,'']]] + ['библиотеки_0',['Структура библиотеки',['../index.html#структура-библиотеки',1,'']]] ]; diff --git a/Doc/html/search/all_13.js b/Doc/html/search/all_13.js index 4f064c9..81090ed 100644 --- a/Doc/html/search/all_13.js +++ b/Doc/html/search/all_13.js @@ -1,4 +1,4 @@ var searchData= [ - ['использование_0',['Использование',['../index.html#usage_basic',1,'']]] + ['возможности_0',['Основные возможности',['../index.html#основные-возможности',1,'']]] ]; diff --git a/Doc/html/search/all_14.js b/Doc/html/search/all_14.js index 09baad2..a171128 100644 --- a/Doc/html/search/all_14.js +++ b/Doc/html/search/all_14.js @@ -1,7 +1,4 @@ var searchData= [ - ['модуль_20таймеров_20my_5flibs_5ftim_0',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['модуль_20gpio_20my_5flibs_5fgpio_1',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], - ['модуль_20spi_20my_5flibs_5fspi_2',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], - ['модуль_20uart_20my_5flibs_5fuart_3',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]] + ['инструкция_20по_20подключению_0',['Инструкция по подключению',['../index.html#инструкция-по-подключению',1,'']]] ]; diff --git a/Doc/html/search/all_15.js b/Doc/html/search/all_15.js index ca20af9..a10fe64 100644 --- a/Doc/html/search/all_15.js +++ b/Doc/html/search/all_15.js @@ -1,6 +1,7 @@ var searchData= [ - ['обзор_0',['Обзор',['../index.html#overview',1,'']]], - ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], - ['основные_20возможности_2',['Основные возможности',['../index.html#features',1,'']]] + ['обзор_20extendedlibs_0',['Обзор <span class="tt">ExtendedLibs</span>',['../index.html',1,'']]], + ['общие_20утилиты_20mylibs_20mylibs_5ftools_1',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]], + ['основные_20возможности_2',['Основные возможности',['../index.html#основные-возможности',1,'']]], + ['отладка_20mylibs_5fdebug_5ftools_3',['Отладка* (<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>)',['../index.html#отладка-ref-mylibs_debug_tools',1,'']]] ]; diff --git a/Doc/html/search/all_16.js b/Doc/html/search/all_16.js index 82a23b2..7a11d01 100644 --- a/Doc/html/search/all_16.js +++ b/Doc/html/search/all_16.js @@ -1,4 +1,5 @@ var searchData= [ - ['проекта_0',['Структура проекта',['../index.html#structure',1,'']]] + ['подключению_0',['Инструкция по подключению',['../index.html#инструкция-по-подключению',1,'']]], + ['по_20подключению_1',['Инструкция по подключению',['../index.html#инструкция-по-подключению',1,'']]] ]; diff --git a/Doc/html/search/all_17.js b/Doc/html/search/all_17.js index dd4f424..ad45139 100644 --- a/Doc/html/search/all_17.js +++ b/Doc/html/search/all_17.js @@ -1,4 +1,4 @@ var searchData= [ - ['структура_20проекта_0',['Структура проекта',['../index.html#structure',1,'']]] + ['структура_20библиотеки_0',['Структура библиотеки',['../index.html#структура-библиотеки',1,'']]] ]; diff --git a/Doc/html/search/all_18.js b/Doc/html/search/all_18.js index 25680da..5d6e822 100644 --- a/Doc/html/search/all_18.js +++ b/Doc/html/search/all_18.js @@ -1,5 +1,4 @@ var searchData= [ - ['трассировка_20trace_0',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]], - ['таймеров_20my_5flibs_5ftim_1',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]] + ['утилиты_20mylibs_20mylibs_5ftools_0',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]] ]; diff --git a/Doc/html/search/all_19.js b/Doc/html/search/all_19.js index f69cabe..6ac25da 100644 --- a/Doc/html/search/all_19.js +++ b/Doc/html/search/all_19.js @@ -1,4 +1,4 @@ var searchData= [ - ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]] + ['утилиты_20mylibs_5ftools_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-ref-mylibs_tools',1,'']]] ]; diff --git a/Doc/html/search/all_1a.js b/Doc/html/search/all_1a.js new file mode 100644 index 0000000..e816649 --- /dev/null +++ b/Doc/html/search/all_1a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#общие-утилиты-ref-MYLIBS_TOOLS',1,'']]] +]; diff --git a/Doc/html/search/all_1b.js b/Doc/html/search/all_1b.js new file mode 100644 index 0000000..e816649 --- /dev/null +++ b/Doc/html/search/all_1b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#общие-утилиты-ref-MYLIBS_TOOLS',1,'']]] +]; diff --git a/Doc/html/search/all_2.js b/Doc/html/search/all_2.js index 28874f5..6d7a2c1 100644 --- a/Doc/html/search/all_2.js +++ b/Doc/html/search/all_2.js @@ -1,19 +1,15 @@ var searchData= [ ['cand_5findex_0',['cand_index',['../struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc',1,'GenOptimizer_t']]], - ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df',1,'GenOptimizer_t']]], - ['channels_2',['channels',['../struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6',1,'BenchTime_t']]], - ['channels_20tools_3',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], - ['check_5fnull_5fptr_5f1_4',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f2_5',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f3_6',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f4_7',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]], - ['check_5fnull_5fptr_5f5_8',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]], - ['clearstruct_9',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]], - ['clk_5fgpio_5falternagefunc_10',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]], - ['clk_5fgpiox_11',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]], - ['clk_5fpin_12',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]], - ['configs_13',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['configs_14',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]], - ['count_15',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]] + ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947',1,'GenOptimizer_t']]], + ['channels_2',['channels',['../struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34',1,'BenchTime_t']]], + ['check_5fnull_5fptr_5f1_3',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f2_4',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f3_5',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f4_6',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]], + ['check_5fnull_5fptr_5f5_7',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]], + ['clearstruct_8',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]], + ['configs_9',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], + ['configs_10',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]], + ['count_11',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]] ]; diff --git a/Doc/html/search/all_3.js b/Doc/html/search/all_3.js index 98ee53c..0a5bea9 100644 --- a/Doc/html/search/all_3.js +++ b/Doc/html/search/all_3.js @@ -1,10 +1,8 @@ var searchData= [ - ['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]], - ['defines_1',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], - ['delay_20tools_2',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]], + ['data_0',['data',['../struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e',1,'RTT_FlashHeader_t']]], + ['debug_20tools_1',['Debug Tools',['../group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html',1,'']]], + ['defines_2',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], ['delays_20defines_3',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]], - ['divide_5fup_4',['Divide_Up',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e',1,'mylibs_defs.h']]], - ['dma_5fchannel_5fx_5',['DMA_CHANNEL_X',['../struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474',1,'SPI_SettingsTypeDef::DMA_CHANNEL_X'],['../struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19',1,'UART_SettingsTypeDef::DMA_CHANNEL_X']]], - ['dmachannel_6',['DMAChannel',['../struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95',1,'SPI_SettingsTypeDef::DMAChannel'],['../struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613',1,'UART_SettingsTypeDef::DMAChannel']]] + ['divide_5fup_4',['Divide_Up',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e',1,'mylibs_defs.h']]] ]; diff --git a/Doc/html/search/all_4.js b/Doc/html/search/all_4.js index 7efe25f..96461c2 100644 --- a/Doc/html/search/all_4.js +++ b/Doc/html/search/all_4.js @@ -1,8 +1,6 @@ var searchData= [ ['elovle_5fn_5felite_5fcandidate_0',['ELOVLE_N_ELITE_CANDIDATE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb',1,'gen_optimizer.h']]], - ['encoder_20tools_1',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], - ['encoder_5fdiff_2',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], - ['encoder_5fshdw_3',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]], - ['error_20handler_20defines_4',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]] + ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]], + ['extendedlibs_2',['Обзор <span class="tt">ExtendedLibs</span>',['../index.html',1,'']]] ]; diff --git a/Doc/html/search/all_6.js b/Doc/html/search/all_6.js index 81020f3..682a83c 100644 --- a/Doc/html/search/all_6.js +++ b/Doc/html/search/all_6.js @@ -8,42 +8,12 @@ var searchData= ['gen_5fmutation_5fmin_5fpct_5',['GEN_MUTATION_MIN_PCT',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068',1,'gen_optimizer.h']]], ['gen_5foptimization_5fenable_6',['GEN_OPTIMIZATION_ENABLE',['../group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c',1,'mylibs_config.h']]], ['gen_5foptimizer_2eh_7',['gen_optimizer.h',['../gen__optimizer_8h.html',1,'']]], - ['general_20tools_8',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], - ['general_20tools_9',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]], - ['general_5fgpio_2ec_10',['general_gpio.c',['../general__gpio_8c.html',1,'']]], - ['general_5fgpio_2eh_11',['general_gpio.h',['../general__gpio_8h.html',1,'']]], - ['general_5fspi_2ec_12',['general_spi.c',['../general__spi_8c.html',1,'']]], - ['general_5fspi_2eh_13',['general_spi.h',['../general__spi_8h.html',1,'']]], - ['general_5ftim_2ec_14',['general_tim.c',['../general__tim_8c.html',1,'']]], - ['general_5ftim_2eh_15',['general_tim.h',['../general__tim_8h.html',1,'']]], - ['general_5fuart_2ec_16',['general_uart.c',['../general__uart_8c.html',1,'']]], - ['general_5fuart_2eh_17',['general_uart.h',['../general__uart_8h.html',1,'']]], - ['genetic_20configs_18',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]], - ['genetic_20optimizer_19',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]], - ['genoptimizer_5finit_20',['GenOptimizer_Init',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a',1,'gen_optimizer.h']]], - ['genoptimizer_5fstep_21',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]], - ['genoptimizer_5ft_22',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]], - ['gpio_20my_5flibs_5fgpio_23',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], - ['gpio_20tools_24',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], - ['gpio_20trace_20defines_25',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]], - ['gpio_5fclock_5fenable_26',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]], - ['gpio_5fled_5fblink_5fstart_27',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], - ['gpio_5fled_5fdynamic_5fhandle_28',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5ffading_5fstart_29',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], - ['gpio_5fled_5finit_30',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]], - ['gpio_5fled_5foff_31',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5fon_32',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5fset_33',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]], - ['gpio_5fledstatetypedef_34',['GPIO_LEDStateTypeDef',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1',1,'general_gpio.h']]], - ['gpio_5fledtypedef_35',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]], - ['gpio_5fpin_5frx_36',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]], - ['gpio_5fpin_5fsw_37',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti1_38',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti2_39',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5ftx_40',['GPIO_PIN_TX',['../struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef',1,'UART_SettingsTypeDef']]], - ['gpio_5fread_5fswitch_41',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]], - ['gpio_5fswitch_5finit_42',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]], - ['gpio_5fswitchtypedef_43',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]], - ['gpio_5ftrace_5fenable_44',['GPIO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b',1,'mylibs_config.h']]], - ['gpiox_45',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef::GPIOx'],['../struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f',1,'UART_SettingsTypeDef::GPIOx']]] + ['general_20tools_8',['General Tools',['../group___m_y_l_i_b_s___t_o_o_l_s.html',1,'']]], + ['genetic_20configs_9',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]], + ['genetic_20optimizer_10',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]], + ['genoptimizer_5finit_11',['GenOptimizer_Init',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a',1,'gen_optimizer.h']]], + ['genoptimizer_5fstep_12',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]], + ['genoptimizer_5ft_13',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]], + ['gpio_20trace_20defines_14',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]], + ['gpio_5ftrace_5fenable_15',['GPIO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b',1,'mylibs_config.h']]] ]; diff --git a/Doc/html/search/all_7.js b/Doc/html/search/all_7.js index 3fb8b1e..6f2e467 100644 --- a/Doc/html/search/all_7.js +++ b/Doc/html/search/all_7.js @@ -1,20 +1,15 @@ var searchData= [ - ['hal_5fspi_5fmodule_5fenabled_0',['HAL_SPI_MODULE_ENABLED',['../group___s_p_i___i_n_i_t.html#ga8ad4712bf4add56892d057778e826e0c',1,'general_spi.h']]], - ['hal_5fuart_5fmodule_5fenabled_1',['HAL_UART_MODULE_ENABLED',['../group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89',1,'general_uart.h']]], - ['handler_20defines_2',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]], - ['hardfault_20trace_20defines_3',['Hardfault trace defines',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'']]], - ['hardfault_5fserial_5ftrace_4',['HARDFAULT_SERIAL_TRACE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6',1,'mylibs_config.h']]], - ['hbt_5',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]], - ['hf_5fcheckrecovered_6',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]], - ['hf_5fflash_5faddr_7',['HF_FLASH_ADDR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63',1,'mylibs_config.h']]], - ['hf_5fhandlefault_8',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]], - ['hf_5fram_5fend_9',['HF_RAM_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051',1,'mylibs_config.h']]], - ['hf_5frtt_5ftag_5fbase_10',['HF_RTT_TAG_BASE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313',1,'mylibs_config.h']]], - ['hf_5frtt_5ftail_5fsize_11',['HF_RTT_TAIL_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca',1,'mylibs_config.h']]], - ['hf_5fstack_5fdump_5fwords_12',['HF_STACK_DUMP_WORDS',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b',1,'mylibs_config.h']]], - ['hf_5fstackframe_5ft_13',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]], - ['hspi_14',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]], - ['htim_15',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]], - ['huart_16',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]] + ['handler_20defines_0',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]], + ['hardfault_20trace_20defines_1',['Hardfault trace defines',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'']]], + ['hardfault_5fserial_5ftrace_2',['HARDFAULT_SERIAL_TRACE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6',1,'mylibs_config.h']]], + ['hbt_3',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]], + ['hf_5fcheckrecovered_4',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]], + ['hf_5fflash_5faddr_5',['HF_FLASH_ADDR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63',1,'mylibs_config.h']]], + ['hf_5fhandlefault_6',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]], + ['hf_5fram_5fend_7',['HF_RAM_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051',1,'mylibs_config.h']]], + ['hf_5frtt_5ftag_5fbase_8',['HF_RTT_TAG_BASE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313',1,'mylibs_config.h']]], + ['hf_5frtt_5ftail_5fsize_9',['HF_RTT_TAIL_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca',1,'mylibs_config.h']]], + ['hf_5fstack_5fdump_5fwords_10',['HF_STACK_DUMP_WORDS',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b',1,'mylibs_config.h']]], + ['hf_5fstackframe_5ft_11',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]] ]; diff --git a/Doc/html/search/all_8.js b/Doc/html/search/all_8.js index 61586fa..9900c53 100644 --- a/Doc/html/search/all_8.js +++ b/Doc/html/search/all_8.js @@ -6,6 +6,5 @@ var searchData= ['include_5fgeneral_5fperiph_5flibs_3',['INCLUDE_GENERAL_PERIPH_LIBS',['../group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281',1,'mylibs_config.h']]], ['include_5ftrace_5flib_4',['INCLUDE_TRACE_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7',1,'mylibs_config.h']]], ['include_5ftrackers_5flib_5',['INCLUDE_TRACKERS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32',1,'mylibs_config.h']]], - ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines']]], - ['is_5frunning_7',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]] + ['is_5frunning_6',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]] ]; diff --git a/Doc/html/search/all_9.js b/Doc/html/search/all_9.js index 959bc31..da778c8 100644 --- a/Doc/html/search/all_9.js +++ b/Doc/html/search/all_9.js @@ -1,23 +1,11 @@ var searchData= [ ['last_5fticks_0',['last_ticks',['../struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0',1,'BenchTimeStats_t']]], - ['led_20tools_1',['LED tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'']]], - ['led_5factivelvl_2',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], - ['led_5fis_5fblinking_3',['LED_IS_BLINKING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb',1,'general_gpio.h']]], - ['led_5fis_5ffading_4',['LED_IS_FADING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b',1,'general_gpio.h']]], - ['led_5fis_5foff_5',['LED_IS_OFF',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae',1,'general_gpio.h']]], - ['led_5fis_5fon_6',['LED_IS_ON',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea',1,'general_gpio.h']]], - ['led_5foff_7',['LED_OFF',['../group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29',1,'general_gpio.h']]], - ['led_5fon_8',['LED_ON',['../group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25',1,'general_gpio.h']]], - ['led_5fperiod_9',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], - ['led_5fpin_10',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], - ['led_5fport_11',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], - ['led_5fpwm_5fticks_12',['LED_PWM_TICKS',['../group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023',1,'general_gpio.h']]], - ['libraries_20configs_13',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['libs_14',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], - ['local_5ftime_15',['local_time',['../group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: mylibs_config.h'],['../group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: general_gpio.h']]], - ['log_5flevel_16',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]], - ['log_5fprintf_17',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]], - ['loss_18',['loss',['../struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73',1,'GenOptimizer_t']]], - ['lr_19',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] + ['libraries_20configs_1',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]], + ['libs_2',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], + ['local_5ftime_3',['local_time',['../group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653',1,'mylibs_config.h']]], + ['log_5flevel_4',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]], + ['log_5fprintf_5',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]], + ['loss_6',['loss',['../struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa',1,'GenOptimizer_t']]], + ['lr_7',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/all_a.js b/Doc/html/search/all_a.js index e17cff4..b58ce5b 100644 --- a/Doc/html/search/all_a.js +++ b/Doc/html/search/all_a.js @@ -3,27 +3,18 @@ var searchData= ['max_5fticks_0',['max_ticks',['../struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c',1,'BenchTimeStats_t']]], ['measurement_1',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], ['min_5fticks_2',['min_ticks',['../struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8',1,'BenchTimeStats_t']]], - ['miso_5fgpio_5falternagefunc_3',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]], - ['miso_5fgpiox_4',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]], - ['miso_5fpin_5',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpio_5falternagefunc_6',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpiox_7',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]], - ['mosi_5fpin_8',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]], - ['msdelay_9',['msDelay',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479',1,'mylibs_defs.h']]], - ['msdelaystart_10',['msDelayStart',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25',1,'mylibs_defs.h']]], - ['msdelaywaitdone_11',['msDelayWaitDone',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518',1,'mylibs_defs.h']]], - ['msdelaywhileactive_12',['msDelayWhileActive',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85',1,'mylibs_defs.h']]], - ['mutation_5famp_13',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]], - ['my_20libs_14',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], - ['my_5flibs_5fgpio_15',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], - ['my_5flibs_5fspi_16',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], - ['my_5flibs_5ftim_17',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['my_5flibs_5fuart_18',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]], - ['my_5fprintf_19',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]], - ['mylibs_20',['MyLibs',['../index.html',1,'']]], - ['mylibs_5fconfig_2eh_21',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], - ['mylibs_5fdefines_22',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], - ['mylibs_5fdefs_2eh_23',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], - ['mylibs_5ferror_5fhandler_24',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]], - ['mylibs_5finclude_2eh_25',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]] + ['msdelay_3',['msDelay',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479',1,'mylibs_defs.h']]], + ['msdelaystart_4',['msDelayStart',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25',1,'mylibs_defs.h']]], + ['msdelaywaitdone_5',['msDelayWaitDone',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518',1,'mylibs_defs.h']]], + ['msdelaywhileactive_6',['msDelayWhileActive',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85',1,'mylibs_defs.h']]], + ['mutation_5famp_7',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]], + ['my_20libs_8',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], + ['my_5fprintf_9',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]], + ['mylibs_20mylibs_5ftools_10',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]], + ['mylibs_5fconfig_2eh_11',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], + ['mylibs_5fdebug_5ftools_12',['Отладка* (<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>)',['../index.html#отладка-ref-mylibs_debug_tools',1,'']]], + ['mylibs_5fdefs_2eh_13',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], + ['mylibs_5ferror_5fhandler_14',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]], + ['mylibs_5finclude_2eh_15',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]], + ['mylibs_5ftools_16',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]] ]; diff --git a/Doc/html/search/all_c.js b/Doc/html/search/all_c.js index 9094ace..8bb1ce3 100644 --- a/Doc/html/search/all_c.js +++ b/Doc/html/search/all_c.js @@ -1,5 +1,4 @@ var searchData= [ - ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], - ['optimizer_1',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]] + ['optimizer_0',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]] ]; diff --git a/Doc/html/search/all_d.js b/Doc/html/search/all_d.js index 77e15f2..cd91d1c 100644 --- a/Doc/html/search/all_d.js +++ b/Doc/html/search/all_d.js @@ -3,7 +3,5 @@ var searchData= ['param_5fscale_0',['PARAM_SCALE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e',1,'gen_optimizer.h']]], ['param_5funscale_1',['PARAM_UNSCALE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3',1,'gen_optimizer.h']]], ['pc_2',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], - ['peripheral_3',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]], - ['psr_4',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]], - ['pwm_20oc_20channels_20tools_5',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]] + ['psr_3',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/all_f.js b/Doc/html/search/all_f.js index 037ff30..05dad63 100644 --- a/Doc/html/search/all_f.js +++ b/Doc/html/search/all_f.js @@ -1,39 +1,15 @@ var searchData= [ - ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]], - ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]], - ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]], - ['serial_20trace_20defines_3',['Serial trace defines',['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'']]], - ['serial_5ftrace_5fenable_4',['SERIAL_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6',1,'mylibs_config.h']]], - ['size_5',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]], - ['smasterconfig_6',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]], - ['sorted_5fidx_7',['sorted_idx',['../struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12',1,'GenOptimizer_t']]], - ['spi_20my_5flibs_5fspi_8',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], - ['spi_20tools_9',['SPI Tools',['../group___m_y___l_i_b_s___s_p_i.html',1,'']]], - ['spi_5fbase_5finit_10',['SPI_Base_Init',['../group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba',1,'SPI_Base_Init(SPI_SettingsTypeDef *sspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba',1,'SPI_Base_Init(SPI_SettingsTypeDef *sspi): general_spi.c']]], - ['spi_5fcheck_5finit_5fstruct_11',['SPI_Check_Init_Struct',['../group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f',1,'SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#ga333dd251bc878931086d48aa932b1a5f',1,'SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi): general_spi.c']]], - ['spi_5fgpio_5finit_12',['SPI_GPIO_Init',['../general__spi_8c.html#ae80d21e5cab86571709a2619442733b5',1,'general_spi.c']]], - ['spi_5fmspdeinit_13',['SPI_MspDeInit',['../group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4',1,'SPI_MspDeInit(SPI_HandleTypeDef *hspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#gac279cc3eaa35541edfe330a1844a85e4',1,'SPI_MspDeInit(SPI_HandleTypeDef *hspi): general_spi.c']]], - ['spi_5fmspinit_14',['SPI_MspInit',['../group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac',1,'SPI_MspInit(SPI_HandleTypeDef *hspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac',1,'SPI_MspInit(SPI_HandleTypeDef *hspi): general_spi.c']]], - ['spi_5fsettingstypedef_15',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]], - ['sslaveconfig_16',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], - ['stability_17',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]], - ['start_5ftick_18',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]], - ['state_19',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], - ['stats_20',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]], - ['stickbaseprescaler_21',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], - ['stickbaseus_22',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], - ['stimahbfreqmhz_23',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], - ['stimfreqhz_24',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], - ['stimmode_25',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], - ['sw_26',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], - ['sw_5factivelvl_27',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], - ['sw_5ffilterdelay_28',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], - ['sw_5foff_29',['SW_OFF',['../group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067',1,'general_gpio.h']]], - ['sw_5fon_30',['SW_ON',['../group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9',1,'general_gpio.h']]], - ['sw_5fpin_31',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], - ['sw_5fport_32',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], - ['sw_5fprevstate_33',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]], - ['switch_20tools_34',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]], - ['swo_5ftrace_5fenable_35',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]] + ['segger_5frtt_5fbuffer_5fdown_0',['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',1,'']]], + ['segger_5frtt_5fbuffer_5fup_1',['SEGGER_RTT_BUFFER_UP',['../struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html',1,'']]], + ['segger_5frtt_5fcb_2',['SEGGER_RTT_CB',['../struct_s_e_g_g_e_r___r_t_t___c_b.html',1,'']]], + ['segger_5frtt_5fprintf_5fdesc_3',['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',1,'']]], + ['serial_20trace_20defines_4',['Serial trace defines',['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'']]], + ['serial_5ftrace_5fenable_5',['SERIAL_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6',1,'mylibs_config.h']]], + ['size_6',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]], + ['sorted_5fidx_7',['sorted_idx',['../struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320',1,'GenOptimizer_t']]], + ['stability_8',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]], + ['start_5ftick_9',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]], + ['stats_10',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]], + ['swo_5ftrace_5fenable_11',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]] ]; diff --git a/Doc/html/search/classes_1.js b/Doc/html/search/classes_1.js index 0c5d0d7..77ed5c2 100644 --- a/Doc/html/search/classes_1.js +++ b/Doc/html/search/classes_1.js @@ -1,6 +1,4 @@ var searchData= [ - ['genoptimizer_5ft_0',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]], - ['gpio_5fledtypedef_1',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]], - ['gpio_5fswitchtypedef_2',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]] + ['genoptimizer_5ft_0',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]] ]; diff --git a/Doc/html/search/classes_4.js b/Doc/html/search/classes_4.js index bf0ca51..5bd6ad3 100644 --- a/Doc/html/search/classes_4.js +++ b/Doc/html/search/classes_4.js @@ -1,4 +1,7 @@ var searchData= [ - ['spi_5fsettingstypedef_0',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]] + ['segger_5frtt_5fbuffer_5fdown_0',['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',1,'']]], + ['segger_5frtt_5fbuffer_5fup_1',['SEGGER_RTT_BUFFER_UP',['../struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html',1,'']]], + ['segger_5frtt_5fcb_2',['SEGGER_RTT_CB',['../struct_s_e_g_g_e_r___r_t_t___c_b.html',1,'']]], + ['segger_5frtt_5fprintf_5fdesc_3',['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',1,'']]] ]; diff --git a/Doc/html/search/classes_5.js b/Doc/html/search/classes_5.js index 91c6e88..0f87d60 100644 --- a/Doc/html/search/classes_5.js +++ b/Doc/html/search/classes_5.js @@ -1,5 +1,7 @@ var searchData= [ - ['tim_5fencodertypedef_0',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]], - ['tim_5fsettingstypedef_1',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]] + ['uint16_5fbittypedef_0',['uint16_BitTypeDef',['../unionuint16___bit_type_def.html',1,'']]], + ['uint32_5fbittypedef_1',['uint32_BitTypeDef',['../unionuint32___bit_type_def.html',1,'']]], + ['uint64_5fbittypedef_2',['uint64_BitTypeDef',['../unionuint64___bit_type_def.html',1,'']]], + ['uint8_5fbittypedef_3',['uint8_BitTypeDef',['../unionuint8___bit_type_def.html',1,'']]] ]; diff --git a/Doc/html/search/files_1.js b/Doc/html/search/files_1.js index 7a27173..27350a3 100644 --- a/Doc/html/search/files_1.js +++ b/Doc/html/search/files_1.js @@ -1,12 +1,4 @@ var searchData= [ - ['gen_5foptimizer_2eh_0',['gen_optimizer.h',['../gen__optimizer_8h.html',1,'']]], - ['general_5fgpio_2ec_1',['general_gpio.c',['../general__gpio_8c.html',1,'']]], - ['general_5fgpio_2eh_2',['general_gpio.h',['../general__gpio_8h.html',1,'']]], - ['general_5fspi_2ec_3',['general_spi.c',['../general__spi_8c.html',1,'']]], - ['general_5fspi_2eh_4',['general_spi.h',['../general__spi_8h.html',1,'']]], - ['general_5ftim_2ec_5',['general_tim.c',['../general__tim_8c.html',1,'']]], - ['general_5ftim_2eh_6',['general_tim.h',['../general__tim_8h.html',1,'']]], - ['general_5fuart_2ec_7',['general_uart.c',['../general__uart_8c.html',1,'']]], - ['general_5fuart_2eh_8',['general_uart.h',['../general__uart_8h.html',1,'']]] + ['gen_5foptimizer_2eh_0',['gen_optimizer.h',['../gen__optimizer_8h.html',1,'']]] ]; diff --git a/Doc/html/search/functions_1.js b/Doc/html/search/functions_1.js index 3e028e5..1d2569f 100644 --- a/Doc/html/search/functions_1.js +++ b/Doc/html/search/functions_1.js @@ -1,15 +1,5 @@ var searchData= [ ['genoptimizer_5finit_0',['GenOptimizer_Init',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a',1,'gen_optimizer.h']]], - ['genoptimizer_5fstep_1',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]], - ['gpio_5fclock_5fenable_2',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]], - ['gpio_5fled_5fblink_5fstart_3',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], - ['gpio_5fled_5fdynamic_5fhandle_4',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5ffading_5fstart_5',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]], - ['gpio_5fled_5finit_6',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]], - ['gpio_5fled_5foff_7',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5fon_8',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]], - ['gpio_5fled_5fset_9',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]], - ['gpio_5fread_5fswitch_10',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]], - ['gpio_5fswitch_5finit_11',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]] + ['genoptimizer_5fstep_1',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]] ]; diff --git a/Doc/html/search/groups_2.js b/Doc/html/search/groups_2.js index 1f5d168..f26a5fb 100644 --- a/Doc/html/search/groups_2.js +++ b/Doc/html/search/groups_2.js @@ -1,6 +1,5 @@ var searchData= [ - ['channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], - ['configs_1',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['configs_2',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]] + ['configs_0',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]], + ['configs_1',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]] ]; diff --git a/Doc/html/search/groups_3.js b/Doc/html/search/groups_3.js index 6a7d179..09f7618 100644 --- a/Doc/html/search/groups_3.js +++ b/Doc/html/search/groups_3.js @@ -1,6 +1,6 @@ var searchData= [ - ['defines_0',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], - ['delay_20tools_1',['Delay tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'']]], + ['debug_20tools_0',['Debug Tools',['../group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html',1,'']]], + ['defines_1',['defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'Bit access defines'],['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'Delays defines'],['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'Error Handler defines'],['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines'],['../group___t_r_a_c_e.html',1,'Trace defines'],['../group___t_r_a_c_k_e_r_s.html',1,'Trackers defines'],['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'Utils defines']]], ['delays_20defines_2',['Delays defines',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html',1,'']]] ]; diff --git a/Doc/html/search/groups_4.js b/Doc/html/search/groups_4.js index d2fc234..02c58e6 100644 --- a/Doc/html/search/groups_4.js +++ b/Doc/html/search/groups_4.js @@ -1,5 +1,4 @@ var searchData= [ - ['encoder_20tools_0',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], - ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]] + ['error_20handler_20defines_0',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]] ]; diff --git a/Doc/html/search/groups_6.js b/Doc/html/search/groups_6.js index 451771a..8371fc8 100644 --- a/Doc/html/search/groups_6.js +++ b/Doc/html/search/groups_6.js @@ -1,9 +1,7 @@ var searchData= [ - ['general_20tools_0',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], - ['general_20tools_1',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]], - ['genetic_20configs_2',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]], - ['genetic_20optimizer_3',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]], - ['gpio_20tools_4',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], - ['gpio_20trace_20defines_5',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]] + ['general_20tools_0',['General Tools',['../group___m_y_l_i_b_s___t_o_o_l_s.html',1,'']]], + ['genetic_20configs_1',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]], + ['genetic_20optimizer_2',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]], + ['gpio_20trace_20defines_3',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]] ]; diff --git a/Doc/html/search/groups_8.js b/Doc/html/search/groups_8.js index 8230248..7e3f7d8 100644 --- a/Doc/html/search/groups_8.js +++ b/Doc/html/search/groups_8.js @@ -1,4 +1,5 @@ var searchData= [ - ['init_20defines_0',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines']]] + ['libraries_20configs_0',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]], + ['libs_1',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]] ]; diff --git a/Doc/html/search/groups_9.js b/Doc/html/search/groups_9.js index 2fc3244..b997f53 100644 --- a/Doc/html/search/groups_9.js +++ b/Doc/html/search/groups_9.js @@ -1,6 +1,5 @@ var searchData= [ - ['led_20tools_0',['LED tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'']]], - ['libraries_20configs_1',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]], - ['libs_2',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]] + ['measurement_0',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], + ['my_20libs_1',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]] ]; diff --git a/Doc/html/search/groups_a.js b/Doc/html/search/groups_a.js index b997f53..8bb1ce3 100644 --- a/Doc/html/search/groups_a.js +++ b/Doc/html/search/groups_a.js @@ -1,5 +1,4 @@ var searchData= [ - ['measurement_0',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], - ['my_20libs_1',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]] + ['optimizer_0',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]] ]; diff --git a/Doc/html/search/groups_b.js b/Doc/html/search/groups_b.js index 9094ace..1e14eaa 100644 --- a/Doc/html/search/groups_b.js +++ b/Doc/html/search/groups_b.js @@ -1,5 +1,4 @@ var searchData= [ - ['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], - ['optimizer_1',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]] + ['rtt_20buffer_0',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]] ]; diff --git a/Doc/html/search/groups_c.js b/Doc/html/search/groups_c.js index f960938..c4ee97e 100644 --- a/Doc/html/search/groups_c.js +++ b/Doc/html/search/groups_c.js @@ -1,5 +1,4 @@ var searchData= [ - ['peripheral_0',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]], - ['pwm_20oc_20channels_20tools_1',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]] + ['serial_20trace_20defines_0',['Serial trace defines',['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'']]] ]; diff --git a/Doc/html/search/groups_d.js b/Doc/html/search/groups_d.js index 1e14eaa..6f8270a 100644 --- a/Doc/html/search/groups_d.js +++ b/Doc/html/search/groups_d.js @@ -1,4 +1,9 @@ var searchData= [ - ['rtt_20buffer_0',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]] + ['time_20measurement_0',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], + ['tools_1',['Tools',['../group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.html',1,'Debug Tools'],['../group___m_y_l_i_b_s___t_o_o_l_s.html',1,'General Tools']]], + ['trace_20configs_2',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], + ['trace_20defines_3',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], + ['trace_20defines_4',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], + ['trackers_20defines_5',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]] ]; diff --git a/Doc/html/search/groups_e.js b/Doc/html/search/groups_e.js index 4b963a4..a12cb46 100644 --- a/Doc/html/search/groups_e.js +++ b/Doc/html/search/groups_e.js @@ -1,6 +1,4 @@ var searchData= [ - ['serial_20trace_20defines_0',['Serial trace defines',['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'']]], - ['spi_20tools_1',['SPI Tools',['../group___m_y___l_i_b_s___s_p_i.html',1,'']]], - ['switch_20tools_2',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]] + ['utils_20defines_0',['Utils defines',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'']]] ]; diff --git a/Doc/html/search/groups_f.js b/Doc/html/search/groups_f.js index dcdcef1..a12cb46 100644 --- a/Doc/html/search/groups_f.js +++ b/Doc/html/search/groups_f.js @@ -1,11 +1,4 @@ var searchData= [ - ['tim_20tools_0',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], - ['time_20measurement_1',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]], - ['tools_2',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]], - ['tools_3',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], - ['trace_20configs_4',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], - ['trace_20defines_5',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], - ['trace_20defines_6',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], - ['trackers_20defines_7',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]] + ['utils_20defines_0',['Utils defines',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html',1,'']]] ]; diff --git a/Doc/html/search/pages_0.js b/Doc/html/search/pages_0.js index 04631a1..999ec81 100644 --- a/Doc/html/search/pages_0.js +++ b/Doc/html/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['gpio_20my_5flibs_5fgpio_0',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]] + ['extendedlibs_0',['Обзор <span class="tt">ExtendedLibs</span>',['../index.html',1,'']]] ]; diff --git a/Doc/html/search/pages_1.js b/Doc/html/search/pages_1.js index c38a7d1..aa8489c 100644 --- a/Doc/html/search/pages_1.js +++ b/Doc/html/search/pages_1.js @@ -1,9 +1,6 @@ var searchData= [ - ['my_5flibs_5fgpio_0',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], - ['my_5flibs_5fspi_1',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], - ['my_5flibs_5ftim_2',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['my_5flibs_5fuart_3',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]], - ['mylibs_4',['MyLibs',['../index.html',1,'']]], - ['mylibs_5fdefines_5',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]] + ['mylibs_20mylibs_5ftools_0',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]], + ['mylibs_5fdebug_5ftools_1',['Отладка* (<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>)',['../index.html#отладка-ref-mylibs_debug_tools',1,'']]], + ['mylibs_5ftools_2',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]] ]; diff --git a/Doc/html/search/pages_2.js b/Doc/html/search/pages_2.js index 6fc01ef..1668022 100644 --- a/Doc/html/search/pages_2.js +++ b/Doc/html/search/pages_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['spi_20my_5flibs_5fspi_0',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]] + ['библиотеки_0',['Структура библиотеки',['../index.html#структура-библиотеки',1,'']]] ]; diff --git a/Doc/html/search/pages_3.js b/Doc/html/search/pages_3.js index 8cbc609..81090ed 100644 --- a/Doc/html/search/pages_3.js +++ b/Doc/html/search/pages_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['trace_0',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]] + ['возможности_0',['Основные возможности',['../index.html#основные-возможности',1,'']]] ]; diff --git a/Doc/html/search/pages_4.js b/Doc/html/search/pages_4.js index ba35ec5..a171128 100644 --- a/Doc/html/search/pages_4.js +++ b/Doc/html/search/pages_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['uart_20my_5flibs_5fuart_0',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]] + ['инструкция_20по_20подключению_0',['Инструкция по подключению',['../index.html#инструкция-по-подключению',1,'']]] ]; diff --git a/Doc/html/search/pages_5.js b/Doc/html/search/pages_5.js index 205b15e..a10fe64 100644 --- a/Doc/html/search/pages_5.js +++ b/Doc/html/search/pages_5.js @@ -1,4 +1,7 @@ var searchData= [ - ['возможности_0',['Основные возможности',['../index.html#features',1,'']]] + ['обзор_20extendedlibs_0',['Обзор <span class="tt">ExtendedLibs</span>',['../index.html',1,'']]], + ['общие_20утилиты_20mylibs_20mylibs_5ftools_1',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]], + ['основные_20возможности_2',['Основные возможности',['../index.html#основные-возможности',1,'']]], + ['отладка_20mylibs_5fdebug_5ftools_3',['Отладка* (<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>)',['../index.html#отладка-ref-mylibs_debug_tools',1,'']]] ]; diff --git a/Doc/html/search/pages_6.js b/Doc/html/search/pages_6.js index 4f064c9..7a11d01 100644 --- a/Doc/html/search/pages_6.js +++ b/Doc/html/search/pages_6.js @@ -1,4 +1,5 @@ var searchData= [ - ['использование_0',['Использование',['../index.html#usage_basic',1,'']]] + ['подключению_0',['Инструкция по подключению',['../index.html#инструкция-по-подключению',1,'']]], + ['по_20подключению_1',['Инструкция по подключению',['../index.html#инструкция-по-подключению',1,'']]] ]; diff --git a/Doc/html/search/pages_7.js b/Doc/html/search/pages_7.js index 09baad2..ad45139 100644 --- a/Doc/html/search/pages_7.js +++ b/Doc/html/search/pages_7.js @@ -1,7 +1,4 @@ var searchData= [ - ['модуль_20таймеров_20my_5flibs_5ftim_0',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['модуль_20gpio_20my_5flibs_5fgpio_1',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], - ['модуль_20spi_20my_5flibs_5fspi_2',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]], - ['модуль_20uart_20my_5flibs_5fuart_3',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]] + ['структура_20библиотеки_0',['Структура библиотеки',['../index.html#структура-библиотеки',1,'']]] ]; diff --git a/Doc/html/search/pages_8.js b/Doc/html/search/pages_8.js index ca20af9..5d6e822 100644 --- a/Doc/html/search/pages_8.js +++ b/Doc/html/search/pages_8.js @@ -1,6 +1,4 @@ var searchData= [ - ['обзор_0',['Обзор',['../index.html#overview',1,'']]], - ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], - ['основные_20возможности_2',['Основные возможности',['../index.html#features',1,'']]] + ['утилиты_20mylibs_20mylibs_5ftools_0',['Общие утилиты MyLibs (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-mylibs-ref-mylibs_tools',1,'']]] ]; diff --git a/Doc/html/search/pages_9.js b/Doc/html/search/pages_9.js index 82a23b2..3431df9 100644 --- a/Doc/html/search/pages_9.js +++ b/Doc/html/search/pages_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['проекта_0',['Структура проекта',['../index.html#structure',1,'']]] + ['трассировка_20trace_0',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#трассировка-ref-trace',1,'']]] ]; diff --git a/Doc/html/search/pages_a.js b/Doc/html/search/pages_a.js index dd4f424..6ac25da 100644 --- a/Doc/html/search/pages_a.js +++ b/Doc/html/search/pages_a.js @@ -1,4 +1,4 @@ var searchData= [ - ['структура_20проекта_0',['Структура проекта',['../index.html#structure',1,'']]] + ['утилиты_20mylibs_5ftools_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___t_o_o_l_s.html">General Tools</a>)',['../index.html#общие-утилиты-ref-mylibs_tools',1,'']]] ]; diff --git a/Doc/html/search/pages_b.js b/Doc/html/search/pages_b.js index 25680da..e816649 100644 --- a/Doc/html/search/pages_b.js +++ b/Doc/html/search/pages_b.js @@ -1,5 +1,4 @@ var searchData= [ - ['трассировка_20trace_0',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]], - ['таймеров_20my_5flibs_5ftim_1',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]] + ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#общие-утилиты-ref-MYLIBS_TOOLS',1,'']]] ]; diff --git a/Doc/html/search/pages_c.js b/Doc/html/search/pages_c.js index f69cabe..ad45139 100644 --- a/Doc/html/search/pages_c.js +++ b/Doc/html/search/pages_c.js @@ -1,4 +1,4 @@ var searchData= [ - ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]] + ['структура_20библиотеки_0',['Структура библиотеки',['../index.html#структура-библиотеки',1,'']]] ]; diff --git a/Doc/html/search/pages_d.js b/Doc/html/search/pages_d.js new file mode 100644 index 0000000..de6980d --- /dev/null +++ b/Doc/html/search/pages_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['таймеров_20my_5flibs_5ftim_0',['Модуль таймеров MY_LIBS_TIM',['../index.html#tim_module',1,'']]] +]; diff --git a/Doc/html/search/pages_e.js b/Doc/html/search/pages_e.js new file mode 100644 index 0000000..e816649 --- /dev/null +++ b/Doc/html/search/pages_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#общие-утилиты-ref-MYLIBS_TOOLS',1,'']]] +]; diff --git a/Doc/html/search/pages_f.js b/Doc/html/search/pages_f.js new file mode 100644 index 0000000..e816649 --- /dev/null +++ b/Doc/html/search/pages_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#общие-утилиты-ref-MYLIBS_TOOLS',1,'']]] +]; diff --git a/Doc/html/search/searchdata.js b/Doc/html/search/searchdata.js index 457d6e9..0b91f07 100644 --- a/Doc/html/search/searchdata.js +++ b/Doc/html/search/searchdata.js @@ -1,14 +1,12 @@ var indexSectionsWithContent = { - 0: "abcdefghilmnoprstuвимопсту", - 1: "bghrstu", + 0: "abcdefghilmnoprstuбвиопсу", + 1: "bghrsu", 2: "bgmt", - 3: "bghrstu", - 4: "cdeghilmnprst", - 5: "gt", - 6: "lt", - 7: "abcdefghilmoprstu", - 8: "gmstuвимопсту" + 3: "bghr", + 4: "cdghilmnprst", + 5: "abcdefghlmorstu", + 6: "emбвиопсу" }; var indexSectionNames = @@ -18,10 +16,8 @@ var indexSectionNames = 2: "files", 3: "functions", 4: "variables", - 5: "enums", - 6: "enumvalues", - 7: "groups", - 8: "pages" + 5: "groups", + 6: "pages" }; var indexSectionLabels = @@ -31,9 +27,7 @@ var indexSectionLabels = 2: "Files", 3: "Functions", 4: "Variables", - 5: "Enumerations", - 6: "Enumerator", - 7: "Modules", - 8: "Pages" + 5: "Modules", + 6: "Pages" }; diff --git a/Doc/html/search/variables_0.js b/Doc/html/search/variables_0.js index d01d6ca..7e3a1d8 100644 --- a/Doc/html/search/variables_0.js +++ b/Doc/html/search/variables_0.js @@ -1,10 +1,7 @@ var searchData= [ ['cand_5findex_0',['cand_index',['../struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc',1,'GenOptimizer_t']]], - ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df',1,'GenOptimizer_t']]], - ['channels_2',['channels',['../struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6',1,'BenchTime_t']]], - ['clk_5fgpio_5falternagefunc_3',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]], - ['clk_5fgpiox_4',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]], - ['clk_5fpin_5',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]], - ['count_6',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]] + ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#af0161e7c0b6ab691b8b59d522808f947',1,'GenOptimizer_t']]], + ['channels_2',['channels',['../struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34',1,'BenchTime_t']]], + ['count_3',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]] ]; diff --git a/Doc/html/search/variables_1.js b/Doc/html/search/variables_1.js index 3bb10dc..d1fd3e4 100644 --- a/Doc/html/search/variables_1.js +++ b/Doc/html/search/variables_1.js @@ -1,6 +1,4 @@ var searchData= [ - ['data_0',['data',['../struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a',1,'RTT_FlashHeader_t']]], - ['dma_5fchannel_5fx_1',['DMA_CHANNEL_X',['../struct_s_p_i___settings_type_def.html#aa0edaa145076d2383b3e0095d156d474',1,'SPI_SettingsTypeDef::DMA_CHANNEL_X'],['../struct_u_a_r_t___settings_type_def.html#a15ce92b03f7f189bfbe1ab88a5f94d19',1,'UART_SettingsTypeDef::DMA_CHANNEL_X']]], - ['dmachannel_2',['DMAChannel',['../struct_s_p_i___settings_type_def.html#a3cfd9469b0617a68bbd2a161ba06bb95',1,'SPI_SettingsTypeDef::DMAChannel'],['../struct_u_a_r_t___settings_type_def.html#a1ecc9ac6a1d2747ade56770cbab6a613',1,'UART_SettingsTypeDef::DMAChannel']]] + ['data_0',['data',['../struct_r_t_t___flash_header__t.html#a1100df39b0eccb835946f4c13de23b4e',1,'RTT_FlashHeader_t']]] ]; diff --git a/Doc/html/search/variables_2.js b/Doc/html/search/variables_2.js index 677b54d..8d3723a 100644 --- a/Doc/html/search/variables_2.js +++ b/Doc/html/search/variables_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['encoder_5fdiff_0',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], - ['encoder_5fshdw_1',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]] + ['gen_5findex_0',['gen_index',['../struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c',1,'GenOptimizer_t']]], + ['gen_5fmut_1',['gen_mut',['../struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1',1,'GenOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_3.js b/Doc/html/search/variables_3.js index aff98e3..3e0328d 100644 --- a/Doc/html/search/variables_3.js +++ b/Doc/html/search/variables_3.js @@ -1,11 +1,4 @@ var searchData= [ - ['gen_5findex_0',['gen_index',['../struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c',1,'GenOptimizer_t']]], - ['gen_5fmut_1',['gen_mut',['../struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1',1,'GenOptimizer_t']]], - ['gpio_5fpin_5frx_2',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]], - ['gpio_5fpin_5fsw_3',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti1_4',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5fti2_5',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]], - ['gpio_5fpin_5ftx_6',['GPIO_PIN_TX',['../struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef',1,'UART_SettingsTypeDef']]], - ['gpiox_7',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef::GPIOx'],['../struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f',1,'UART_SettingsTypeDef::GPIOx']]] + ['hbt_0',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]] ]; diff --git a/Doc/html/search/variables_4.js b/Doc/html/search/variables_4.js index 182e697..3cfd1f9 100644 --- a/Doc/html/search/variables_4.js +++ b/Doc/html/search/variables_4.js @@ -1,7 +1,4 @@ var searchData= [ - ['hbt_0',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]], - ['hspi_1',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]], - ['htim_2',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]], - ['huart_3',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]] + ['is_5frunning_0',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]] ]; diff --git a/Doc/html/search/variables_5.js b/Doc/html/search/variables_5.js index 3cfd1f9..4238443 100644 --- a/Doc/html/search/variables_5.js +++ b/Doc/html/search/variables_5.js @@ -1,4 +1,6 @@ var searchData= [ - ['is_5frunning_0',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]] + ['last_5fticks_0',['last_ticks',['../struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0',1,'BenchTimeStats_t']]], + ['loss_1',['loss',['../struct_gen_optimizer__t.html#ae74a211c5ab6d58ffc147bb65e8fdafa',1,'GenOptimizer_t']]], + ['lr_2',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/variables_6.js b/Doc/html/search/variables_6.js index c8e17d1..a383dcc 100644 --- a/Doc/html/search/variables_6.js +++ b/Doc/html/search/variables_6.js @@ -1,10 +1,6 @@ var searchData= [ - ['last_5fticks_0',['last_ticks',['../struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0',1,'BenchTimeStats_t']]], - ['led_5factivelvl_1',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], - ['led_5fperiod_2',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], - ['led_5fpin_3',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], - ['led_5fport_4',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], - ['loss_5',['loss',['../struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73',1,'GenOptimizer_t']]], - ['lr_6',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] + ['max_5fticks_0',['max_ticks',['../struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c',1,'BenchTimeStats_t']]], + ['min_5fticks_1',['min_ticks',['../struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8',1,'BenchTimeStats_t']]], + ['mutation_5famp_2',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_7.js b/Doc/html/search/variables_7.js index eac5a24..88c43fd 100644 --- a/Doc/html/search/variables_7.js +++ b/Doc/html/search/variables_7.js @@ -1,12 +1,6 @@ var searchData= [ - ['max_5fticks_0',['max_ticks',['../struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c',1,'BenchTimeStats_t']]], - ['min_5fticks_1',['min_ticks',['../struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8',1,'BenchTimeStats_t']]], - ['miso_5fgpio_5falternagefunc_2',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]], - ['miso_5fgpiox_3',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]], - ['miso_5fpin_4',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpio_5falternagefunc_5',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]], - ['mosi_5fgpiox_6',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]], - ['mosi_5fpin_7',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]], - ['mutation_5famp_8',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]] + ['n_5fbest_0',['n_best',['../struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9',1,'GenOptimizer_t']]], + ['n_5fcand_1',['n_cand',['../struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9',1,'GenOptimizer_t']]], + ['n_5fparams_2',['n_params',['../struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5',1,'GenOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_8.js b/Doc/html/search/variables_8.js index 88c43fd..7d04971 100644 --- a/Doc/html/search/variables_8.js +++ b/Doc/html/search/variables_8.js @@ -1,6 +1,5 @@ var searchData= [ - ['n_5fbest_0',['n_best',['../struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9',1,'GenOptimizer_t']]], - ['n_5fcand_1',['n_cand',['../struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9',1,'GenOptimizer_t']]], - ['n_5fparams_2',['n_params',['../struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5',1,'GenOptimizer_t']]] + ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], + ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/variables_9.js b/Doc/html/search/variables_9.js index 7d04971..29cfada 100644 --- a/Doc/html/search/variables_9.js +++ b/Doc/html/search/variables_9.js @@ -1,5 +1,8 @@ var searchData= [ - ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], - ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]] + ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]], + ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]], + ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]], + ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]], + ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/variables_a.js b/Doc/html/search/variables_a.js index 29cfada..599b505 100644 --- a/Doc/html/search/variables_a.js +++ b/Doc/html/search/variables_a.js @@ -1,8 +1,8 @@ var searchData= [ - ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]], - ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]], - ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]], - ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]], - ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]] + ['size_0',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]], + ['sorted_5fidx_1',['sorted_idx',['../struct_gen_optimizer__t.html#a473a62c538392b7735d660f303377320',1,'GenOptimizer_t']]], + ['stability_2',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]], + ['start_5ftick_3',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]], + ['stats_4',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]] ]; diff --git a/Doc/html/search/variables_b.js b/Doc/html/search/variables_b.js index 928694e..f83ad97 100644 --- a/Doc/html/search/variables_b.js +++ b/Doc/html/search/variables_b.js @@ -1,25 +1,6 @@ var searchData= [ - ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]], - ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]], - ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]], - ['size_3',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]], - ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]], - ['sorted_5fidx_5',['sorted_idx',['../struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12',1,'GenOptimizer_t']]], - ['sslaveconfig_6',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], - ['stability_7',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]], - ['start_5ftick_8',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]], - ['state_9',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], - ['stats_10',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]], - ['stickbaseprescaler_11',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], - ['stickbaseus_12',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], - ['stimahbfreqmhz_13',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], - ['stimfreqhz_14',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], - ['stimmode_15',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], - ['sw_16',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], - ['sw_5factivelvl_17',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], - ['sw_5ffilterdelay_18',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], - ['sw_5fpin_19',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], - ['sw_5fport_20',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], - ['sw_5fprevstate_21',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]] + ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]], + ['tick_5fperiod_1',['tick_period',['../struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd',1,'BenchTimeChannel_t']]], + ['total_5fticks_2',['total_ticks',['../struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec',1,'BenchTimeStats_t']]] ]; diff --git a/Doc/html/struct_bench_time__t-members.html b/Doc/html/struct_bench_time__t-members.html index 434af22..e01d476 100644 --- a/Doc/html/struct_bench_time__t-members.html +++ b/Doc/html/struct_bench_time__t-members.html @@ -103,7 +103,7 @@ $(function(){initNavTree('struct_bench_time__t.html','',''); });

    This is the complete list of members for BenchTime_t, including all inherited members.

    - +
    channelsBenchTime_t
    channelsBenchTime_t
    diff --git a/Doc/html/struct_bench_time__t.html b/Doc/html/struct_bench_time__t.html index 440831d..2023713 100644 --- a/Doc/html/struct_bench_time__t.html +++ b/Doc/html/struct_bench_time__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_bench_time__t.html','','struct_bench_time__t-me
    -
    BenchTime_t Struct Reference
    +
    BenchTime_t Struct Reference
    @@ -121,34 +121,34 @@ $(function(){initNavTree('struct_bench_time__t.html','','struct_bench_time__t-me - - + +

    Public Attributes

    BenchTimeChannel_t channels [16]
     Каналы измерения
    BenchTimeChannel_t channels [BENCH_TIME_MAX_CHANNELS]
     Каналы измерения

    Detailed Description

    Основная структура менеджера измерений

    -

    Definition at line 102 of file bench_time.h.

    +

    Definition at line 101 of file bench_time.h.

    Member Data Documentation

    - -

    ◆ channels

    + +

    ◆ channels

    - +
    BenchTimeChannel_t BenchTime_t::channels[16]BenchTimeChannel_t BenchTime_t::channels[BENCH_TIME_MAX_CHANNELS]

    Каналы измерения

    -

    Definition at line 103 of file bench_time.h.

    +

    Definition at line 102 of file bench_time.h.


    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    diff --git a/Doc/html/struct_bench_time__t.js b/Doc/html/struct_bench_time__t.js index 7f4e613..4b8eff3 100644 --- a/Doc/html/struct_bench_time__t.js +++ b/Doc/html/struct_bench_time__t.js @@ -1,4 +1,4 @@ var struct_bench_time__t = [ - [ "channels", "struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6", null ] + [ "channels", "struct_bench_time__t.html#a51376c064bdcffba23cf65d0733e3d34", null ] ]; \ No newline at end of file diff --git a/Doc/html/struct_bench_time_channel__t.html b/Doc/html/struct_bench_time_channel__t.html index 09d2745..a35b493 100644 --- a/Doc/html/struct_bench_time_channel__t.html +++ b/Doc/html/struct_bench_time_channel__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_bench_time_channel__t.html','','struct_bench_ti
    -
    BenchTimeChannel_t Struct Reference
    +
    BenchTimeChannel_t Struct Reference
    @@ -131,7 +131,7 @@ Public Attributes

    Detailed Description

    Структура канала измерения

    -

    Definition at line 92 of file bench_time.h.

    +

    Definition at line 91 of file bench_time.h.

    Member Data Documentation

    ◆ start_tick

    @@ -147,7 +147,7 @@ Public Attributes

    Время старта в тиках

    -

    Definition at line 93 of file bench_time.h.

    +

    Definition at line 92 of file bench_time.h.

    @@ -165,7 +165,7 @@ Public Attributes

    Период тиков для переполнения

    -

    Definition at line 94 of file bench_time.h.

    +

    Definition at line 93 of file bench_time.h.

    @@ -183,7 +183,7 @@ Public Attributes

    Флаг активного измерения

    -

    Definition at line 95 of file bench_time.h.

    +

    Definition at line 94 of file bench_time.h.

    @@ -201,12 +201,12 @@ Public Attributes

    Статистика измерений

    -

    Definition at line 96 of file bench_time.h.

    +

    Definition at line 95 of file bench_time.h.


    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    diff --git a/Doc/html/struct_bench_time_stats__t.html b/Doc/html/struct_bench_time_stats__t.html index 7df43c4..a8e288b 100644 --- a/Doc/html/struct_bench_time_stats__t.html +++ b/Doc/html/struct_bench_time_stats__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_bench_time_stats__t.html','','struct_bench_time
    -
    BenchTimeStats_t Struct Reference
    +
    BenchTimeStats_t Struct Reference
    @@ -122,7 +122,7 @@ Public Attributes

    Detailed Description

    Структура статистики измерений

    -

    Definition at line 81 of file bench_time.h.

    +

    Definition at line 80 of file bench_time.h.

    Member Data Documentation

    ◆ min_ticks

    @@ -138,7 +138,7 @@ Public Attributes

    Минимальное время в тиках

    -

    Definition at line 82 of file bench_time.h.

    +

    Definition at line 81 of file bench_time.h.

    @@ -156,7 +156,7 @@ Public Attributes

    Максимальное время в тиках

    -

    Definition at line 83 of file bench_time.h.

    +

    Definition at line 82 of file bench_time.h.

    @@ -174,7 +174,7 @@ Public Attributes

    Суммарное время в тиках

    -

    Definition at line 84 of file bench_time.h.

    +

    Definition at line 83 of file bench_time.h.

    @@ -192,7 +192,7 @@ Public Attributes

    Количество измерений

    -

    Definition at line 85 of file bench_time.h.

    +

    Definition at line 84 of file bench_time.h.

    @@ -210,12 +210,12 @@ Public Attributes

    Последнее измеренное время

    -

    Definition at line 86 of file bench_time.h.

    +

    Definition at line 85 of file bench_time.h.


    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
    diff --git a/Doc/html/struct_gen_optimizer__t-members.html b/Doc/html/struct_gen_optimizer__t-members.html index df5e548..c935cda 100644 --- a/Doc/html/struct_gen_optimizer__t-members.html +++ b/Doc/html/struct_gen_optimizer__t-members.html @@ -104,15 +104,15 @@ $(function(){initNavTree('struct_gen_optimizer__t.html','',''); });

    This is the complete list of members for GenOptimizer_t, including all inherited members.

    - + - + - +
    cand_indexGenOptimizer_t
    candidatesGenOptimizer_t
    candidatesGenOptimizer_t
    gen_indexGenOptimizer_t
    gen_mutGenOptimizer_t
    lossGenOptimizer_t
    lossGenOptimizer_t
    mutation_ampGenOptimizer_t
    n_bestGenOptimizer_t
    n_candGenOptimizer_t
    n_paramsGenOptimizer_t
    sorted_idxGenOptimizer_t
    sorted_idxGenOptimizer_t
    stabilityGenOptimizer_t
    diff --git a/Doc/html/struct_gen_optimizer__t.html b/Doc/html/struct_gen_optimizer__t.html index 2ef2f85..0d472e2 100644 --- a/Doc/html/struct_gen_optimizer__t.html +++ b/Doc/html/struct_gen_optimizer__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_gen_optimizer__t.html','','struct_gen_optimizer
    -
    GenOptimizer_t Struct Reference
    +
    GenOptimizer_t Struct Reference
    @@ -124,17 +124,17 @@ Public Attributes  Индекс популяции
    float gen_mut  Амплитуда мутации у текущей популяции
    -float loss [100] - Loss для каждого кандидата
    -float candidates [100][20] - Параметры кандидатов
    -uint16_t sorted_idx [100] - Индексы отсортированных кандидатов
    +float loss [GEN_MAX_CANDIDATES] + Loss для каждого кандидата
    +float candidates [GEN_MAX_CANDIDATES][GEN_MAX_PARAMS] + Параметры кандидатов
    +uint16_t sorted_idx [GEN_MAX_CANDIDATES] + Индексы отсортированных кандидатов

    Detailed Description

    Структура эволюционного оптимизатора

    -

    Definition at line 102 of file gen_optimizer.h.

    +

    Definition at line 101 of file gen_optimizer.h.

    Member Data Documentation

    ◆ stability

    @@ -150,7 +150,7 @@ Public Attributes

    Коэффициент насколько стабильная популяция (0..1)(n_cand)

    -

    Definition at line 103 of file gen_optimizer.h.

    +

    Definition at line 102 of file gen_optimizer.h.

    @@ -168,7 +168,7 @@ Public Attributes

    Количество параметров

    -

    Definition at line 105 of file gen_optimizer.h.

    +

    Definition at line 104 of file gen_optimizer.h.

    @@ -186,7 +186,7 @@ Public Attributes

    Количество кандидатов в популяции

    -

    Definition at line 106 of file gen_optimizer.h.

    +

    Definition at line 105 of file gen_optimizer.h.

    @@ -204,7 +204,7 @@ Public Attributes

    Количество лучших, усредняемых

    -

    Definition at line 107 of file gen_optimizer.h.

    +

    Definition at line 106 of file gen_optimizer.h.

    @@ -222,7 +222,7 @@ Public Attributes

    Амплитуда мутации (0..1)

    -

    Definition at line 108 of file gen_optimizer.h.

    +

    Definition at line 107 of file gen_optimizer.h.

    @@ -240,7 +240,7 @@ Public Attributes

    Индекс текущего кандидата

    -

    Definition at line 110 of file gen_optimizer.h.

    +

    Definition at line 109 of file gen_optimizer.h.

    @@ -258,7 +258,7 @@ Public Attributes

    Индекс популяции

    -

    Definition at line 111 of file gen_optimizer.h.

    +

    Definition at line 110 of file gen_optimizer.h.

    @@ -276,66 +276,66 @@ Public Attributes

    Амплитуда мутации у текущей популяции

    -

    Definition at line 114 of file gen_optimizer.h.

    +

    Definition at line 113 of file gen_optimizer.h.

    - -

    ◆ loss

    + +

    ◆ loss

    - +
    float GenOptimizer_t::loss[100]float GenOptimizer_t::loss[GEN_MAX_CANDIDATES]

    Loss для каждого кандидата

    -

    Definition at line 116 of file gen_optimizer.h.

    +

    Definition at line 115 of file gen_optimizer.h.

    - -

    ◆ candidates

    + +

    ◆ candidates

    - +
    float GenOptimizer_t::candidates[100][20]float GenOptimizer_t::candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]

    Параметры кандидатов

    -

    Definition at line 117 of file gen_optimizer.h.

    +

    Definition at line 116 of file gen_optimizer.h.

    - -

    ◆ sorted_idx

    + +

    ◆ sorted_idx

    - +
    uint16_t GenOptimizer_t::sorted_idx[100]uint16_t GenOptimizer_t::sorted_idx[GEN_MAX_CANDIDATES]

    Индексы отсортированных кандидатов

    -

    Definition at line 118 of file gen_optimizer.h.

    +

    Definition at line 117 of file gen_optimizer.h.


    The documentation for this struct was generated from the following file: diff --git a/Doc/html/struct_gen_optimizer__t.js b/Doc/html/struct_gen_optimizer__t.js index 1a11730..a7369c4 100644 --- a/Doc/html/struct_gen_optimizer__t.js +++ b/Doc/html/struct_gen_optimizer__t.js @@ -8,7 +8,7 @@ var struct_gen_optimizer__t = [ "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 ] ]; \ No newline at end of file diff --git a/Doc/html/struct_h_f___stack_frame__t.html b/Doc/html/struct_h_f___stack_frame__t.html index b22e526..5b52ce3 100644 --- a/Doc/html/struct_h_f___stack_frame__t.html +++ b/Doc/html/struct_h_f___stack_frame__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_h_f___stack_frame__t.html','','struct_h_f___sta
    -
    HF_StackFrame_t Struct Reference
    +
    HF_StackFrame_t Struct Reference
    @@ -129,7 +129,7 @@ Public Attributes

    Контекст стек-фрейма процессора при HardFault.

    Сохраняет регистры R0-R3, R12, LR, PC, PSR для последующего анализа.

    -

    Definition at line 476 of file trace.h.

    +

    Definition at line 475 of file trace.h.

    Member Data Documentation

    ◆ r0

    @@ -145,7 +145,7 @@ Public Attributes

    Регистр R0.

    -

    Definition at line 477 of file trace.h.

    +

    Definition at line 476 of file trace.h.

    @@ -163,7 +163,7 @@ Public Attributes

    Регистр R1.

    -

    Definition at line 478 of file trace.h.

    +

    Definition at line 477 of file trace.h.

    @@ -181,7 +181,7 @@ Public Attributes

    Регистр R2.

    -

    Definition at line 479 of file trace.h.

    +

    Definition at line 478 of file trace.h.

    @@ -199,7 +199,7 @@ Public Attributes

    Регистр R3.

    -

    Definition at line 480 of file trace.h.

    +

    Definition at line 479 of file trace.h.

    @@ -217,7 +217,7 @@ Public Attributes

    Регистр R12.

    -

    Definition at line 481 of file trace.h.

    +

    Definition at line 480 of file trace.h.

    @@ -235,7 +235,7 @@ Public Attributes

    Link Register.

    -

    Definition at line 482 of file trace.h.

    +

    Definition at line 481 of file trace.h.

    @@ -253,7 +253,7 @@ Public Attributes

    Program Counter.

    -

    Definition at line 483 of file trace.h.

    +

    Definition at line 482 of file trace.h.

    @@ -271,12 +271,12 @@ Public Attributes

    Program Status Register.

    -

    Definition at line 484 of file trace.h.

    +

    Definition at line 483 of file trace.h.


    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/trace.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/trace.h
    diff --git a/Doc/html/struct_r_t_t___flash_header__t-members.html b/Doc/html/struct_r_t_t___flash_header__t-members.html index f48c46e..fdc7a2b 100644 --- a/Doc/html/struct_r_t_t___flash_header__t-members.html +++ b/Doc/html/struct_r_t_t___flash_header__t-members.html @@ -103,7 +103,7 @@ $(function(){initNavTree('struct_r_t_t___flash_header__t.html','',''); });

    This is the complete list of members for RTT_FlashHeader_t, including all inherited members.

    - +
    dataRTT_FlashHeader_t
    dataRTT_FlashHeader_t
    sizeRTT_FlashHeader_t
    tagRTT_FlashHeader_t
    diff --git a/Doc/html/struct_r_t_t___flash_header__t.html b/Doc/html/struct_r_t_t___flash_header__t.html index 2933e44..a9e6552 100644 --- a/Doc/html/struct_r_t_t___flash_header__t.html +++ b/Doc/html/struct_r_t_t___flash_header__t.html @@ -97,7 +97,7 @@ $(function(){initNavTree('struct_r_t_t___flash_header__t.html','','struct_r_t_t_
    -
    RTT_FlashHeader_t Struct Reference
    +
    RTT_FlashHeader_t Struct Reference
    @@ -112,13 +112,13 @@ Public Attributes  Уникальный идентификатор буфера
    uint32_t size  Размер данных
    -char data [1024] - Буфер RTT.
    +char data [RTT_FLASH_BUFFER_SIZE] + Буфер RTT.

    Detailed Description

    Структура RTT, которая будет положена в Flash.

    -

    Definition at line 193 of file trace.h.

    +

    Definition at line 192 of file trace.h.

    Member Data Documentation

    ◆ tag

    @@ -134,7 +134,7 @@ Public Attributes

    Уникальный идентификатор буфера

    -

    Definition at line 194 of file trace.h.

    +

    Definition at line 193 of file trace.h.

    @@ -152,30 +152,30 @@ Public Attributes

    Размер данных

    -

    Definition at line 195 of file trace.h.

    +

    Definition at line 194 of file trace.h.

    - -

    ◆ data

    + +

    ◆ data

    - +
    char RTT_FlashHeader_t::data[1024]char RTT_FlashHeader_t::data[RTT_FLASH_BUFFER_SIZE]

    Буфер RTT.

    -

    Definition at line 196 of file trace.h.

    +

    Definition at line 195 of file trace.h.


    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/trace.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/trace.h
    diff --git a/Doc/html/struct_r_t_t___flash_header__t.js b/Doc/html/struct_r_t_t___flash_header__t.js index dc8e11b..b76051e 100644 --- a/Doc/html/struct_r_t_t___flash_header__t.js +++ b/Doc/html/struct_r_t_t___flash_header__t.js @@ -2,5 +2,5 @@ var struct_r_t_t___flash_header__t = [ [ "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 ] ]; \ No newline at end of file diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n-members.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n-members.html new file mode 100644 index 0000000..22103ce --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n-members.html @@ -0,0 +1,122 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_BUFFER_DOWN Member List
    +
    +
    + +

    This is the complete list of members for SEGGER_RTT_BUFFER_DOWN, including all inherited members.

    + + + + + + + +
    Flags (defined in SEGGER_RTT_BUFFER_DOWN)SEGGER_RTT_BUFFER_DOWN
    pBuffer (defined in SEGGER_RTT_BUFFER_DOWN)SEGGER_RTT_BUFFER_DOWN
    RdOff (defined in SEGGER_RTT_BUFFER_DOWN)SEGGER_RTT_BUFFER_DOWN
    SizeOfBuffer (defined in SEGGER_RTT_BUFFER_DOWN)SEGGER_RTT_BUFFER_DOWN
    sName (defined in SEGGER_RTT_BUFFER_DOWN)SEGGER_RTT_BUFFER_DOWN
    WrOff (defined in SEGGER_RTT_BUFFER_DOWN)SEGGER_RTT_BUFFER_DOWN
    +
    +
    + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html new file mode 100644 index 0000000..0faab77 --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.html @@ -0,0 +1,234 @@ + + + + + + + +MyLibs: SEGGER_RTT_BUFFER_DOWN Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_BUFFER_DOWN Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    const char * sName
    char * pBuffer
    unsigned SizeOfBuffer
    volatile unsigned WrOff
    unsigned RdOff
    unsigned Flags
    +

    Detailed Description

    +
    +

    Definition at line 330 of file SEGGER_RTT.h.

    +

    Member Data Documentation

    + +

    ◆ sName

    + +
    +
    + + + + +
    const char* SEGGER_RTT_BUFFER_DOWN::sName
    +
    + +

    Definition at line 331 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ pBuffer

    + +
    +
    + + + + +
    char* SEGGER_RTT_BUFFER_DOWN::pBuffer
    +
    + +

    Definition at line 332 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ SizeOfBuffer

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_BUFFER_DOWN::SizeOfBuffer
    +
    + +

    Definition at line 333 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ WrOff

    + +
    +
    + + + + +
    volatile unsigned SEGGER_RTT_BUFFER_DOWN::WrOff
    +
    + +

    Definition at line 334 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ RdOff

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_BUFFER_DOWN::RdOff
    +
    + +

    Definition at line 335 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ Flags

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_BUFFER_DOWN::Flags
    +
    + +

    Definition at line 336 of file SEGGER_RTT.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT.h
    • +
    +
    +
    + +
    + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p-members.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p-members.html new file mode 100644 index 0000000..78beae4 --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p-members.html @@ -0,0 +1,122 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_BUFFER_UP Member List
    +
    +
    + +

    This is the complete list of members for SEGGER_RTT_BUFFER_UP, including all inherited members.

    + + + + + + + +
    Flags (defined in SEGGER_RTT_BUFFER_UP)SEGGER_RTT_BUFFER_UP
    pBuffer (defined in SEGGER_RTT_BUFFER_UP)SEGGER_RTT_BUFFER_UP
    RdOff (defined in SEGGER_RTT_BUFFER_UP)SEGGER_RTT_BUFFER_UP
    SizeOfBuffer (defined in SEGGER_RTT_BUFFER_UP)SEGGER_RTT_BUFFER_UP
    sName (defined in SEGGER_RTT_BUFFER_UP)SEGGER_RTT_BUFFER_UP
    WrOff (defined in SEGGER_RTT_BUFFER_UP)SEGGER_RTT_BUFFER_UP
    +
    +
    + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html new file mode 100644 index 0000000..061b8b7 --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.html @@ -0,0 +1,234 @@ + + + + + + + +MyLibs: SEGGER_RTT_BUFFER_UP Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_BUFFER_UP Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    const char * sName
    char * pBuffer
    unsigned SizeOfBuffer
    unsigned WrOff
    volatile unsigned RdOff
    unsigned Flags
    +

    Detailed Description

    +
    +

    Definition at line 317 of file SEGGER_RTT.h.

    +

    Member Data Documentation

    + +

    ◆ sName

    + +
    +
    + + + + +
    const char* SEGGER_RTT_BUFFER_UP::sName
    +
    + +

    Definition at line 318 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ pBuffer

    + +
    +
    + + + + +
    char* SEGGER_RTT_BUFFER_UP::pBuffer
    +
    + +

    Definition at line 319 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ SizeOfBuffer

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_BUFFER_UP::SizeOfBuffer
    +
    + +

    Definition at line 320 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ WrOff

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_BUFFER_UP::WrOff
    +
    + +

    Definition at line 321 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ RdOff

    + +
    +
    + + + + +
    volatile unsigned SEGGER_RTT_BUFFER_UP::RdOff
    +
    + +

    Definition at line 322 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ Flags

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_BUFFER_UP::Flags
    +
    + +

    Definition at line 323 of file SEGGER_RTT.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT.h
    • +
    +
    +
    + +
    + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b-members.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b-members.html new file mode 100644 index 0000000..f5f7eb1 --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b-members.html @@ -0,0 +1,121 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_CB Member List
    +
    +
    + +

    This is the complete list of members for SEGGER_RTT_CB, including all inherited members.

    + + + + + + +
    acID (defined in SEGGER_RTT_CB)SEGGER_RTT_CB
    aDown (defined in SEGGER_RTT_CB)SEGGER_RTT_CB
    aUp (defined in SEGGER_RTT_CB)SEGGER_RTT_CB
    MaxNumDownBuffers (defined in SEGGER_RTT_CB)SEGGER_RTT_CB
    MaxNumUpBuffers (defined in SEGGER_RTT_CB)SEGGER_RTT_CB
    +
    +
    + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b.html new file mode 100644 index 0000000..c25d51e --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b.html @@ -0,0 +1,230 @@ + + + + + + + +MyLibs: SEGGER_RTT_CB Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_CB Struct Reference
    +
    +
    +
    Collaboration diagram for SEGGER_RTT_CB:
    +
    +
    + + + + + + + + +

    +Public Attributes

    char acID [16]
    int MaxNumUpBuffers
    int MaxNumDownBuffers
    SEGGER_RTT_BUFFER_UP aUp [SEGGER_RTT_MAX_NUM_UP_BUFFERS]
    SEGGER_RTT_BUFFER_DOWN aDown [SEGGER_RTT_MAX_NUM_DOWN_BUFFERS]
    +

    Detailed Description

    +
    +

    Definition at line 344 of file SEGGER_RTT.h.

    +

    Member Data Documentation

    + +

    ◆ acID

    + +
    +
    + + + + +
    char SEGGER_RTT_CB::acID[16]
    +
    + +

    Definition at line 345 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ MaxNumUpBuffers

    + +
    +
    + + + + +
    int SEGGER_RTT_CB::MaxNumUpBuffers
    +
    + +

    Definition at line 346 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ MaxNumDownBuffers

    + +
    +
    + + + + +
    int SEGGER_RTT_CB::MaxNumDownBuffers
    +
    + +

    Definition at line 347 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ aUp

    + +
    +
    + + + + +
    SEGGER_RTT_BUFFER_UP SEGGER_RTT_CB::aUp[SEGGER_RTT_MAX_NUM_UP_BUFFERS]
    +
    + +

    Definition at line 348 of file SEGGER_RTT.h.

    + +
    +
    + +

    ◆ aDown

    + +
    +
    + + + + +
    SEGGER_RTT_BUFFER_DOWN SEGGER_RTT_CB::aDown[SEGGER_RTT_MAX_NUM_DOWN_BUFFERS]
    +
    + +

    Definition at line 349 of file SEGGER_RTT.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/RTT/SEGGER_RTT.h
    • +
    +
    +
    + +
    + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.map b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.map new file mode 100644 index 0000000..a1fb81e --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.md5 b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.md5 new file mode 100644 index 0000000..ec95669 --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.md5 @@ -0,0 +1 @@ +43312c82f221aa648f652e4f17453ff0 \ No newline at end of file diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.png b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.png new file mode 100644 index 0000000..0163977 Binary files /dev/null and b/Doc/html/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.png differ diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c-members.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c-members.html new file mode 100644 index 0000000..90ef165 --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c-members.html @@ -0,0 +1,121 @@ + + + + + + + +MyLibs: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_PRINTF_DESC Member List
    +
    +
    + +

    This is the complete list of members for SEGGER_RTT_PRINTF_DESC, including all inherited members.

    + + + + + + +
    BufferSize (defined in SEGGER_RTT_PRINTF_DESC)SEGGER_RTT_PRINTF_DESC
    Cnt (defined in SEGGER_RTT_PRINTF_DESC)SEGGER_RTT_PRINTF_DESC
    pBuffer (defined in SEGGER_RTT_PRINTF_DESC)SEGGER_RTT_PRINTF_DESC
    ReturnValue (defined in SEGGER_RTT_PRINTF_DESC)SEGGER_RTT_PRINTF_DESC
    RTTBufferIndex (defined in SEGGER_RTT_PRINTF_DESC)SEGGER_RTT_PRINTF_DESC
    +
    +
    + + + + diff --git a/Doc/html/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html b/Doc/html/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html new file mode 100644 index 0000000..d2aecab --- /dev/null +++ b/Doc/html/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.html @@ -0,0 +1,217 @@ + + + + + + + +MyLibs: SEGGER_RTT_PRINTF_DESC Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MyLibs 1.0 +
    +
    Расширенные библиотеки для STM32
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SEGGER_RTT_PRINTF_DESC Struct Reference
    +
    +
    + + + + + + + +

    +Public Attributes

    char * pBuffer
    unsigned BufferSize
    unsigned Cnt
    int ReturnValue
    unsigned RTTBufferIndex
    +

    Detailed Description

    +
    +

    Definition at line 85 of file SEGGER_RTT_printf.c.

    +

    Member Data Documentation

    + +

    ◆ pBuffer

    + +
    +
    + + + + +
    char* SEGGER_RTT_PRINTF_DESC::pBuffer
    +
    + +

    Definition at line 86 of file SEGGER_RTT_printf.c.

    + +
    +
    + +

    ◆ BufferSize

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_PRINTF_DESC::BufferSize
    +
    + +

    Definition at line 87 of file SEGGER_RTT_printf.c.

    + +
    +
    + +

    ◆ Cnt

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_PRINTF_DESC::Cnt
    +
    + +

    Definition at line 88 of file SEGGER_RTT_printf.c.

    + +
    +
    + +

    ◆ ReturnValue

    + +
    +
    + + + + +
    int SEGGER_RTT_PRINTF_DESC::ReturnValue
    +
    + +

    Definition at line 90 of file SEGGER_RTT_printf.c.

    + +
    +
    + +

    ◆ RTTBufferIndex

    + +
    +
    + + + + +
    unsigned SEGGER_RTT_PRINTF_DESC::RTTBufferIndex
    +
    + +

    Definition at line 92 of file SEGGER_RTT_printf.c.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + +
    + + + + diff --git a/Doc/html/topics.html b/Doc/html/topics.html index 121e67f..729c040 100644 --- a/Doc/html/topics.html +++ b/Doc/html/topics.html @@ -101,41 +101,26 @@ $(function(){initNavTree('topics.html','',''); });
    Here is a list of all topics with brief descriptions:
    -
    [detail level 12345]
    +
    [detail level 1234]
    - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + +
     My LibsВсе используемые MyLibs библиотеки
     ConfigsКонфигурации для библиотек MyLibs
     Trace configsКонфигурация трекеров и трассировки
     Genetic configsКонфигурация генетического алгоритма обучения
     Libraries configsПодключение различных модулей библиотеки
     General ToolsОбщие макросы и typedef'ы, используемые по всему проекту
     General ToolsОбщие макросы и typedef'ы, используемые по всему проекту
     Bit access definesМакросы и typedef'ы для работы с битами в unsigned типах
     Time measurementБиблиотека для измерения времени/тиков между событиями
     Genetic optimizerБиблиотека для эволюционного подбора параметров
     Error Handler definesДефайны для обработки ошибок
     Delays definesМакросы и определения для работы с задержками в миллисекундах
     Utils definesОбщие вспомогательные макросы
     Trace definesДефайны для работы с трассировкой
     Serial trace definesДефайны для работы с serial трассировкой (SWO, RTT)
     GPIO trace definesДефайны для работы с GPIO трассировкой
     Flash RTT BufferМакросы и функции для сохранения/чтения RTT буфера в Flash
     Hardfault trace definesМодуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
     Trackers definesДефайны для работы с трекерами
     PeripheralМодули для управления периферией
     GPIO ToolsФункции и макросы для удобной работы с GPIO
     General toolsОбщие функции/макросы для работы с GPIO
     Init definesНастройка состояний кнопок и количества тиков в периоде ШИМ
     Switch toolsФункции для работы с GPIO, как с кнопкой
     LED toolsФункции для работы с GPIO, для управления светодиодом
     SPI ToolsФункции и макросы для удобной работы с SPI
     Init definesНастройка SPI
     TIM ToolsФункции и макросы для удобной работы с TIM
     General toolsФункции для базовой инициализации таймеров
     Init definesНастройка таймеров
     Delay toolsФункции для формирования задержек с помощью таймеров
     PWM/OC Channels toolsФункции для инициализации базовых функций каналов таймера
     Encoder toolsФункции для считывания энкодера
     UART ToolsФункции и макросы для удобной работы с UART
     Init definesНастройка UART
     Error Handler definesДефайны для обработки ошибок
     Delays definesМакросы и определения для работы с задержками в миллисекундах
     Utils definesОбщие вспомогательные макросы
     Debug ToolsУтилиты для тестирования программы
     Time measurementБиблиотека для измерения времени/тиков между событиями
     Genetic optimizerБиблиотека для эволюционного подбора параметров
     Trace definesДефайны для работы с трассировкой
     Serial trace definesДефайны для работы с serial трассировкой (SWO, RTT)
     GPIO trace definesДефайны для работы с GPIO трассировкой
     Flash RTT BufferМакросы и функции для сохранения/чтения RTT буфера в Flash
     Hardfault trace definesМодуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
     Trackers definesДефайны для работы с трекерами
    diff --git a/Doc/html/trace_8h.html b/Doc/html/trace_8h.html index 7ef9cc8..d9c3886 100644 --- a/Doc/html/trace_8h.html +++ b/Doc/html/trace_8h.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/trace.h File Reference +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/trace.h File Reference @@ -110,30 +110,38 @@ $(function(){initNavTree('trace_8h.html','',''); });
    This graph shows which files directly or indirectly include this file:
    @@ -175,7 +183,7 @@ Functions

    Variables

    static HF_StackFrame_tstack_frame -static uint32_t stack_dump [32] +static uint32_t stack_dump [HF_STACK_DUMP_WORDS] static void * ret_adr [10] = {0}

    Detailed Description

    diff --git a/Doc/html/trace_8h__dep__incl.map b/Doc/html/trace_8h__dep__incl.map index 6b80f95..5bf638e 100644 --- a/Doc/html/trace_8h__dep__incl.map +++ b/Doc/html/trace_8h__dep__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/trace_8h__dep__incl.md5 b/Doc/html/trace_8h__dep__incl.md5 index 6f819df..cd77249 100644 --- a/Doc/html/trace_8h__dep__incl.md5 +++ b/Doc/html/trace_8h__dep__incl.md5 @@ -1 +1 @@ -c5d3b4cfb2b711fb3b29507669fb1db5 \ No newline at end of file +6b76e360001b45ced830ddfaeaff5d15 \ No newline at end of file diff --git a/Doc/html/trace_8h__dep__incl.png b/Doc/html/trace_8h__dep__incl.png index ae61f35..8017c23 100644 Binary files a/Doc/html/trace_8h__dep__incl.png and b/Doc/html/trace_8h__dep__incl.png differ diff --git a/Doc/html/trace_8h__incl.map b/Doc/html/trace_8h__incl.map index b88f3d6..0d46043 100644 --- a/Doc/html/trace_8h__incl.map +++ b/Doc/html/trace_8h__incl.map @@ -1,13 +1,21 @@ - - - - - - - - + + + + + + + + - + + + + + + + + + diff --git a/Doc/html/trace_8h__incl.md5 b/Doc/html/trace_8h__incl.md5 index ce424ed..c116812 100644 --- a/Doc/html/trace_8h__incl.md5 +++ b/Doc/html/trace_8h__incl.md5 @@ -1 +1 @@ -ed068a6046f61f40acf42f3d1c63e4f1 \ No newline at end of file +0e0a424cbe02e9be0d7b667e464aa4f3 \ No newline at end of file diff --git a/Doc/html/trace_8h__incl.png b/Doc/html/trace_8h__incl.png index 99f913e..fd81320 100644 Binary files a/Doc/html/trace_8h__incl.png and b/Doc/html/trace_8h__incl.png differ diff --git a/Doc/html/trace_8h_source.html b/Doc/html/trace_8h_source.html index f96429e..ef01638 100644 --- a/Doc/html/trace_8h_source.html +++ b/Doc/html/trace_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/trace.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/trace.h Source File @@ -106,609 +106,606 @@ $(function(){initNavTree('trace_8h_source.html','',''); });
    4* @brief Заголочный файл для работы с трассировкой.
    5**************************************************************************
    6* @addtogroup TRACE Trace defines
    -
    7* @ingroup MYLIBS_DEFINES
    -
    8* @brief Дефайны для работы с трассировкой
    -
    9*************************************************************************/
    -
    10#ifndef __TRACE_H_
    -
    11#define __TRACE_H_
    -
    12#include "mylibs_defs.h"
    -
    13
    -
    14#include <string.h>
    -
    15/**
    -
    16 * @addtogroup TRACE_SERIAL Serial trace defines
    -
    17 * @ingroup TRACE
    -
    18 * @brief Дефайны для работы с serial трассировкой (SWO, RTT)
    -
    19 * @details В зависимости от настроек определяется дефайн @ref my_printf() и @ref log_printf() для работы с трассировкой:
    -
    20 - @ref SERIAL_TRACE_ENABLE - Если трассировка отключена, то все дефайны определяются как 'ничего'
    -
    21 и на производительность кода не влияют
    -
    22
    -
    23 - @ref RTT_TRACE_ENABLE - для RTT это будет вызов функции SEGGER_RTT_printf()
    -
    24
    -
    25 Предварительно надо подключить библиотеку SEGGER RTT (SEGGER_RTT.h) и вызвать функцию SEGGER_RTT_Init()
    -
    26
    -
    27 - @ref SWO_TRACE_ENABLE для SWO это будет просто printf()
    -
    28
    -
    29 Предварительно надо подключить библиотеку STDOUT и retarget под ITM:
    -
    30
    -
    31 @verbatim
    -
    32 Manage Run-Time Environment -> Compiler -> I/O -> STDOUT -> ITM
    -
    33 @endverbatim
    -
    34
    -
    35 Для SWO также надо включить трассировку:
    -
    36
    -
    37 @verbatim
    -
    38 Options For Target -> Debug -> Debugger Settings
    -
    39 @endverbatim
    -
    40
    -
    41 В вкладке Debug:
    -
    42 - Port = SW
    -
    43 В вкладке Trace:
    -
    44 - Указать Core Clock
    -
    45 - Выставить Trace Port = SWO
    -
    46 - ITM - выбрать нужный порт (для Keil нулевой порт)
    -
    47
    -
    48
    -
    49 * @{
    -
    50 *
    -
    51 * @def my_printf(...)
    -
    52 * @brief Универсальный макрос для вывода трассировки
    -
    53 * @details Варианты реализации:
    -
    54 * - RTT_TRACE_ENABLE `SEGGER_RTT_printf(0, ...)`
    -
    55 * - SWO_TRACE_ENABLE - `printf(...)`
    -
    56 * - NO_TRACE - пустой макрос
    -
    57 *
    -
    58 * @def log_printf(TAG, fmt, ...)
    -
    59 * @brief Макрос логирования с поддержкой уровней @ref LOG_LEVEL
    -
    60 * @param TAG Тэг лога
    -
    61 * @param fmt, ... Форматируемая строка
    -
    62 * @details Варианты реализации:
    -
    63 * - @ref LOG_LEVEL == 0 - логирование отключено (макрос пустой)
    -
    64 * - @ref LOG_LEVEL == 1 - выводится время @ref local_time и TAG
    -
    65 * @code
    -
    66 [123] [ADC] Measure Done
    -
    67 [456] [ADC] Measure Err
    -
    68 * @endcode
    -
    69 * - @ref LOG_LEVEL >= 2 - выводится время, TAG, имя файла и номер строки
    -
    70 * @code
    -
    71 [123] [ADC] (../Core/Src/adc.c:75) Measure Done
    -
    72 [456] [ADC] (../Core/Src/adc.c:80) Measure Err
    -
    73 * @endcode
    -
    74 */
    -
    75#ifdef SERIAL_TRACE_ENABLE
    -
    76
    -
    77 #if defined(RTT_TRACE_ENABLE)
    -
    78 #undef SWO_TRACE_ENABLE
    -
    79 #include "SEGGER_RTT.h"
    -
    80 #define my_printf(...) SEGGER_RTT_printf(0, __VA_ARGS__)
    -
    81 #elif defined(SWO_TRACE_ENABLE)
    -
    82 #undef RTT_TRACE_ENABLE
    -
    83 #define my_printf(...) printf(__VA_ARGS__)
    -
    84 #else // NO_TRACE
    -
    85 #define my_printf(...)
    -
    86 #warning No trace is selected. Serial debug wont work.
    -
    87 #endif // RTT_TRACE_ENABLE/SWO_TRACE_ENABLE/NO_TRACE
    -
    88#else //SERIAL_TRACE_ENABLE
    -
    89
    -
    90 #define my_printf(...)
    -
    91 #undef RTT_TRACE_ENABLE
    -
    92 #undef SWO_TRACE_ENABLE
    -
    93
    -
    94#endif //SERIAL_TRACE_ENABLE
    +
    7* @brief Дефайны для работы с трассировкой
    +
    8*************************************************************************/
    +
    9#ifndef __TRACE_H_
    +
    10#define __TRACE_H_
    +
    11#include "mylibs_defs.h"
    +
    12
    +
    13#include <string.h>
    +
    14/**
    +
    15 * @addtogroup TRACE_SERIAL Serial trace defines
    +
    16 * @ingroup TRACE
    +
    17 * @brief Дефайны для работы с serial трассировкой (SWO, RTT)
    +
    18 * @details В зависимости от настроек определяется дефайн @ref my_printf() и @ref log_printf() для работы с трассировкой:
    +
    19 - @ref SERIAL_TRACE_ENABLE - Если трассировка отключена, то все дефайны определяются как 'ничего'
    +
    20 и на производительность кода не влияют
    +
    21
    +
    22 - @ref RTT_TRACE_ENABLE - для RTT это будет вызов функции SEGGER_RTT_printf()
    +
    23
    +
    24 Предварительно надо подключить библиотеку SEGGER RTT (SEGGER_RTT.h) и вызвать функцию SEGGER_RTT_Init()
    +
    25
    +
    26 - @ref SWO_TRACE_ENABLE для SWO это будет просто printf()
    +
    27
    +
    28 Предварительно надо подключить библиотеку STDOUT и retarget под ITM:
    +
    29
    +
    30 @verbatim
    +
    31 Manage Run-Time Environment -> Compiler -> I/O -> STDOUT -> ITM
    +
    32 @endverbatim
    +
    33
    +
    34 Для SWO также надо включить трассировку:
    +
    35
    +
    36 @verbatim
    +
    37 Options For Target -> Debug -> Debugger Settings
    +
    38 @endverbatim
    +
    39
    +
    40 В вкладке Debug:
    +
    41 - Port = SW
    +
    42 В вкладке Trace:
    +
    43 - Указать Core Clock
    +
    44 - Выставить Trace Port = SWO
    +
    45 - ITM - выбрать нужный порт (для Keil нулевой порт)
    +
    46
    +
    47
    +
    48 * @{
    +
    49 *
    +
    50 * @def my_printf(...)
    +
    51 * @brief Универсальный макрос для вывода трассировки
    +
    52 * @details Варианты реализации:
    +
    53 * - RTT_TRACE_ENABLE `SEGGER_RTT_printf(0, ...)`
    +
    54 * - SWO_TRACE_ENABLE - `printf(...)`
    +
    55 * - NO_TRACE - пустой макрос
    +
    56 *
    +
    57 * @def log_printf(TAG, fmt, ...)
    +
    58 * @brief Макрос логирования с поддержкой уровней @ref LOG_LEVEL
    +
    59 * @param TAG Тэг лога
    +
    60 * @param fmt, ... Форматируемая строка
    +
    61 * @details Варианты реализации:
    +
    62 * - @ref LOG_LEVEL == 0 - логирование отключено (макрос пустой)
    +
    63 * - @ref LOG_LEVEL == 1 - выводится время @ref local_time и TAG
    +
    64 * @code
    +
    65 [123] [ADC] Measure Done
    +
    66 [456] [ADC] Measure Err
    +
    67 * @endcode
    +
    68 * - @ref LOG_LEVEL >= 2 - выводится время, TAG, имя файла и номер строки
    +
    69 * @code
    +
    70 [123] [ADC] (../Core/Src/adc.c:75) Measure Done
    +
    71 [456] [ADC] (../Core/Src/adc.c:80) Measure Err
    +
    72 * @endcode
    +
    73 */
    +
    74#ifdef SERIAL_TRACE_ENABLE
    +
    75
    +
    76 #if defined(RTT_TRACE_ENABLE)
    +
    77 #undef SWO_TRACE_ENABLE
    +
    78 #include "SEGGER_RTT.h"
    +
    79 #define my_printf(...) SEGGER_RTT_printf(0, __VA_ARGS__)
    +
    80 #elif defined(SWO_TRACE_ENABLE)
    +
    81 #undef RTT_TRACE_ENABLE
    +
    82 #define my_printf(...) printf(__VA_ARGS__)
    +
    83 #else // NO_TRACE
    +
    84 #define my_printf(...)
    +
    85 #warning No trace is selected. Serial debug wont work.
    +
    86 #endif // RTT_TRACE_ENABLE/SWO_TRACE_ENABLE/NO_TRACE
    +
    87#else //SERIAL_TRACE_ENABLE
    +
    88
    +
    89 #define my_printf(...)
    +
    90 #undef RTT_TRACE_ENABLE
    +
    91 #undef SWO_TRACE_ENABLE
    +
    92
    +
    93#endif //SERIAL_TRACE_ENABLE
    +
    94
    95
    -
    96
    -
    97#ifndef local_time
    -
    98#define local_time() HAL_GetTick() ///< Локальное время
    -
    99#endif
    -
    100#ifndef LOG_LEVEL
    -
    101#define LOG_LEVEL 1 ///< @brief Уровень логирования (по умолчанию == 1)
    -
    102#endif
    +
    96#ifndef local_time
    +
    97#define local_time() HAL_GetTick() ///< Локальное время
    +
    98#endif
    +
    99#ifndef LOG_LEVEL
    +
    100#define LOG_LEVEL 1 ///< @brief Уровень логирования (по умолчанию == 1)
    +
    101#endif
    +
    102
    103
    -
    104
    -
    105#if LOG_LEVEL == 0 // лог отключен
    -
    106 #define \
    -
    107log_printf(TAG, fmt, ...)
    -
    108#elif LOG_LEVEL == 1 // только тэг
    -
    -
    109 #define log_printf(TAG, fmt, ...) \
    -
    110my_printf("\n[%lu] [%s] " fmt, \
    -
    111(unsigned long)local_time(), TAG, ##__VA_ARGS__)
    -
    -
    112#elif LOG_LEVEL >= 2 // всё
    -
    113 #define log_printf(TAG, fmt, ...) \
    -
    114my_printf("\n[%lu] [%s] (%s:%d) " fmt, \
    -
    115(unsigned long)local_time(), TAG, __FILE__, __LINE__, ##__VA_ARGS__)
    -
    116#endif
    -
    117
    -
    118/** TRACE_SERIAL
    -
    119 * @}
    -
    120 */
    -
    121
    -
    122/**
    -
    123 * @addtogroup TRACE_GPIO GPIO trace defines
    -
    124 * @ingroup TRACE
    -
    125 * @brief Дефайны для работы с GPIO трассировкой
    -
    126 * @details Определяется дефайны для работы с GPIO трассировкой:
    -
    127 - TRACE_GPIO_RESET() - для сброса ножки GPIO (через BSRR)
    -
    128 - TRACE_GPIO_SET() - для выставления ножки GPIO (через BSRR)
    -
    129
    -
    130 - Если трассировка @ref GPIO_TRACE_ENABLE отключена, то все дефайны определяются как 'ничего'
    -
    131 и на производительность кода не влияют
    -
    132 * @{
    -
    133 *
    -
    134 * @def TRACE_GPIO_RESET(_gpio_, _pin_)
    -
    135 * @brief Сбросить указанную ножку GPIO
    -
    136 * @param _gpio_ Указатель на структуру GPIO (напр. GPIOA)
    -
    137 * @param _pin_ Номер ножки (напр. GPIO_PIN_0)
    -
    138 * @details Варианты реализации:
    -
    139 * - GPIO_TRACE_ENABLE не определён - макрос пустой
    -
    140 * - GPIO_TRACE_ENABLE определён - устанавливает бит сброса через BSRR ((_pin_)<<16)
    -
    141 *
    -
    142 * @def TRACE_GPIO_SET(_gpio_, _pin_)
    -
    143 * @brief Установить указанную ножку GPIO
    -
    144 * @param _gpio_ Указатель на структуру GPIO (например GPIOA)
    -
    145 * @param _pin_ Номер ножки (напр. GPIO_PIN_0)
    -
    146 * @details Варианты реализации:
    -
    147 * - GPIO_TRACE_ENABLE не определён - макрос пустой
    -
    148 * - GPIO_TRACE_ENABLE определён - устанавливает бит установки через BSRR (_pin_)
    -
    149 */
    -
    150#ifndef GPIO_TRACE_ENABLE
    -
    151 #define TRACE_GPIO_SET(_gpio_,_pin_)
    -
    152 #define TRACE_GPIO_RESET(_gpio_,_pin_)
    -
    153#else
    -
    154 #define TRACE_GPIO_SET(_gpio_,_pin_) (_gpio_)->BSRR = (((_pin_)))
    -
    155 #define TRACE_GPIO_RESET(_gpio_,_pin_) (_gpio_)->BSRR = ((_pin_)<<16)
    -
    156#endif //GPIO_TRACE_ENABLE
    -
    157
    -
    158
    -
    159/** TRACE_GPIO
    -
    160 * @}
    -
    161 */
    +
    104#if LOG_LEVEL == 0 // лог отключен
    +
    105 #define \
    +
    106log_printf(TAG, fmt, ...)
    +
    107#elif LOG_LEVEL == 1 // только тэг
    +
    108 #define log_printf(TAG, fmt, ...) \
    +
    109my_printf("\n[%lu] [%s] " fmt, \
    +
    110(unsigned long)local_time(), TAG, ##__VA_ARGS__)
    +
    111#elif LOG_LEVEL >= 2 // всё
    +
    112 #define log_printf(TAG, fmt, ...) \
    +
    113my_printf("\n[%lu] [%s] (%s:%d) " fmt, \
    +
    114(unsigned long)local_time(), TAG, __FILE__, __LINE__, ##__VA_ARGS__)
    +
    115#endif
    +
    116
    +
    117/** TRACE_SERIAL
    +
    118 * @}
    +
    119 */
    +
    120
    +
    121/**
    +
    122 * @addtogroup TRACE_GPIO GPIO trace defines
    +
    123 * @ingroup TRACE
    +
    124 * @brief Дефайны для работы с GPIO трассировкой
    +
    125 * @details Определяется дефайны для работы с GPIO трассировкой:
    +
    126 - TRACE_GPIO_RESET() - для сброса ножки GPIO (через BSRR)
    +
    127 - TRACE_GPIO_SET() - для выставления ножки GPIO (через BSRR)
    +
    128
    +
    129 - Если трассировка @ref GPIO_TRACE_ENABLE отключена, то все дефайны определяются как 'ничего'
    +
    130 и на производительность кода не влияют
    +
    131 * @{
    +
    132 *
    +
    133 * @def TRACE_GPIO_RESET(_gpio_, _pin_)
    +
    134 * @brief Сбросить указанную ножку GPIO
    +
    135 * @param _gpio_ Указатель на структуру GPIO (напр. GPIOA)
    +
    136 * @param _pin_ Номер ножки (напр. GPIO_PIN_0)
    +
    137 * @details Варианты реализации:
    +
    138 * - GPIO_TRACE_ENABLE не определён - макрос пустой
    +
    139 * - GPIO_TRACE_ENABLE определён - устанавливает бит сброса через BSRR ((_pin_)<<16)
    +
    140 *
    +
    141 * @def TRACE_GPIO_SET(_gpio_, _pin_)
    +
    142 * @brief Установить указанную ножку GPIO
    +
    143 * @param _gpio_ Указатель на структуру GPIO (например GPIOA)
    +
    144 * @param _pin_ Номер ножки (напр. GPIO_PIN_0)
    +
    145 * @details Варианты реализации:
    +
    146 * - GPIO_TRACE_ENABLE не определён - макрос пустой
    +
    147 * - GPIO_TRACE_ENABLE определён - устанавливает бит установки через BSRR (_pin_)
    +
    148 */
    +
    149#ifndef GPIO_TRACE_ENABLE
    +
    150 #define TRACE_GPIO_SET(_gpio_,_pin_)
    +
    151 #define TRACE_GPIO_RESET(_gpio_,_pin_)
    +
    152#else
    +
    153 #define TRACE_GPIO_SET(_gpio_,_pin_) (_gpio_)->BSRR = (((_pin_)))
    +
    154 #define TRACE_GPIO_RESET(_gpio_,_pin_) (_gpio_)->BSRR = ((_pin_)<<16)
    +
    155#endif //GPIO_TRACE_ENABLE
    +
    156
    +
    157
    +
    158/** TRACE_GPIO
    +
    159 * @}
    +
    160 */
    +
    161
    162
    163
    -
    164
    -
    165#if defined(HAL_MODULE_ENABLED) && defined(RTT_TRACE_ENABLE)
    -
    166
    -
    167/**
    -
    168 * @addtogroup TRACE_RTT_FLASH Flash RTT Buffer
    -
    169 * @ingroup TRACE
    -
    170 * @brief Макросы и функции для сохранения/чтения RTT буфера в Flash
    -
    171 * @details Модуль позволяет сохранять данные RTT буфера во Flash и читать их обратно по тегам.
    -
    172 * Теги работают следующим образом:
    -
    173 * - Базовый тег (младший байт = 0): модуль сам выбирает первый свободный слот во Flash;
    -
    174 * новые записи получают автоинкрементированный младший байт тега (от 0x00 до 0xFF).
    -
    175 * - Конкретный тег (младший байт != 0): запись или чтение происходит строго с указанным тегом;
    -
    176 * если слот с таким тегом уже занят, запись не выполняется.
    -
    177 * - Автоинкремент позволяет хранить несколько последовательных записей в пределах одного базового тега,
    -
    178 * без необходимости вручную отслеживать адреса Flash или позиции буферов.
    -
    179 *
    -
    180 * Параметры:
    -
    181 * - @ref RTT_FLASH_BUFFER_SIZE - Размер буфера RTT в Flash
    -
    182 * - @ref RTT_FLASH_SECTOR - Сектор FLASH куда положится RTT буфер
    -
    183 * - @ref RTT_FLASH_SECTOR_START - Начало сектора RTT_FLASH_SECTOR
    -
    184 * - @ref RTT_FLASH_SECTOR_END - Конец сектора RTT_FLASH_SECTOR
    -
    185 *
    -
    186 * @{
    -
    187 */
    -
    188
    -
    189
    -
    190/**
    -
    191 * @brief Структура RTT, которая будет положена в Flash
    -
    192 */
    -
    -
    193typedef struct {
    -
    194 uint32_t tag; ///< Уникальный идентификатор буфера
    -
    195 uint32_t size; ///< Размер данных
    -
    196 char data[RTT_FLASH_BUFFER_SIZE]; ///< Буфер RTT
    - +
    164#if defined(HAL_MODULE_ENABLED) && defined(RTT_TRACE_ENABLE)
    +
    165
    +
    166/**
    +
    167 * @addtogroup TRACE_RTT_FLASH Flash RTT Buffer
    +
    168 * @ingroup TRACE
    +
    169 * @brief Макросы и функции для сохранения/чтения RTT буфера в Flash
    +
    170 * @details Модуль позволяет сохранять данные RTT буфера во Flash и читать их обратно по тегам.
    +
    171 * Теги работают следующим образом:
    +
    172 * - Базовый тег (младший байт = 0): модуль сам выбирает первый свободный слот во Flash;
    +
    173 * новые записи получают автоинкрементированный младший байт тега (от 0x00 до 0xFF).
    +
    174 * - Конкретный тег (младший байт != 0): запись или чтение происходит строго с указанным тегом;
    +
    175 * если слот с таким тегом уже занят, запись не выполняется.
    +
    176 * - Автоинкремент позволяет хранить несколько последовательных записей в пределах одного базового тега,
    +
    177 * без необходимости вручную отслеживать адреса Flash или позиции буферов.
    +
    178 *
    +
    179 * Параметры:
    +
    180 * - @ref RTT_FLASH_BUFFER_SIZE - Размер буфера RTT в Flash
    +
    181 * - @ref RTT_FLASH_SECTOR - Сектор FLASH куда положится RTT буфер
    +
    182 * - @ref RTT_FLASH_SECTOR_START - Начало сектора RTT_FLASH_SECTOR
    +
    183 * - @ref RTT_FLASH_SECTOR_END - Конец сектора RTT_FLASH_SECTOR
    +
    184 *
    +
    185 * @{
    +
    186 */
    +
    187
    +
    188
    +
    189/**
    +
    190 * @brief Структура RTT, которая будет положена в Flash
    +
    191 */
    +
    +
    192typedef struct {
    +
    193 uint32_t tag; ///< Уникальный идентификатор буфера
    +
    194 uint32_t size; ///< Размер данных
    +
    195 char data[RTT_FLASH_BUFFER_SIZE]; ///< Буфер RTT
    +
    -
    198
    -
    199/**
    -
    200 * @brief Подготовка Flash к записи
    -
    201 * @details Сбрасывает ошибки Flash и ожидает готовности перед записью
    -
    202 */
    -
    -
    203__STATIC_FORCEINLINE void RTT_FlashPrepare(void)
    -
    204{
    -
    205 HAL_FLASH_Unlock();
    -
    206 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR | FLASH_FLAG_WRPERR | FLASH_FLAG_OPERR);
    -
    207 while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) {
    -
    208 __NOP();
    -
    209 }
    -
    210}
    +
    197
    +
    198/**
    +
    199 * @brief Подготовка Flash к записи
    +
    200 * @details Сбрасывает ошибки Flash и ожидает готовности перед записью
    +
    201 */
    +
    +
    202__STATIC_FORCEINLINE void RTT_FlashPrepare(void)
    +
    203{
    +
    204 HAL_FLASH_Unlock();
    +
    205 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR | FLASH_FLAG_WRPERR | FLASH_FLAG_OPERR);
    +
    206 while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) {
    +
    207 __NOP();
    +
    208 }
    +
    209}
    -
    211
    -
    212/**
    -
    213 * @brief Сохраняет последние символы RTT-буфера в Flash по тегу
    -
    214 * @param tag Базовый или конкретный идентификатор буфера.
    -
    215 * @param tail_size Количество последних символов RTT для копирования
    -
    216 * @param buf_num Указатель на переменную в которую запишется номер буфера для конкретного тега
    -
    217 * @return >=0 — номер буфера (тег) для записи, <0 — ошибка (нет места, тег уже занят, ошибка записи в флеш)
    -
    218 *
    -
    219 * @details Автоматически копирует последние tail_size символов из RTT-буфера
    -
    220 * и записывает их во Flash.
    -
    221 * Тег может быть базовым или конкретным:
    -
    222 * - Если базовый (младший байт == 0) — будет выбран первый свободный слот с автоинкрементом.
    -
    223 * Автоинкремент формируется в пределах от 0x1 до 0xFF
    -
    224 * - Если конкретный (младший байт != 0) — запись выполняется только с этим тегом, иначе ошибка.
    -
    225 *
    -
    226 */
    -
    -
    227__STATIC_FORCEINLINE int RTT_SaveToFlash(uint32_t tag, uint32_t tail_size)
    -
    228{
    -
    229 if (tag == 0xFFFFFFFF)
    -
    230 return -1; // Неверный тег
    -
    231
    -
    232 SEGGER_RTT_BUFFER_UP *up = &_SEGGER_RTT.aUp[0];
    -
    233 unsigned buf_size = up->SizeOfBuffer;
    -
    234 unsigned wr = up->WrOff;
    -
    235
    -
    236 // Ограничиваем по размеру буфера RTT и RTT_FLASH_BUFFER_SIZE
    -
    237 unsigned n = (tail_size > buf_size) ? buf_size : tail_size;
    -
    238 if (n > RTT_FLASH_BUFFER_SIZE)
    - -
    240
    -
    241 uint32_t addr = RTT_FLASH_SECTOR_START;
    -
    242 RTT_FlashHeader_t *flash_hdr = NULL;
    -
    243 uint32_t base_tag = tag & 0xFFFFFF00;
    -
    244 uint32_t next_tag = (tag & 0xFF) == 0 ? tag + 1 : tag;
    -
    245
    -
    246 // Ищем первый свободный слот, параллельно автоинкрементируем тег
    -
    247 while ((addr + sizeof(RTT_FlashHeader_t)) <= RTT_FLASH_SECTOR_END)
    -
    248 {
    -
    249 flash_hdr = (RTT_FlashHeader_t *)addr;
    -
    250
    -
    251 if (flash_hdr->tag == 0xFFFFFFFF)
    -
    252 break; // Нашли свободное место
    -
    253
    -
    254
    -
    255 if((flash_hdr->tag & 0xFFFFFF00) == base_tag) // выбраный тег
    -
    256 {
    -
    257 if ((tag & 0xFF) == 0) // если он базовый - ищем последний
    -
    258 next_tag = flash_hdr->tag + 1; // автоинкремент
    -
    259 else
    -
    260 if(flash_hdr->tag == tag) // если он конкретный и уже существует - то ошибка
    -
    261 return -1; // конкретный тег уже занят
    -
    262 }
    -
    263
    -
    264
    -
    265 if(next_tag - tag > 0xFF)
    -
    266 return -1; // автоинкремент слишком большой
    -
    267
    -
    268 addr += sizeof(RTT_FlashHeader_t);
    -
    269 }
    -
    270
    -
    271 if ((addr + sizeof(RTT_FlashHeader_t)) > RTT_FLASH_SECTOR_END)
    -
    272 return -1; // Нет свободного места
    -
    273
    -
    274 // Копируем последние n символов из RTT
    -
    275 char temp[RTT_FLASH_BUFFER_SIZE];
    -
    276 unsigned valid_count = 0;
    -
    277
    -
    278 for (unsigned i = 0; i < n; i++)
    -
    279 {
    -
    280 unsigned idx = (wr + buf_size - n + i) % buf_size;
    -
    281 char c = up->pBuffer[idx];
    -
    282 if (c != 0)
    -
    283 temp[valid_count++] = c;
    -
    284 }
    -
    285
    - -
    287
    -
    288 // Формируем структуру в RAM
    -
    289 RTT_FlashHeader_t flash_data;
    -
    290 flash_data.tag = next_tag;
    -
    291 flash_data.size = valid_count;
    -
    292 memcpy(flash_data.data, temp, valid_count);
    -
    293
    -
    294 // Записываем структуру во Flash (по 4 байта)
    -
    295 const uint32_t *p = (const uint32_t *)&flash_data;
    -
    296 for (unsigned i = 0; i < sizeof(RTT_FlashHeader_t) / 4; i++)
    -
    297 {
    -
    298 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr + i * 4, p[i]) != HAL_OK)
    -
    299 return -1;
    -
    300 }
    -
    301
    -
    302 HAL_FLASH_Lock();
    -
    303 __DSB();
    -
    304 __ISB();
    -
    305
    -
    306
    -
    307 return (int)(next_tag&0xFF);
    -
    308}
    +
    210
    +
    211/**
    +
    212 * @brief Сохраняет последние символы RTT-буфера в Flash по тегу
    +
    213 * @param tag Базовый или конкретный идентификатор буфера.
    +
    214 * @param tail_size Количество последних символов RTT для копирования
    +
    215 * @param buf_num Указатель на переменную в которую запишется номер буфера для конкретного тега
    +
    216 * @return >=0 — номер буфера (тег) для записи, <0 — ошибка (нет места, тег уже занят, ошибка записи в флеш)
    +
    217 *
    +
    218 * @details Автоматически копирует последние tail_size символов из RTT-буфера
    +
    219 * и записывает их во Flash.
    +
    220 * Тег может быть базовым или конкретным:
    +
    221 * - Если базовый (младший байт == 0) — будет выбран первый свободный слот с автоинкрементом.
    +
    222 * Автоинкремент формируется в пределах от 0x1 до 0xFF
    +
    223 * - Если конкретный (младший байт != 0) — запись выполняется только с этим тегом, иначе ошибка.
    +
    224 *
    +
    225 */
    +
    +
    226__STATIC_FORCEINLINE int RTT_SaveToFlash(uint32_t tag, uint32_t tail_size)
    +
    227{
    +
    228 if (tag == 0xFFFFFFFF)
    +
    229 return -1; // Неверный тег
    +
    230
    +
    231 SEGGER_RTT_BUFFER_UP *up = &_SEGGER_RTT.aUp[0];
    +
    232 unsigned buf_size = up->SizeOfBuffer;
    +
    233 unsigned wr = up->WrOff;
    +
    234
    +
    235 // Ограничиваем по размеру буфера RTT и RTT_FLASH_BUFFER_SIZE
    +
    236 unsigned n = (tail_size > buf_size) ? buf_size : tail_size;
    +
    237 if (n > RTT_FLASH_BUFFER_SIZE)
    + +
    239
    +
    240 uint32_t addr = RTT_FLASH_SECTOR_START;
    +
    241 RTT_FlashHeader_t *flash_hdr = NULL;
    +
    242 uint32_t base_tag = tag & 0xFFFFFF00;
    +
    243 uint32_t next_tag = (tag & 0xFF) == 0 ? tag + 1 : tag;
    +
    244
    +
    245 // Ищем первый свободный слот, параллельно автоинкрементируем тег
    +
    246 while ((addr + sizeof(RTT_FlashHeader_t)) <= RTT_FLASH_SECTOR_END)
    +
    247 {
    +
    248 flash_hdr = (RTT_FlashHeader_t *)addr;
    +
    249
    +
    250 if (flash_hdr->tag == 0xFFFFFFFF)
    +
    251 break; // Нашли свободное место
    +
    252
    +
    253
    +
    254 if((flash_hdr->tag & 0xFFFFFF00) == base_tag) // выбраный тег
    +
    255 {
    +
    256 if ((tag & 0xFF) == 0) // если он базовый - ищем последний
    +
    257 next_tag = flash_hdr->tag + 1; // автоинкремент
    +
    258 else
    +
    259 if(flash_hdr->tag == tag) // если он конкретный и уже существует - то ошибка
    +
    260 return -1; // конкретный тег уже занят
    +
    261 }
    +
    262
    +
    263
    +
    264 if(next_tag - tag > 0xFF)
    +
    265 return -1; // автоинкремент слишком большой
    +
    266
    +
    267 addr += sizeof(RTT_FlashHeader_t);
    +
    268 }
    +
    269
    +
    270 if ((addr + sizeof(RTT_FlashHeader_t)) > RTT_FLASH_SECTOR_END)
    +
    271 return -1; // Нет свободного места
    +
    272
    +
    273 // Копируем последние n символов из RTT
    +
    274 char temp[RTT_FLASH_BUFFER_SIZE];
    +
    275 unsigned valid_count = 0;
    +
    276
    +
    277 for (unsigned i = 0; i < n; i++)
    +
    278 {
    +
    279 unsigned idx = (wr + buf_size - n + i) % buf_size;
    +
    280 char c = up->pBuffer[idx];
    +
    281 if (c != 0)
    +
    282 temp[valid_count++] = c;
    +
    283 }
    +
    284
    + +
    286
    +
    287 // Формируем структуру в RAM
    +
    288 RTT_FlashHeader_t flash_data;
    +
    289 flash_data.tag = next_tag;
    +
    290 flash_data.size = valid_count;
    +
    291 memcpy(flash_data.data, temp, valid_count);
    +
    292
    +
    293 // Записываем структуру во Flash (по 4 байта)
    +
    294 const uint32_t *p = (const uint32_t *)&flash_data;
    +
    295 for (unsigned i = 0; i < sizeof(RTT_FlashHeader_t) / 4; i++)
    +
    296 {
    +
    297 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr + i * 4, p[i]) != HAL_OK)
    +
    298 return -1;
    +
    299 }
    +
    300
    +
    301 HAL_FLASH_Lock();
    +
    302 __DSB();
    +
    303 __ISB();
    +
    304
    +
    305
    +
    306 return (int)(next_tag&0xFF);
    +
    307}
    -
    309
    -
    310
    -
    311/**
    -
    312 * @brief Читает последние символы RTT-буфера из Flash по тегу
    -
    313 * @param tag Базовый или конкретный идентификатор буфера.
    -
    314 * @param Buffer Буфер назначения для копирования данных
    -
    315 * @param tail_size Количество последних символов, которые нужно прочитать
    -
    316 * @param read_size Количество считанных символов
    -
    317 * @return >=0 — номер буфера (тег) для записи, <0 — ошибка (тег не найден или структура повреждена)
    -
    318 *
    -
    319 * @details Копирует последние tail_size символов из найденной записи Flash в Buffer.
    -
    320 * Тег может быть базовым или конкретным:
    -
    321 * - Если базовый (младший байт == 0) — будет прочитана последняя запись из группы.
    -
    322 * - Если конкретный (младший байт != 0) — прочитывается именно эта запись.
    -
    323 */
    -
    -
    324__STATIC_FORCEINLINE int RTT_ReadFromFlash(uint32_t tag, char *Buffer, uint32_t tail_size, uint32_t *read_size)
    -
    325{
    -
    326 if (!Buffer || tail_size == 0)
    -
    327 return -1; // Неверные параметры
    -
    328
    -
    329 if (tag == 0xFFFFFFFF)
    -
    330 return -1; // Недопустимый тег
    -
    331
    -
    332 uint32_t addr = RTT_FLASH_SECTOR_START;
    -
    333 RTT_FlashHeader_t *flash_hdr = NULL;
    -
    334 RTT_FlashHeader_t *target_hdr = NULL;
    -
    335 uint32_t base_tag = tag & 0xFFFFFF00;
    -
    336
    -
    337 // Поиск записи по тегу
    -
    338 while ((addr + sizeof(RTT_FlashHeader_t)) <= RTT_FLASH_SECTOR_END)
    -
    339 {
    -
    340 flash_hdr = (RTT_FlashHeader_t *)addr;
    -
    341
    -
    342 if (flash_hdr->tag == 0xFFFFFFFF)
    -
    343 break; // Достигнут конец записанных структур
    -
    344
    -
    345 // выбраный тег
    -
    346 if((flash_hdr->tag & 0xFFFFFF00) == base_tag)
    -
    347 {
    -
    348 if ((tag & 0xFF) == 0) // если он базовый - ищем последний
    -
    349 target_hdr = flash_hdr; // сохраняем последний в группе
    -
    350 else
    -
    351 if(flash_hdr->tag == tag) // если он конкретный и найден - берем его
    -
    352 {
    -
    353 target_hdr = flash_hdr;
    -
    354 break; // конкретный тег найден
    -
    355 }
    -
    356 }
    -
    357
    -
    358 addr += sizeof(RTT_FlashHeader_t);
    -
    359 }
    -
    360
    -
    361 if (!target_hdr) return -1; // Тег не найден
    -
    362
    -
    363 // Проверка корректности размера
    -
    364 if (target_hdr->size > RTT_FLASH_BUFFER_SIZE)
    -
    365 return -1; // Повреждённая запись
    -
    366
    -
    367 // Определяем количество читаемых символов
    -
    368 uint32_t n = (tail_size > target_hdr->size) ? target_hdr->size : tail_size;
    -
    369 // Начальная позиция для чтения последних tail_size символов
    -
    370 uint32_t start = target_hdr->size - n;
    -
    371 // Копируем данные из Flash в RAM
    -
    372 memcpy(Buffer, &target_hdr->data[start], n);
    -
    373
    -
    374 if(read_size != NULL)
    -
    375 {
    -
    376 *read_size = n;
    -
    377 }
    -
    378
    -
    379 __DSB();
    -
    380 __ISB();
    -
    381
    -
    382 return (int)(target_hdr->tag & 0xFF);
    -
    383}
    +
    308
    +
    309
    +
    310/**
    +
    311 * @brief Читает последние символы RTT-буфера из Flash по тегу
    +
    312 * @param tag Базовый или конкретный идентификатор буфера.
    +
    313 * @param Buffer Буфер назначения для копирования данных
    +
    314 * @param tail_size Количество последних символов, которые нужно прочитать
    +
    315 * @param read_size Количество считанных символов
    +
    316 * @return >=0 — номер буфера (тег) для записи, <0 — ошибка (тег не найден или структура повреждена)
    +
    317 *
    +
    318 * @details Копирует последние tail_size символов из найденной записи Flash в Buffer.
    +
    319 * Тег может быть базовым или конкретным:
    +
    320 * - Если базовый (младший байт == 0) — будет прочитана последняя запись из группы.
    +
    321 * - Если конкретный (младший байт != 0) — прочитывается именно эта запись.
    +
    322 */
    +
    +
    323__STATIC_FORCEINLINE int RTT_ReadFromFlash(uint32_t tag, char *Buffer, uint32_t tail_size, uint32_t *read_size)
    +
    324{
    +
    325 if (!Buffer || tail_size == 0)
    +
    326 return -1; // Неверные параметры
    +
    327
    +
    328 if (tag == 0xFFFFFFFF)
    +
    329 return -1; // Недопустимый тег
    +
    330
    +
    331 uint32_t addr = RTT_FLASH_SECTOR_START;
    +
    332 RTT_FlashHeader_t *flash_hdr = NULL;
    +
    333 RTT_FlashHeader_t *target_hdr = NULL;
    +
    334 uint32_t base_tag = tag & 0xFFFFFF00;
    +
    335
    +
    336 // Поиск записи по тегу
    +
    337 while ((addr + sizeof(RTT_FlashHeader_t)) <= RTT_FLASH_SECTOR_END)
    +
    338 {
    +
    339 flash_hdr = (RTT_FlashHeader_t *)addr;
    +
    340
    +
    341 if (flash_hdr->tag == 0xFFFFFFFF)
    +
    342 break; // Достигнут конец записанных структур
    +
    343
    +
    344 // выбраный тег
    +
    345 if((flash_hdr->tag & 0xFFFFFF00) == base_tag)
    +
    346 {
    +
    347 if ((tag & 0xFF) == 0) // если он базовый - ищем последний
    +
    348 target_hdr = flash_hdr; // сохраняем последний в группе
    +
    349 else
    +
    350 if(flash_hdr->tag == tag) // если он конкретный и найден - берем его
    +
    351 {
    +
    352 target_hdr = flash_hdr;
    +
    353 break; // конкретный тег найден
    +
    354 }
    +
    355 }
    +
    356
    +
    357 addr += sizeof(RTT_FlashHeader_t);
    +
    358 }
    +
    359
    +
    360 if (!target_hdr) return -1; // Тег не найден
    +
    361
    +
    362 // Проверка корректности размера
    +
    363 if (target_hdr->size > RTT_FLASH_BUFFER_SIZE)
    +
    364 return -1; // Повреждённая запись
    +
    365
    +
    366 // Определяем количество читаемых символов
    +
    367 uint32_t n = (tail_size > target_hdr->size) ? target_hdr->size : tail_size;
    +
    368 // Начальная позиция для чтения последних tail_size символов
    +
    369 uint32_t start = target_hdr->size - n;
    +
    370 // Копируем данные из Flash в RAM
    +
    371 memcpy(Buffer, &target_hdr->data[start], n);
    +
    372
    +
    373 if(read_size != NULL)
    +
    374 {
    +
    375 *read_size = n;
    +
    376 }
    +
    377
    +
    378 __DSB();
    +
    379 __ISB();
    +
    380
    +
    381 return (int)(target_hdr->tag & 0xFF);
    +
    382}
    -
    384
    -
    385/**
    -
    386 * @brief Стирание сектора Flash с RTT-буфером
    -
    387 */
    -
    -
    388__STATIC_FORCEINLINE int RTT_EraseFlash(void)
    -
    389{
    -
    390 FLASH_EraseInitTypeDef eraseInit;
    -
    391 uint32_t pageError = 0;
    -
    392
    - -
    394
    -
    395 eraseInit.TypeErase = FLASH_TYPEERASE_SECTORS;
    -
    396 eraseInit.Sector = RTT_FLASH_SECTOR;
    -
    397 eraseInit.NbSectors = 1;
    -
    398
    -
    399 if (HAL_FLASHEx_Erase(&eraseInit, &pageError) != HAL_OK)
    -
    400 {
    -
    401 return -1;
    -
    402 }
    -
    403 return 0;
    -
    404 HAL_FLASH_Lock();
    -
    405}
    +
    383
    +
    384/**
    +
    385 * @brief Стирание сектора Flash с RTT-буфером
    +
    386 */
    +
    +
    387__STATIC_FORCEINLINE int RTT_EraseFlash(void)
    +
    388{
    +
    389 FLASH_EraseInitTypeDef eraseInit;
    +
    390 uint32_t pageError = 0;
    +
    391
    + +
    393
    +
    394 eraseInit.TypeErase = FLASH_TYPEERASE_SECTORS;
    +
    395 eraseInit.Sector = RTT_FLASH_SECTOR;
    +
    396 eraseInit.NbSectors = 1;
    +
    397
    +
    398 if (HAL_FLASHEx_Erase(&eraseInit, &pageError) != HAL_OK)
    +
    399 {
    +
    400 return -1;
    +
    401 }
    +
    402 return 0;
    +
    403 HAL_FLASH_Lock();
    +
    404}
    -
    406
    -
    407/** TRACE_RTT_FLASH
    -
    408 * @}
    -
    409 */
    -
    410
    -
    411#else // HAL_MODULE_ENABLED && RTT_TRACE_ENABLE
    -
    412#define RTT_FlashPrepare(...)
    -
    413#define RTT_EraseFlash(...) 0
    -
    414#define RTT_SaveToFlash(...) 0
    -
    415#define RTT_ReadFromFlash(...) 0
    -
    416#endif // HAL_MODULE_ENABLED && RTT_TRACE_ENABLE
    +
    405
    +
    406/** TRACE_RTT_FLASH
    +
    407 * @}
    +
    408 */
    +
    409
    +
    410#else // HAL_MODULE_ENABLED && RTT_TRACE_ENABLE
    +
    411#define RTT_FlashPrepare(...)
    +
    412#define RTT_EraseFlash(...) 0
    +
    413#define RTT_SaveToFlash(...) 0
    +
    414#define RTT_ReadFromFlash(...) 0
    +
    415#endif // HAL_MODULE_ENABLED && RTT_TRACE_ENABLE
    +
    416
    417
    418
    -
    419
    -
    420
    -
    421/**
    -
    422 * @addtogroup TRACE_HARDFAULT Hardfault trace defines
    -
    423 * @ingroup TRACE
    -
    424 * @brief Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
    -
    425 * @details
    -
    426 * Этот модуль позволяет сохранять контекст процессора и последние символы RTT буфера при возникновении HardFault.
    -
    427 *
    -
    428 * Механизм работы:
    -
    429 * - При срабатывании HardFault вызывается HF_HandleFault(), который:
    -
    430 * 1. Получает указатель на стек, где произошёл HardFault (MSP или PSP).
    -
    431 * 2. Выводит значения регистров R0-R3, R12, LR, PC, PSR и системных регистров SCB.
    -
    432 * 3. Формирует строку с регистрами и копирует последние символы RTT буфера.
    -
    433 * 4. Сохраняет данные во Flash с базовым тегом HF_RTT_TAG_BASE.
    -
    434 * - Для восстановления последнего HardFault используется HF_CheckRecovered(), который:
    -
    435 * 1. Читает запись во Flash по базовому тегу.
    -
    436 * 2. Выводит сохранённый RTT буфер и контекст регистров.
    -
    437 * 3. Опционально стирает Flash после восстановления.
    -
    438 *
    -
    439 * Параметры:
    -
    440 * - @ref HARDFAULT_SERIAL_TRACE - Включить обработку и serial трассировку Hardfault
    -
    441 * Если отключена то вставляются заглушки, никак не влияющие на параметры и остальную программу
    -
    442 * - @ref HF_RTT_TAG_BASE - Базовый тег RTT Flash для HardFault
    -
    443 * - @ref HF_RTT_TAIL_SIZE - Размер буфера RTT, который сохранится при Hardfault
    -
    444 * - @ref HF_STACK_DUMP_WORDS - Сколько слов стека будет проанализировано во время Hardfault
    -
    445 * - @ref HF_FLASH_ADDR - Адрес FLASH куда положится RTT буфер
    -
    446 * - @ref HF_RAM_END - Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
    -
    447 *
    -
    448 @code
    -
    449 void Hardfault()
    -
    450 {
    -
    451 HF_HandleFault();
    -
    452 NVIC_SystemReset();
    -
    453 }
    -
    454
    -
    455 int main()
    -
    456 {
    -
    457 if(HF_CheckRecovered(0))
    -
    458 {
    -
    459 //set hardfault error
    -
    460 RTT_EraseFlash(); // erase rtt flash after message readed
    -
    461 }
    -
    462 }
    -
    463 @endcode
    -
    464 * @{
    -
    465 */
    -
    466#if defined(HAL_MODULE_ENABLED) && defined(HARDFAULT_SERIAL_TRACE)
    -
    467
    -
    468#ifndef HF_RTT_TAIL_SIZE
    -
    469#define HF_RTT_TAIL_SIZE RTT_FLASH_BUFFER_SIZE ///< Размер буфера RTT, который сохранится при Hardfault
    -
    470#endif
    -
    471
    -
    472/**
    -
    473 * @brief Контекст стек-фрейма процессора при HardFault
    -
    474 * @details Сохраняет регистры R0-R3, R12, LR, PC, PSR для последующего анализа.
    -
    475 */
    -
    -
    476typedef struct {
    -
    477 uint32_t r0; ///< Регистр R0
    -
    478 uint32_t r1; ///< Регистр R1
    -
    479 uint32_t r2; ///< Регистр R2
    -
    480 uint32_t r3; ///< Регистр R3
    -
    481 uint32_t r12; ///< Регистр R12
    -
    482 uint32_t lr; ///< Link Register
    -
    483 uint32_t pc; ///< Program Counter
    -
    484 uint32_t psr; ///< Program Status Register
    - +
    419
    +
    420/**
    +
    421 * @addtogroup TRACE_HARDFAULT Hardfault trace defines
    +
    422 * @ingroup TRACE
    +
    423 * @brief Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
    +
    424 * @details
    +
    425 * Этот модуль позволяет сохранять контекст процессора и последние символы RTT буфера при возникновении HardFault.
    +
    426 *
    +
    427 * Механизм работы:
    +
    428 * - При срабатывании HardFault вызывается HF_HandleFault(), который:
    +
    429 * 1. Получает указатель на стек, где произошёл HardFault (MSP или PSP).
    +
    430 * 2. Выводит значения регистров R0-R3, R12, LR, PC, PSR и системных регистров SCB.
    +
    431 * 3. Формирует строку с регистрами и копирует последние символы RTT буфера.
    +
    432 * 4. Сохраняет данные во Flash с базовым тегом HF_RTT_TAG_BASE.
    +
    433 * - Для восстановления последнего HardFault используется HF_CheckRecovered(), который:
    +
    434 * 1. Читает запись во Flash по базовому тегу.
    +
    435 * 2. Выводит сохранённый RTT буфер и контекст регистров.
    +
    436 * 3. Опционально стирает Flash после восстановления.
    +
    437 *
    +
    438 * Параметры:
    +
    439 * - @ref HARDFAULT_SERIAL_TRACE - Включить обработку и serial трассировку Hardfault
    +
    440 * Если отключена то вставляются заглушки, никак не влияющие на параметры и остальную программу
    +
    441 * - @ref HF_RTT_TAG_BASE - Базовый тег RTT Flash для HardFault
    +
    442 * - @ref HF_RTT_TAIL_SIZE - Размер буфера RTT, который сохранится при Hardfault
    +
    443 * - @ref HF_STACK_DUMP_WORDS - Сколько слов стека будет проанализировано во время Hardfault
    +
    444 * - @ref HF_FLASH_ADDR - Адрес FLASH куда положится RTT буфер
    +
    445 * - @ref HF_RAM_END - Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
    +
    446 *
    +
    447 @code
    +
    448 void Hardfault()
    +
    449 {
    +
    450 HF_HandleFault();
    +
    451 NVIC_SystemReset();
    +
    452 }
    +
    453
    +
    454 int main()
    +
    455 {
    +
    456 if(HF_CheckRecovered(0))
    +
    457 {
    +
    458 //set hardfault error
    +
    459 RTT_EraseFlash(); // erase rtt flash after message readed
    +
    460 }
    +
    461 }
    +
    462 @endcode
    +
    463 * @{
    +
    464 */
    +
    465#if defined(HAL_MODULE_ENABLED) && defined(HARDFAULT_SERIAL_TRACE)
    +
    466
    +
    467#ifndef HF_RTT_TAIL_SIZE
    +
    468#define HF_RTT_TAIL_SIZE RTT_FLASH_BUFFER_SIZE ///< Размер буфера RTT, который сохранится при Hardfault
    +
    469#endif
    +
    470
    +
    471/**
    +
    472 * @brief Контекст стек-фрейма процессора при HardFault
    +
    473 * @details Сохраняет регистры R0-R3, R12, LR, PC, PSR для последующего анализа.
    +
    474 */
    +
    +
    475typedef struct {
    +
    476 uint32_t r0; ///< Регистр R0
    +
    477 uint32_t r1; ///< Регистр R1
    +
    478 uint32_t r2; ///< Регистр R2
    +
    479 uint32_t r3; ///< Регистр R3
    +
    480 uint32_t r12; ///< Регистр R12
    +
    481 uint32_t lr; ///< Link Register
    +
    482 uint32_t pc; ///< Program Counter
    +
    483 uint32_t psr; ///< Program Status Register
    +
    -
    486
    -
    487/**
    -
    488 * @brief Проверка и вывод последнего HardFault-трейса из Flash
    -
    489 * @details
    -
    490 * Функция ищет последнюю запись HardFault по базовому тегу HF_RTT_TAG_BASE
    -
    491 * и выводит её содержимое в консоль. После успешного вывода Flash можно опционально очистить.
    -
    492 *
    -
    493 * @return int
    -
    494 * - 1 — данные HardFault найдены и выведены
    -
    495 * - 0 — данные отсутствуют или тег не найден
    -
    496 *
    -
    497 * @note Вызов рекомендуется при инициализации приложения для анализа предыдущего сбоя.
    -
    498 */
    -
    -
    499__STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    -
    500{
    -
    501 char buffer[RTT_FLASH_BUFFER_SIZE];
    -
    502 uint32_t read_size = 0;
    -
    503 int n_hardfault = RTT_ReadFromFlash(HF_RTT_TAG_BASE, buffer, HF_RTT_TAIL_SIZE, &read_size);
    -
    504 if (n_hardfault > 0)
    -
    505 {
    -
    506 my_printf("\n--- Recovered HardFault RTT buffer #%u ---\n", n_hardfault);
    -
    507 for (int i = 0; i < read_size; i++)
    -
    508 {
    -
    509 char c = buffer[i];
    -
    510 if (c == 0 || c == (char)0xFF) break;
    -
    511 my_printf("%c", c);
    -
    512 }
    -
    513
    -
    514 if(erase)
    - -
    516 my_printf("\n--------- HardFault Dump End ---------\n");
    -
    517 return 1;
    -
    518 }
    -
    519 return 0;
    -
    520}
    +
    485
    +
    486/**
    +
    487 * @brief Проверка и вывод последнего HardFault-трейса из Flash
    +
    488 * @details
    +
    489 * Функция ищет последнюю запись HardFault по базовому тегу HF_RTT_TAG_BASE
    +
    490 * и выводит её содержимое в консоль. После успешного вывода Flash можно опционально очистить.
    +
    491 *
    +
    492 * @return int
    +
    493 * - 1 — данные HardFault найдены и выведены
    +
    494 * - 0 — данные отсутствуют или тег не найден
    +
    495 *
    +
    496 * @note Вызов рекомендуется при инициализации приложения для анализа предыдущего сбоя.
    +
    497 */
    +
    +
    498__STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    +
    499{
    +
    500 char buffer[RTT_FLASH_BUFFER_SIZE];
    +
    501 uint32_t read_size = 0;
    +
    502 int n_hardfault = RTT_ReadFromFlash(HF_RTT_TAG_BASE, buffer, HF_RTT_TAIL_SIZE, &read_size);
    +
    503 if (n_hardfault > 0)
    +
    504 {
    +
    505 my_printf("\n--- Recovered HardFault RTT buffer #%u ---\n", n_hardfault);
    +
    506 for (int i = 0; i < read_size; i++)
    +
    507 {
    +
    508 char c = buffer[i];
    +
    509 if (c == 0 || c == (char)0xFF) break;
    +
    510 my_printf("%c", c);
    +
    511 }
    +
    512
    +
    513 if(erase)
    + +
    515 my_printf("\n--------- HardFault Dump End ---------\n");
    +
    516 return 1;
    +
    517 }
    +
    518 return 0;
    +
    519}
    +
    520
    521
    -
    522
    -
    523static HF_StackFrame_t *stack_frame;
    -
    524static uint32_t stack_dump[HF_STACK_DUMP_WORDS];
    -
    525static void *ret_adr[10] = {0};
    -
    526/**
    -
    527 * @brief Обработчик HardFault
    -
    528 * @details
    -
    529 * Вызывается из прерывания HardFault или в любом месте где понятно что ошибка критическая.
    -
    530 * Последовательно выполняет:
    -
    531 * 1. Определяет активный стек (MSP или PSP) на момент сбоя.
    -
    532 * 2. Сохраняет значения регистров R0-R3, R12, LR, PC, PSR.
    -
    533 * 3. Выводит системные регистры CFSR, HFSR, DFSR, AFSR, MMFAR, BFAR.
    -
    534 * 4. Формирует stack trace с 3 уровнями возврата.
    -
    535 * 5. Копирует последние символы RTT буфера.
    -
    536 * 6. Сохраняет все данные во Flash через RTT_SaveToFlash с базовым тегом HF_RTT_TAG_BASE.
    -
    537 *
    -
    538 * @note Функция защищена, так как вызывается в контексте сбоя — минимизирует использование вызовов HAL.
    -
    539 */
    -
    -
    540__STATIC_FORCEINLINE void HF_HandleFault(void)
    -
    541{
    -
    542 // Получаем указатель на стек, где произошёл HardFault
    -
    543 __ASM volatile(
    -
    544 "TST lr, #4 \n"
    -
    545 "ITE EQ \n"
    -
    546 "MRSEQ %[ptr], MSP\n"
    -
    547 "MRSNE %[ptr], PSP\n"
    -
    548 : [ptr] "=r"(stack_frame)
    -
    549 );
    -
    550
    -
    551 my_printf("\n===== HardFault occurred! =====\n");
    -
    552 my_printf("R0 = 0x%08X\n", stack_frame->r0);
    -
    553 my_printf("R1 = 0x%08X\n", stack_frame->r1);
    -
    554 my_printf("R2 = 0x%08X\n", stack_frame->r2);
    -
    555 my_printf("R3 = 0x%08X\n", stack_frame->r3);
    -
    556 my_printf("R12 = 0x%08X\n", stack_frame->r12);
    -
    557 my_printf("LR = 0x%08X\n", stack_frame->lr);
    -
    558 my_printf("PC = 0x%08X\n", stack_frame->pc);
    -
    559 my_printf("PSR = 0x%08X\n", stack_frame->psr);
    -
    560
    -
    561 my_printf("CFSR = 0x%08X\n", SCB->CFSR);
    -
    562 my_printf("HFSR = 0x%08X\n", SCB->HFSR);
    -
    563 my_printf("DFSR = 0x%08X\n", SCB->DFSR);
    -
    564 my_printf("AFSR = 0x%08X\n", SCB->AFSR);
    -
    565 my_printf("MMFAR = 0x%08X\n", SCB->MMFAR);
    -
    566 my_printf("BFAR = 0x%08X\n", SCB->BFAR);
    -
    567
    -
    568 // --- Stack trace ---
    -
    569 my_printf("--- Stack trace ---\n");
    -
    570 ret_adr[0] = __builtin_return_address(0);
    -
    571 ret_adr[1] = __builtin_return_address(1);
    -
    572 ret_adr[2] = __builtin_return_address(2);
    -
    573
    -
    574 for (int i = 0; i < 3; i++) // развернуть n уровней
    -
    575 {
    -
    576 if(ret_adr[i])
    -
    577 my_printf(" #%d: 0x%08lX\r\n", i, ret_adr[i]); // -1 для Thumb
    -
    578 }
    - -
    580}
    +
    522static HF_StackFrame_t *stack_frame;
    +
    523static uint32_t stack_dump[HF_STACK_DUMP_WORDS];
    +
    524static void *ret_adr[10] = {0};
    +
    525/**
    +
    526 * @brief Обработчик HardFault
    +
    527 * @details
    +
    528 * Вызывается из прерывания HardFault или в любом месте где понятно что ошибка критическая.
    +
    529 * Последовательно выполняет:
    +
    530 * 1. Определяет активный стек (MSP или PSP) на момент сбоя.
    +
    531 * 2. Сохраняет значения регистров R0-R3, R12, LR, PC, PSR.
    +
    532 * 3. Выводит системные регистры CFSR, HFSR, DFSR, AFSR, MMFAR, BFAR.
    +
    533 * 4. Формирует stack trace с 3 уровнями возврата.
    +
    534 * 5. Копирует последние символы RTT буфера.
    +
    535 * 6. Сохраняет все данные во Flash через RTT_SaveToFlash с базовым тегом HF_RTT_TAG_BASE.
    +
    536 *
    +
    537 * @note Функция защищена, так как вызывается в контексте сбоя — минимизирует использование вызовов HAL.
    +
    538 */
    +
    +
    539__STATIC_FORCEINLINE void HF_HandleFault(void)
    +
    540{
    +
    541 // Получаем указатель на стек, где произошёл HardFault
    +
    542 __ASM volatile(
    +
    543 "TST lr, #4 \n"
    +
    544 "ITE EQ \n"
    +
    545 "MRSEQ %[ptr], MSP\n"
    +
    546 "MRSNE %[ptr], PSP\n"
    +
    547 : [ptr] "=r"(stack_frame)
    +
    548 );
    +
    549
    +
    550 my_printf("\n===== HardFault occurred! =====\n");
    +
    551 my_printf("R0 = 0x%08X\n", stack_frame->r0);
    +
    552 my_printf("R1 = 0x%08X\n", stack_frame->r1);
    +
    553 my_printf("R2 = 0x%08X\n", stack_frame->r2);
    +
    554 my_printf("R3 = 0x%08X\n", stack_frame->r3);
    +
    555 my_printf("R12 = 0x%08X\n", stack_frame->r12);
    +
    556 my_printf("LR = 0x%08X\n", stack_frame->lr);
    +
    557 my_printf("PC = 0x%08X\n", stack_frame->pc);
    +
    558 my_printf("PSR = 0x%08X\n", stack_frame->psr);
    +
    559
    +
    560 my_printf("CFSR = 0x%08X\n", SCB->CFSR);
    +
    561 my_printf("HFSR = 0x%08X\n", SCB->HFSR);
    +
    562 my_printf("DFSR = 0x%08X\n", SCB->DFSR);
    +
    563 my_printf("AFSR = 0x%08X\n", SCB->AFSR);
    +
    564 my_printf("MMFAR = 0x%08X\n", SCB->MMFAR);
    +
    565 my_printf("BFAR = 0x%08X\n", SCB->BFAR);
    +
    566
    +
    567 // --- Stack trace ---
    +
    568 my_printf("--- Stack trace ---\n");
    +
    569 ret_adr[0] = __builtin_return_address(0);
    +
    570 ret_adr[1] = __builtin_return_address(1);
    +
    571 ret_adr[2] = __builtin_return_address(2);
    +
    572
    +
    573 for (int i = 0; i < 3; i++) // развернуть n уровней
    +
    574 {
    +
    575 if(ret_adr[i])
    +
    576 my_printf(" #%d: 0x%08lX\r\n", i, ret_adr[i]); // -1 для Thumb
    +
    577 }
    + +
    579}
    -
    581#else // HAL_MODULE_ENABLED && HARDFAULT_SERIAL_TRACE
    -
    582#define HF_CheckRecovered(...) 0
    -
    583#define HF_HandleFault(...)
    -
    584#endif // HAL_MODULE_ENABLED && HARDFAULT_SERIAL_TRACE
    -
    585/** TRACE_HARDFAULT
    -
    586 * @}
    -
    587 */
    +
    580#else // HAL_MODULE_ENABLED && HARDFAULT_SERIAL_TRACE
    +
    581#define HF_CheckRecovered(...) 0
    +
    582#define HF_HandleFault(...)
    +
    583#endif // HAL_MODULE_ENABLED && HARDFAULT_SERIAL_TRACE
    +
    584/** TRACE_HARDFAULT
    +
    585 * @}
    +
    586 */
    +
    587
    588
    589
    -
    590
    -
    591#endif //__TRACE_H_
    +
    590#endif //__TRACE_H_
    #define RTT_FLASH_SECTOR
    Сектор FLASH куда положится RTT буфер
    #define RTT_FLASH_BUFFER_SIZE
    Размер буфера RTT в Flash.
    #define RTT_FLASH_SECTOR_START
    Начало сектора RTT_FLASH_SECTOR.
    @@ -716,27 +713,28 @@ $(function(){initNavTree('trace_8h_source.html','',''); });
    #define HF_RTT_TAG_BASE
    базовый тег для HardFault
    #define HF_RTT_TAIL_SIZE
    Размер буфера RTT, который сохранится при Hardfault.
    #define RTT_FLASH_SECTOR_END
    Конец сектора RTT_FLASH_SECTOR.
    -
    __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    Проверка и вывод последнего HardFault-трейса из Flash.
    Definition trace.h:499
    -
    __STATIC_FORCEINLINE void HF_HandleFault(void)
    Обработчик HardFault.
    Definition trace.h:540
    -
    __STATIC_FORCEINLINE void RTT_FlashPrepare(void)
    Подготовка Flash к записи
    Definition trace.h:203
    -
    __STATIC_FORCEINLINE int RTT_ReadFromFlash(uint32_t tag, char *Buffer, uint32_t tail_size, uint32_t *read_size)
    Читает последние символы RTT-буфера из Flash по тегу
    Definition trace.h:324
    -
    __STATIC_FORCEINLINE int RTT_SaveToFlash(uint32_t tag, uint32_t tail_size)
    Сохраняет последние символы RTT-буфера в Flash по тегу
    Definition trace.h:227
    -
    __STATIC_FORCEINLINE int RTT_EraseFlash(void)
    Стирание сектора Flash с RTT-буфером
    Definition trace.h:388
    -
    #define my_printf(...)
    Универсальный макрос для вывода трассировки
    Definition trace.h:80
    +
    __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
    Проверка и вывод последнего HardFault-трейса из Flash.
    Definition trace.h:498
    +
    __STATIC_FORCEINLINE void HF_HandleFault(void)
    Обработчик HardFault.
    Definition trace.h:539
    +
    __STATIC_FORCEINLINE void RTT_FlashPrepare(void)
    Подготовка Flash к записи
    Definition trace.h:202
    +
    __STATIC_FORCEINLINE int RTT_ReadFromFlash(uint32_t tag, char *Buffer, uint32_t tail_size, uint32_t *read_size)
    Читает последние символы RTT-буфера из Flash по тегу
    Definition trace.h:323
    +
    __STATIC_FORCEINLINE int RTT_SaveToFlash(uint32_t tag, uint32_t tail_size)
    Сохраняет последние символы RTT-буфера в Flash по тегу
    Definition trace.h:226
    +
    __STATIC_FORCEINLINE int RTT_EraseFlash(void)
    Стирание сектора Flash с RTT-буфером
    Definition trace.h:387
    +
    #define my_printf(...)
    Универсальный макрос для вывода трассировки
    Definition trace.h:79
    Заголочный файл для дефайнов библиотеки MyLibsGeneral.
    -
    Контекст стек-фрейма процессора при HardFault.
    Definition trace.h:476
    -
    uint32_t pc
    Program Counter.
    Definition trace.h:483
    -
    uint32_t r1
    Регистр R1.
    Definition trace.h:478
    -
    uint32_t r0
    Регистр R0.
    Definition trace.h:477
    -
    uint32_t r3
    Регистр R3.
    Definition trace.h:480
    -
    uint32_t r2
    Регистр R2.
    Definition trace.h:479
    -
    uint32_t lr
    Link Register.
    Definition trace.h:482
    -
    uint32_t r12
    Регистр R12.
    Definition trace.h:481
    -
    uint32_t psr
    Program Status Register.
    Definition trace.h:484
    -
    Структура RTT, которая будет положена в Flash.
    Definition trace.h:193
    -
    uint32_t tag
    Уникальный идентификатор буфера
    Definition trace.h:194
    -
    char data[1024]
    Буфер RTT.
    Definition trace.h:196
    -
    uint32_t size
    Размер данных
    Definition trace.h:195
    +
    Контекст стек-фрейма процессора при HardFault.
    Definition trace.h:475
    +
    uint32_t pc
    Program Counter.
    Definition trace.h:482
    +
    uint32_t r1
    Регистр R1.
    Definition trace.h:477
    +
    uint32_t r0
    Регистр R0.
    Definition trace.h:476
    +
    uint32_t r3
    Регистр R3.
    Definition trace.h:479
    +
    uint32_t r2
    Регистр R2.
    Definition trace.h:478
    +
    uint32_t lr
    Link Register.
    Definition trace.h:481
    +
    uint32_t r12
    Регистр R12.
    Definition trace.h:480
    +
    uint32_t psr
    Program Status Register.
    Definition trace.h:483
    +
    Структура RTT, которая будет положена в Flash.
    Definition trace.h:192
    +
    char data[RTT_FLASH_BUFFER_SIZE]
    Буфер RTT.
    Definition trace.h:195
    +
    uint32_t tag
    Уникальный идентификатор буфера
    Definition trace.h:193
    +
    uint32_t size
    Размер данных
    Definition trace.h:194
    +
    diff --git a/Doc/html/trackers_8h.html b/Doc/html/trackers_8h.html index 2807e35..6aee3a3 100644 --- a/Doc/html/trackers_8h.html +++ b/Doc/html/trackers_8h.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/trackers.h File Reference +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/trackers.h File Reference @@ -108,26 +108,26 @@ $(function(){initNavTree('trackers_8h.html','',''); });
    This graph shows which files directly or indirectly include this file:
    diff --git a/Doc/html/trackers_8h__dep__incl.map b/Doc/html/trackers_8h__dep__incl.map index 053a362..8df98fc 100644 --- a/Doc/html/trackers_8h__dep__incl.map +++ b/Doc/html/trackers_8h__dep__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/trackers_8h__dep__incl.md5 b/Doc/html/trackers_8h__dep__incl.md5 index 050b8f3..7e40c44 100644 --- a/Doc/html/trackers_8h__dep__incl.md5 +++ b/Doc/html/trackers_8h__dep__incl.md5 @@ -1 +1 @@ -99028f5c43001eb4e51e7c688fd1c620 \ No newline at end of file +61cd16676b826f413137a9a26a664c28 \ No newline at end of file diff --git a/Doc/html/trackers_8h__dep__incl.png b/Doc/html/trackers_8h__dep__incl.png index 0282cbb..6f62567 100644 Binary files a/Doc/html/trackers_8h__dep__incl.png and b/Doc/html/trackers_8h__dep__incl.png differ diff --git a/Doc/html/trackers_8h__incl.map b/Doc/html/trackers_8h__incl.map index b5edff9..afdc6cb 100644 --- a/Doc/html/trackers_8h__incl.map +++ b/Doc/html/trackers_8h__incl.map @@ -1,9 +1,9 @@ - - - - - - - - + + + + + + + + diff --git a/Doc/html/trackers_8h__incl.md5 b/Doc/html/trackers_8h__incl.md5 index a4f7cc8..9252d0a 100644 --- a/Doc/html/trackers_8h__incl.md5 +++ b/Doc/html/trackers_8h__incl.md5 @@ -1 +1 @@ -cf1d551546e4ada7a970f07bfd50ffed \ No newline at end of file +346bb684e46833c3fe21db239cd7ea79 \ No newline at end of file diff --git a/Doc/html/trackers_8h__incl.png b/Doc/html/trackers_8h__incl.png index c865976..8b7e967 100644 Binary files a/Doc/html/trackers_8h__incl.png and b/Doc/html/trackers_8h__incl.png differ diff --git a/Doc/html/trackers_8h_source.html b/Doc/html/trackers_8h_source.html index 73cfb47..66b853a 100644 --- a/Doc/html/trackers_8h_source.html +++ b/Doc/html/trackers_8h_source.html @@ -5,7 +5,7 @@ -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/trackers.h Source File +MyLibs: E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/trackers.h Source File @@ -106,165 +106,164 @@ $(function(){initNavTree('trackers_8h_source.html','',''); });
    4* @brief Заголочный файл для работы с трекерами @ref TRACKERS.
    5**************************************************************************
    6* @addtogroup TRACKERS Trackers defines
    -
    7* @ingroup MYLIBS_DEFINES
    -
    8* @brief Дефайны для работы с трекерами
    -
    9* @details
    -
    10Есть дефайн для объявления структуры трекера: TrackerTypeDef(num_user_vars).
    -
    11Структура состоит из следующих элементов:
    -
    12- cnt_ok
    -
    13- cnt_err
    -
    14- cnt_warn
    -
    15- user[num_user_vars]
    -
    16Также есть ряд функций (дефайнов) для обращения к элементам этой структуры.
    -
    17
    -
    18Параметры для конфигурации:
    -
    19- @ref TRACKERS_ENABLE - Включить трекеры
    -
    20 Если трекеры @ref TRACKERS_ENABLE отключены, то все дефайны определяются как ничего
    -
    21 и на производительность кода не влияют
    -
    22
    -
    23@par Пример:
    -
    24
    -
    25Определяем typedef трекера измерений Measure_TrackerTypeDef
    -
    26
    -
    27@verbatim
    -
    28 typedef TrackerTypeDef(MEASURE_USER_VARS_NUMB) Measure_TrackerTypeDef;
    -
    29@endverbatim
    -
    30
    -
    31И через @ref Measure_TrackerTypeDef структура подключается в другие структуры
    -
    32
    -
    33Для работы с структурой можно использовать функции:
    -
    34- Для получения значения:
    -
    35 - TrackerGet_Ok()
    -
    36 - TrackerGet_Err()
    -
    37 - TrackerGet_Warn()
    -
    38 - TrackerGet_User(n)
    -
    39
    -
    40- Для записи значения:
    -
    41 - TrackerCnt_Ok()
    -
    42 - TrackerCnt_Err()
    -
    43 - TrackerCnt_Warn()
    -
    44 - TrackerCnt_User()
    -
    45 - TrackerWrite_User(n)
    -
    46
    -
    47- Для очищения значения:
    -
    48 - TrackerClear_All()
    -
    49 - TrackerClear_Ok()
    -
    50 - TrackerClear_Err()
    -
    51 - TrackerClear_Warn()
    -
    52 - TrackerClear_User(n)
    -
    53 - TrackerClear_UserAll()
    -
    54* @{
    -
    55*************************************************************************/
    -
    56#ifndef __TRACKERS_H_
    -
    57#define __TRACKERS_H_
    -
    58#include "mylibs_defs.h"
    -
    59
    -
    60#ifdef TRACKERS_ENABLE
    -
    61 /**
    -
    62 * @brief Структура для счетчиков отладки
    -
    63 * @param num_user_vars - количество пользовательских переменных
    -
    64 * @details Содержит счетчик для успешных событый (cnt_ok),
    -
    65 * счетчик для ошибок (cnt_err), счетчик для предупреждений (cnt_warn).
    -
    66 *
    -
    67 * Также есть возможность объявить пользовательские переменные в
    -
    68 * количестве <num_user_vars> штук.
    -
    69 */
    -
    -
    70 #define TrackerTypeDef(num_user_vars) \
    -
    71 struct \
    -
    72 { \
    -
    73 uint32_t cnt_ok; \
    -
    74 uint32_t cnt_err; \
    -
    75 uint32_t cnt_warn; \
    -
    76 uint32_t user[num_user_vars]; \
    -
    77 }
    +
    7* @brief Дефайны для работы с трекерами
    +
    8* @details
    +
    9Есть дефайн для объявления структуры трекера: TrackerTypeDef(num_user_vars).
    +
    10Структура состоит из следующих элементов:
    +
    11- cnt_ok
    +
    12- cnt_err
    +
    13- cnt_warn
    +
    14- user[num_user_vars]
    +
    15Также есть ряд функций (дефайнов) для обращения к элементам этой структуры.
    +
    16
    +
    17Параметры для конфигурации:
    +
    18- @ref TRACKERS_ENABLE - Включить трекеры
    +
    19 Если трекеры @ref TRACKERS_ENABLE отключены, то все дефайны определяются как ничего
    +
    20 и на производительность кода не влияют
    +
    21
    +
    22@par Пример:
    +
    23
    +
    24Определяем typedef трекера измерений Measure_TrackerTypeDef
    +
    25
    +
    26@verbatim
    +
    27 typedef TrackerTypeDef(MEASURE_USER_VARS_NUMB) Measure_TrackerTypeDef;
    +
    28@endverbatim
    +
    29
    +
    30И через @ref Measure_TrackerTypeDef структура подключается в другие структуры
    +
    31
    +
    32Для работы с структурой можно использовать функции:
    +
    33- Для получения значения:
    +
    34 - TrackerGet_Ok()
    +
    35 - TrackerGet_Err()
    +
    36 - TrackerGet_Warn()
    +
    37 - TrackerGet_User(n)
    +
    38
    +
    39- Для записи значения:
    +
    40 - TrackerCnt_Ok()
    +
    41 - TrackerCnt_Err()
    +
    42 - TrackerCnt_Warn()
    +
    43 - TrackerCnt_User()
    +
    44 - TrackerWrite_User(n)
    +
    45
    +
    46- Для очищения значения:
    +
    47 - TrackerClear_All()
    +
    48 - TrackerClear_Ok()
    +
    49 - TrackerClear_Err()
    +
    50 - TrackerClear_Warn()
    +
    51 - TrackerClear_User(n)
    +
    52 - TrackerClear_UserAll()
    +
    53* @{
    +
    54*************************************************************************/
    +
    55#ifndef __TRACKERS_H_
    +
    56#define __TRACKERS_H_
    +
    57#include "mylibs_defs.h"
    +
    58
    +
    59#ifdef TRACKERS_ENABLE
    +
    60 /**
    +
    61 * @brief Структура для счетчиков отладки
    +
    62 * @param num_user_vars - количество пользовательских переменных
    +
    63 * @details Содержит счетчик для успешных событый (cnt_ok),
    +
    64 * счетчик для ошибок (cnt_err), счетчик для предупреждений (cnt_warn).
    +
    65 *
    +
    66 * Также есть возможность объявить пользовательские переменные в
    +
    67 * количестве <num_user_vars> штук.
    +
    68 */
    +
    +
    69 #define TrackerTypeDef(num_user_vars) \
    +
    70 struct \
    +
    71 { \
    +
    72 uint32_t cnt_ok; \
    +
    73 uint32_t cnt_err; \
    +
    74 uint32_t cnt_warn; \
    +
    75 uint32_t user[num_user_vars]; \
    +
    76 }
    -
    78
    -
    79 /** @brief Получить количетство пользовательских переменных */
    -
    80 #define num_of_usercnts(_user_) (sizeof(_user_) / sizeof(uint32_t))
    -
    81 /** @brief Проверка существует ли указанная пользовательская переменная */
    -
    82 #define assert_usertracker(_cntstruct_, _uservarnumb_) ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
    -
    83 /** @brief Условие для проверки существует ли указанная пользовательская переменная */
    -
    84 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(assert_usertracker(_cntstruct_, _uservarnumb_))
    -
    85 /** @brief Тернарный оператор для проверки существует ли указанная пользовательская переменная */
    -
    86 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
    -
    87
    -
    88
    -
    89 /** @brief Считать счетчик успешных событий */
    -
    90 #define TrackerGet_Ok(_cntstruct_) (_cntstruct_).cnt_ok
    -
    91 /** @brief Считать счетчик ошибок */
    -
    92 #define TrackerGet_Err(_cntstruct_) (_cntstruct_).cnt_err
    -
    93 /** @brief Считать счетчик предупреждений */
    -
    94 #define TrackerGet_Warn(_cntstruct_) (_cntstruct_).cnt_warn
    -
    95 /**
    -
    96 * @brief Считать пользовательскую переменную
    -
    97 * @note Здесь нет проверки - существует ли пользовательская переменная!
    -
    98 * Есть возможность выйти за границы структуры!!!
    -
    99 * Чтобы этого избежать можно использовать дефайн #ref assert_usertracker()
    -
    100 @verbatim
    -
    101 if(assert_usertracker(struct, 0)) {
    -
    102 TrackerGet_User(struct, 0)
    -
    103 }
    -
    104 @endverbatim
    -
    105 */
    -
    106 #define TrackerGet_User(_cntstruct_, _uservarnumb_) (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
    +
    77
    +
    78 /** @brief Получить количетство пользовательских переменных */
    +
    79 #define num_of_usercnts(_user_) (sizeof(_user_) / sizeof(uint32_t))
    +
    80 /** @brief Проверка существует ли указанная пользовательская переменная */
    +
    81 #define assert_usertracker(_cntstruct_, _uservarnumb_) ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
    +
    82 /** @brief Условие для проверки существует ли указанная пользовательская переменная */
    +
    83 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(assert_usertracker(_cntstruct_, _uservarnumb_))
    +
    84 /** @brief Тернарный оператор для проверки существует ли указанная пользовательская переменная */
    +
    85 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
    +
    86
    +
    87
    +
    88 /** @brief Считать счетчик успешных событий */
    +
    89 #define TrackerGet_Ok(_cntstruct_) (_cntstruct_).cnt_ok
    +
    90 /** @brief Считать счетчик ошибок */
    +
    91 #define TrackerGet_Err(_cntstruct_) (_cntstruct_).cnt_err
    +
    92 /** @brief Считать счетчик предупреждений */
    +
    93 #define TrackerGet_Warn(_cntstruct_) (_cntstruct_).cnt_warn
    +
    94 /**
    +
    95 * @brief Считать пользовательскую переменную
    +
    96 * @note Здесь нет проверки - существует ли пользовательская переменная!
    +
    97 * Есть возможность выйти за границы структуры!!!
    +
    98 * Чтобы этого избежать можно использовать дефайн #ref assert_usertracker()
    +
    99 @verbatim
    +
    100 if(assert_usertracker(struct, 0)) {
    +
    101 TrackerGet_User(struct, 0)
    +
    102 }
    +
    103 @endverbatim
    +
    104 */
    +
    105 #define TrackerGet_User(_cntstruct_, _uservarnumb_) (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
    +
    106
    107
    -
    108
    -
    109
    -
    110 /** @brief Инкрементирование счетчика успешных событий */
    -
    111 #define TrackerCnt_Ok(_cntstruct_) (_cntstruct_).cnt_ok++
    -
    112 /** @brief Инкрементирование счетчика ошибок */
    -
    113 #define TrackerCnt_Err(_cntstruct_) (_cntstruct_).cnt_err++
    -
    114 /** @brief Инкрементирование счетчика предупреждений */
    -
    115 #define TrackerCnt_Warn(_cntstruct_) (_cntstruct_).cnt_warn++
    -
    116 /** @brief Инкрементирование пользовательской переменной */
    -
    117 #define TrackerCnt_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
    -
    118 /** @brief Запись числа в пользовательскую переменную */
    -
    119 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
    -
    120
    -
    121 /** @brief Очистка всей структуры */
    -
    122 #define TrackerClear_All(_cntstruct_) memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
    -
    123 /** @brief Очистка счетчика успешных событий */
    -
    124 #define TrackerClear_Ok(_cntstruct_) (_cntstruct_).cnt_ok = 0
    -
    125 /** @brief Очистка счетчика ошибок */
    -
    126 #define TrackerClear_Err(_cntstruct_) (_cntstruct_).cnt_err = 0
    -
    127 /** @brief Очистка счетчика предупреждений */
    -
    128 #define TrackerClear_Warn(_cntstruct_) (_cntstruct_).cnt_warn = 0
    -
    129 /** @brief Очистка пользовательской переменной */
    -
    130 #define TrackerClear_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
    -
    131 /** @brief Очистка всех пользовательских переменных */
    -
    132 #define TrackerClear_UserAll(_cntstruct_) memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
    -
    133
    -
    134#else //TRACKERS_ENABLE
    -
    135
    -
    136 #define TrackerTypeDef(num_user_vars) void *
    -
    137
    -
    138 #define num_of_usercnts(_user_) 0
    -
    139 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
    -
    140 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
    -
    141 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
    -
    142
    -
    143 #define TrackerGet_Ok(_cntstruct_) dummy
    -
    144 #define TrackerGet_Err(_cntstruct_) dummy
    -
    145 #define TrackerGet_Warn(_cntstruct_) dummy
    -
    146 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
    -
    147
    -
    148 #define TrackerCnt_Ok(_cntstruct_)
    -
    149 #define TrackerCnt_Err(_cntstruct_)
    -
    150 #define TrackerCnt_Warn(_cntstruct_)
    -
    151 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
    -
    152 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
    -
    153
    -
    154 #define TrackerClear_All(_cntstruct_)
    -
    155 #define TrackerClear_Ok(_cntstruct_)
    -
    156 #define TrackerClear_Err(_cntstruct_)
    -
    157 #define TrackerClear_Warn(_cntstruct_)
    -
    158 #define TrackerClear_User(_cntstruct_)
    -
    159 #define TrackerClear_UserAll(_cntstruct_)
    -
    160
    -
    161#endif //TRACKERS_ENABLE
    -
    162
    -
    163#endif //__TRACKERS_H_
    +
    108
    +
    109 /** @brief Инкрементирование счетчика успешных событий */
    +
    110 #define TrackerCnt_Ok(_cntstruct_) (_cntstruct_).cnt_ok++
    +
    111 /** @brief Инкрементирование счетчика ошибок */
    +
    112 #define TrackerCnt_Err(_cntstruct_) (_cntstruct_).cnt_err++
    +
    113 /** @brief Инкрементирование счетчика предупреждений */
    +
    114 #define TrackerCnt_Warn(_cntstruct_) (_cntstruct_).cnt_warn++
    +
    115 /** @brief Инкрементирование пользовательской переменной */
    +
    116 #define TrackerCnt_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
    +
    117 /** @brief Запись числа в пользовательскую переменную */
    +
    118 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
    +
    119
    +
    120 /** @brief Очистка всей структуры */
    +
    121 #define TrackerClear_All(_cntstruct_) memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
    +
    122 /** @brief Очистка счетчика успешных событий */
    +
    123 #define TrackerClear_Ok(_cntstruct_) (_cntstruct_).cnt_ok = 0
    +
    124 /** @brief Очистка счетчика ошибок */
    +
    125 #define TrackerClear_Err(_cntstruct_) (_cntstruct_).cnt_err = 0
    +
    126 /** @brief Очистка счетчика предупреждений */
    +
    127 #define TrackerClear_Warn(_cntstruct_) (_cntstruct_).cnt_warn = 0
    +
    128 /** @brief Очистка пользовательской переменной */
    +
    129 #define TrackerClear_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
    +
    130 /** @brief Очистка всех пользовательских переменных */
    +
    131 #define TrackerClear_UserAll(_cntstruct_) memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
    +
    132
    +
    133#else //TRACKERS_ENABLE
    +
    134
    +
    135 #define TrackerTypeDef(num_user_vars) void *
    +
    136
    +
    137 #define num_of_usercnts(_user_) 0
    +
    138 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
    +
    139 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
    +
    140 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
    +
    141
    +
    142 #define TrackerGet_Ok(_cntstruct_) dummy
    +
    143 #define TrackerGet_Err(_cntstruct_) dummy
    +
    144 #define TrackerGet_Warn(_cntstruct_) dummy
    +
    145 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
    +
    146
    +
    147 #define TrackerCnt_Ok(_cntstruct_)
    +
    148 #define TrackerCnt_Err(_cntstruct_)
    +
    149 #define TrackerCnt_Warn(_cntstruct_)
    +
    150 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
    +
    151 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
    +
    152
    +
    153 #define TrackerClear_All(_cntstruct_)
    +
    154 #define TrackerClear_Ok(_cntstruct_)
    +
    155 #define TrackerClear_Err(_cntstruct_)
    +
    156 #define TrackerClear_Warn(_cntstruct_)
    +
    157 #define TrackerClear_User(_cntstruct_)
    +
    158 #define TrackerClear_UserAll(_cntstruct_)
    +
    159
    +
    160#endif //TRACKERS_ENABLE
    +
    161
    +
    162#endif //__TRACKERS_H_
    Заголочный файл для дефайнов библиотеки MyLibsGeneral.
    diff --git a/Doc/html/unionuint16___bit_type_def.html b/Doc/html/unionuint16___bit_type_def.html index 28981df..eb400a5 100644 --- a/Doc/html/unionuint16___bit_type_def.html +++ b/Doc/html/unionuint16___bit_type_def.html @@ -97,32 +97,32 @@ $(function(){initNavTree('unionuint16___bit_type_def.html','','unionuint16___bit
    -
    uint16_BitTypeDef Union Reference
    +
    uint16_BitTypeDef Union Reference
    - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +

    Public Attributes

    uint16_t all
    +
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
    bit
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
    bit

    Detailed Description

    @@ -401,7 +401,7 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    diff --git a/Doc/html/unionuint32___bit_type_def.html b/Doc/html/unionuint32___bit_type_def.html index 5ef1c45..367db3f 100644 --- a/Doc/html/unionuint32___bit_type_def.html +++ b/Doc/html/unionuint32___bit_type_def.html @@ -97,48 +97,48 @@ $(function(){initNavTree('unionuint32___bit_type_def.html','','unionuint32___bit
    -
    uint32_BitTypeDef Union Reference
    +
    uint32_BitTypeDef Union Reference
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Attributes

    uint32_t all
    +
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
       unsigned   bit16:1 
       unsigned   bit17:1 
       unsigned   bit18:1 
       unsigned   bit19:1 
       unsigned   bit20:1 
       unsigned   bit21:1 
       unsigned   bit22:1 
       unsigned   bit23:1 
       unsigned   bit24:1 
       unsigned   bit25:1 
       unsigned   bit26:1 
       unsigned   bit27:1 
       unsigned   bit28:1 
       unsigned   bit29:1 
       unsigned   bit30:1 
       unsigned   bit31:1 
    bit
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
       unsigned   bit16:1 
       unsigned   bit17:1 
       unsigned   bit18:1 
       unsigned   bit19:1 
       unsigned   bit20:1 
       unsigned   bit21:1 
       unsigned   bit22:1 
       unsigned   bit23:1 
       unsigned   bit24:1 
       unsigned   bit25:1 
       unsigned   bit26:1 
       unsigned   bit27:1 
       unsigned   bit28:1 
       unsigned   bit29:1 
       unsigned   bit30:1 
       unsigned   bit31:1 
    bit

    Detailed Description

    @@ -673,7 +673,7 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    diff --git a/Doc/html/unionuint64___bit_type_def.html b/Doc/html/unionuint64___bit_type_def.html index 00f2bb5..105713a 100644 --- a/Doc/html/unionuint64___bit_type_def.html +++ b/Doc/html/unionuint64___bit_type_def.html @@ -97,80 +97,80 @@ $(function(){initNavTree('unionuint64___bit_type_def.html','','unionuint64___bit
    -
    uint64_BitTypeDef Union Reference
    +
    uint64_BitTypeDef Union Reference
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Attributes

    uint64_t all
    +
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
       unsigned   bit16:1 
       unsigned   bit17:1 
       unsigned   bit18:1 
       unsigned   bit19:1 
       unsigned   bit20:1 
       unsigned   bit21:1 
       unsigned   bit22:1 
       unsigned   bit23:1 
       unsigned   bit24:1 
       unsigned   bit25:1 
       unsigned   bit26:1 
       unsigned   bit27:1 
       unsigned   bit28:1 
       unsigned   bit29:1 
       unsigned   bit30:1 
       unsigned   bit31:1 
       unsigned   bit32:1 
       unsigned   bit33:1 
       unsigned   bit34:1 
       unsigned   bit35:1 
       unsigned   bit36:1 
       unsigned   bit37:1 
       unsigned   bit38:1 
       unsigned   bit39:1 
       unsigned   bit40:1 
       unsigned   bit41:1 
       unsigned   bit42:1 
       unsigned   bit43:1 
       unsigned   bit44:1 
       unsigned   bit45:1 
       unsigned   bit46:1 
       unsigned   bit47:1 
       unsigned   bit48:1 
       unsigned   bit49:1 
       unsigned   bit50:1 
       unsigned   bit51:1 
       unsigned   bit52:1 
       unsigned   bit53:1 
       unsigned   bit54:1 
       unsigned   bit55:1 
       unsigned   bit56:1 
       unsigned   bit57:1 
       unsigned   bit58:1 
       unsigned   bit59:1 
       unsigned   bit60:1 
       unsigned   bit61:1 
       unsigned   bit62:1 
       unsigned   bit63:1 
    bit
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
       unsigned   bit16:1 
       unsigned   bit17:1 
       unsigned   bit18:1 
       unsigned   bit19:1 
       unsigned   bit20:1 
       unsigned   bit21:1 
       unsigned   bit22:1 
       unsigned   bit23:1 
       unsigned   bit24:1 
       unsigned   bit25:1 
       unsigned   bit26:1 
       unsigned   bit27:1 
       unsigned   bit28:1 
       unsigned   bit29:1 
       unsigned   bit30:1 
       unsigned   bit31:1 
       unsigned   bit32:1 
       unsigned   bit33:1 
       unsigned   bit34:1 
       unsigned   bit35:1 
       unsigned   bit36:1 
       unsigned   bit37:1 
       unsigned   bit38:1 
       unsigned   bit39:1 
       unsigned   bit40:1 
       unsigned   bit41:1 
       unsigned   bit42:1 
       unsigned   bit43:1 
       unsigned   bit44:1 
       unsigned   bit45:1 
       unsigned   bit46:1 
       unsigned   bit47:1 
       unsigned   bit48:1 
       unsigned   bit49:1 
       unsigned   bit50:1 
       unsigned   bit51:1 
       unsigned   bit52:1 
       unsigned   bit53:1 
       unsigned   bit54:1 
       unsigned   bit55:1 
       unsigned   bit56:1 
       unsigned   bit57:1 
       unsigned   bit58:1 
       unsigned   bit59:1 
       unsigned   bit60:1 
       unsigned   bit61:1 
       unsigned   bit62:1 
       unsigned   bit63:1 
    bit

    Detailed Description

    @@ -1217,7 +1217,7 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    diff --git a/Doc/html/unionuint8___bit_type_def.html b/Doc/html/unionuint8___bit_type_def.html index 09f0845..d7a1bfd 100644 --- a/Doc/html/unionuint8___bit_type_def.html +++ b/Doc/html/unionuint8___bit_type_def.html @@ -97,24 +97,24 @@ $(function(){initNavTree('unionuint8___bit_type_def.html','','unionuint8___bit_t
    -
    uint8_BitTypeDef Union Reference
    +
    uint8_BitTypeDef Union Reference
    - - - - - - - - - - + + + + + + + + +

    Public Attributes

    uint8_t all
    +
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
    bit
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
    bit

    Detailed Description

    @@ -265,7 +265,7 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    • +
    • E:/.WORK/STM32/STM_Libs/STM32_ExtendedLibs/MyLibs/Inc/bit_access.h
    diff --git a/Doc/latex/_s_e_g_g_e_r___r_t_t_8c_source.tex b/Doc/latex/_s_e_g_g_e_r___r_t_t_8c_source.tex new file mode 100644 index 0000000..ad88561 --- /dev/null +++ b/Doc/latex/_s_e_g_g_e_r___r_t_t_8c_source.tex @@ -0,0 +1,2105 @@ +\doxysection{SEGGER\+\_\+\+RTT.\+c} +\hypertarget{_s_e_g_g_e_r___r_t_t_8c_source}{}\label{_s_e_g_g_e_r___r_t_t_8c_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT.c@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT.c}} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00001}00001\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00002}00002\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00003}00003\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ The\ Embedded\ Experts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00004}00004\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00005}00005\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00006}00006\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ (c)\ 1995\ -\/\ 2021\ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00007}00007\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00008}00008\ \textcolor{comment}{*\ \ \ \ \ \ \ www.segger.com\ \ \ \ \ Support:\ support@segger.com\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00009}00009\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00010}00010\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00011}00011\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00012}00012\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\ RTT\ *\ Real\ Time\ Transfer\ for\ embedded\ targets\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00013}00013\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00014}00014\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00015}00015\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00016}00016\ \textcolor{comment}{*\ All\ rights\ reserved.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00017}00017\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00018}00018\ \textcolor{comment}{*\ SEGGER\ strongly\ recommends\ to\ not\ make\ any\ changes\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00019}00019\ \textcolor{comment}{*\ to\ or\ modify\ the\ source\ code\ of\ this\ software\ in\ order\ to\ stay\ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00020}00020\ \textcolor{comment}{*\ compatible\ with\ the\ RTT\ protocol\ and\ J-\/Link.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00021}00021\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00022}00022\ \textcolor{comment}{*\ Redistribution\ and\ use\ in\ source\ and\ binary\ forms,\ with\ or\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00023}00023\ \textcolor{comment}{*\ without\ modification,\ are\ permitted\ provided\ that\ the\ following\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00024}00024\ \textcolor{comment}{*\ condition\ is\ met:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00025}00025\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00026}00026\ \textcolor{comment}{*\ o\ Redistributions\ of\ source\ code\ must\ retain\ the\ above\ copyright\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00027}00027\ \textcolor{comment}{*\ \ \ notice,\ this\ condition\ and\ the\ following\ disclaimer.\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00028}00028\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00029}00029\ \textcolor{comment}{*\ THIS\ SOFTWARE\ IS\ PROVIDED\ BY\ THE\ COPYRIGHT\ HOLDERS\ AND\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00030}00030\ \textcolor{comment}{*\ CONTRIBUTORS\ "{}AS\ IS"{}\ AND\ ANY\ EXPRESS\ OR\ IMPLIED\ WARRANTIES,\ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00031}00031\ \textcolor{comment}{*\ INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ THE\ IMPLIED\ WARRANTIES\ OF\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00032}00032\ \textcolor{comment}{*\ MERCHANTABILITY\ AND\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE\ ARE\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00033}00033\ \textcolor{comment}{*\ DISCLAIMED.\ IN\ NO\ EVENT\ SHALL\ SEGGER\ Microcontroller\ BE\ LIABLE\ FOR\ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00034}00034\ \textcolor{comment}{*\ ANY\ DIRECT,\ INDIRECT,\ INCIDENTAL,\ SPECIAL,\ EXEMPLARY,\ OR\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00035}00035\ \textcolor{comment}{*\ CONSEQUENTIAL\ DAMAGES\ (INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ PROCUREMENT\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00036}00036\ \textcolor{comment}{*\ OF\ SUBSTITUTE\ GOODS\ OR\ SERVICES;\ LOSS\ OF\ USE,\ DATA,\ OR\ PROFITS;\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00037}00037\ \textcolor{comment}{*\ OR\ BUSINESS\ INTERRUPTION)\ HOWEVER\ CAUSED\ AND\ ON\ ANY\ THEORY\ OF\ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00038}00038\ \textcolor{comment}{*\ LIABILITY,\ WHETHER\ IN\ CONTRACT,\ STRICT\ LIABILITY,\ OR\ TORT\ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00039}00039\ \textcolor{comment}{*\ (INCLUDING\ NEGLIGENCE\ OR\ OTHERWISE)\ ARISING\ IN\ ANY\ WAY\ OUT\ OF\ THE\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00040}00040\ \textcolor{comment}{*\ USE\ OF\ THIS\ SOFTWARE,\ EVEN\ IF\ ADVISED\ OF\ THE\ POSSIBILITY\ OF\ SUCH\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00041}00041\ \textcolor{comment}{*\ DAMAGE.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00042}00042\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00043}00043\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00044}00044\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00045}00045\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ version:\ 8.10g\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00046}00046\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00047}00047\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00048}00048\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00049}00049\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/END-\/OF-\/HEADER-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00050}00050\ \textcolor{comment}{File\ \ \ \ :\ SEGGER\_RTT.c}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00051}00051\ \textcolor{comment}{Purpose\ :\ Implementation\ of\ SEGGER\ real-\/time\ transfer\ (RTT)\ which}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00052}00052\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ allows\ real-\/time\ communication\ on\ targets\ which\ support}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00053}00053\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ debugger\ memory\ accesses\ while\ the\ CPU\ is\ running.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00054}00054\ \textcolor{comment}{Revision:\ \$Rev:\ 29668\ \$}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00055}00055\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00056}00056\ \textcolor{comment}{Additional\ information:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00057}00057\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ Type\ "{}int"{}\ is\ assumed\ to\ be\ 32-\/bits\ in\ size}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00058}00058\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ H-\/>T\ \ \ \ Host\ to\ target\ communication}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00059}00059\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ T-\/>H\ \ \ \ Target\ to\ host\ communication}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00060}00060\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00061}00061\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ RTT\ channel\ 0\ is\ always\ present\ and\ reserved\ for\ Terminal\ usage.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00062}00062\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ Name\ is\ fixed\ to\ "{}Terminal"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00063}00063\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00064}00064\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ Effective\ buffer\ size:\ SizeOfBuffer\ -\/\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00065}00065\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00066}00066\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ WrOff\ ==\ RdOff:\ \ \ \ \ \ \ Buffer\ is\ empty}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00067}00067\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ WrOff\ ==\ (RdOff\ -\/\ 1):\ Buffer\ is\ full}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00068}00068\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ WrOff\ >\ \ RdOff:\ \ \ \ \ \ \ Free\ space\ includes\ wrap-\/around}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00069}00069\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ WrOff\ <\ \ RdOff:\ \ \ \ \ \ \ Used\ space\ includes\ wrap-\/around}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00070}00070\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ (WrOff\ ==\ (SizeOfBuffer\ -\/\ 1))\ \&\&\ (RdOff\ ==\ 0):}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00071}00071\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Buffer\ full\ and\ wrap-\/around\ after\ next\ byte}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00072}00072\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00073}00073\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00074}00074\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00075}00075\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00076}00076\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00077}00077\ \textcolor{preprocessor}{\#include\ "{}SEGGER\_RTT.h"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00078}00078\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00079}00079\ \textcolor{preprocessor}{\#include\ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ for\ memcpy}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00080}00080\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00081}00081\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00082}00082\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00083}00083\ \textcolor{comment}{*\ \ \ \ \ \ \ Configuration,\ default\ values}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00084}00084\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00085}00085\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00086}00086\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00087}00087\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00088}00088\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00089}00089\ \textcolor{preprocessor}{\ \ \#ifdef\ SEGGER\_RTT\_CB\_ALIGN}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00090}00090\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Custom\ SEGGER\_RTT\_CB\_ALIGN()\ is\ not\ supported\ for\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00091}00091\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00092}00092\ \textcolor{preprocessor}{\ \ \#ifdef\ SEGGER\_RTT\_BUFFER\_ALIGN}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00093}00093\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Custom\ SEGGER\_RTT\_BUFFER\_ALIGN()\ is\ not\ supported\ for\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00094}00094\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00095}00095\ \textcolor{preprocessor}{\ \ \#ifdef\ SEGGER\_RTT\_PUT\_CB\_SECTION}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00096}00096\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Custom\ SEGGER\_RTT\_PUT\_CB\_SECTION()\ is\ not\ supported\ for\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00097}00097\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00098}00098\ \textcolor{preprocessor}{\ \ \#ifdef\ SEGGER\_RTT\_PUT\_BUFFER\_SECTION}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00099}00099\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Custom\ SEGGER\_RTT\_PUT\_BUFFER\_SECTION()\ is\ not\ supported\ for\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00100}00100\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00101}00101\ \textcolor{preprocessor}{\ \ \#ifdef\ SEGGER\_RTT\_BUFFER\_ALIGNMENT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00102}00102\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Custom\ SEGGER\_RTT\_BUFFER\_ALIGNMENT\ is\ not\ supported\ for\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00103}00103\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00104}00104\ \textcolor{preprocessor}{\ \ \#ifdef\ SEGGER\_RTT\_ALIGNMENT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00105}00105\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Custom\ SEGGER\_RTT\_ALIGNMENT\ is\ not\ supported\ for\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00106}00106\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00107}00107\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00108}00108\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00109}00109\ \textcolor{preprocessor}{\#ifndef\ \ \ BUFFER\_SIZE\_UP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00110}00110\ \textcolor{preprocessor}{\ \ \#define\ BUFFER\_SIZE\_UP\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1024\ \ }\textcolor{comment}{//\ Size\ of\ the\ buffer\ for\ terminal\ output\ of\ target,\ up\ to\ host}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00111}00111\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00112}00112\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00113}00113\ \textcolor{preprocessor}{\#ifndef\ \ \ BUFFER\_SIZE\_DOWN}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00114}00114\ \textcolor{preprocessor}{\ \ \#define\ BUFFER\_SIZE\_DOWN\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 16\ \ \ \ }\textcolor{comment}{//\ Size\ of\ the\ buffer\ for\ terminal\ input\ to\ target\ from\ host\ (Usually\ keyboard\ input)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00115}00115\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00116}00116\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00117}00117\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00118}00118\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ \ \ \ }\textcolor{comment}{//\ Number\ of\ up-\/buffers\ (T-\/>H)\ available\ on\ this\ target}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00119}00119\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00120}00120\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00121}00121\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00122}00122\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ \ \ \ }\textcolor{comment}{//\ Number\ of\ down-\/buffers\ (H-\/>T)\ available\ on\ this\ target}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00123}00123\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00124}00124\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00125}00125\ \textcolor{preprocessor}{\#ifndef\ SEGGER\_RTT\_BUFFER\_SECTION}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00126}00126\ \textcolor{preprocessor}{\ \ \#if\ defined(SEGGER\_RTT\_SECTION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00127}00127\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_BUFFER\_SECTION\ SEGGER\_RTT\_SECTION}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00128}00128\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00129}00129\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00130}00130\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00131}00131\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_ALIGNMENT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00132}00132\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_ALIGNMENT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00133}00133\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00134}00134\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00135}00135\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_BUFFER\_ALIGNMENT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00136}00136\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_BUFFER\_ALIGNMENT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00137}00137\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00138}00138\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00139}00139\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MODE\_DEFAULT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00140}00140\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MODE\_DEFAULT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_MODE\_NO\_BLOCK\_SKIP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00141}00141\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00142}00142\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00143}00143\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_LOCK}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00144}00144\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_LOCK()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00145}00145\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00146}00146\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00147}00147\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_UNLOCK}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00148}00148\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_UNLOCK()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00149}00149\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00150}00150\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00151}00151\ \textcolor{preprocessor}{\#ifndef\ \ \ STRLEN}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00152}00152\ \textcolor{preprocessor}{\ \ \#define\ STRLEN(a)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ strlen((a))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00153}00153\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00154}00154\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00155}00155\ \textcolor{preprocessor}{\#ifndef\ \ \ STRCPY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00156}00156\ \textcolor{preprocessor}{\ \ \#define\ STRCPY(pDest,\ pSrc)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ strcpy((pDest),\ (pSrc))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00157}00157\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00158}00158\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00159}00159\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00160}00160\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00161}00161\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00162}00162\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00163}00163\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MEMCPY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00164}00164\ \textcolor{preprocessor}{\ \ \#ifdef\ \ MEMCPY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00165}00165\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_MEMCPY(pDest,\ pSrc,\ NumBytes)\ \ \ \ \ \ MEMCPY((pDest),\ (pSrc),\ (NumBytes))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00166}00166\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00167}00167\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_MEMCPY(pDest,\ pSrc,\ NumBytes)\ \ \ \ \ \ memcpy((pDest),\ (pSrc),\ (NumBytes))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00168}00168\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00169}00169\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00170}00170\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00171}00171\ \textcolor{preprocessor}{\#ifndef\ \ \ MIN}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00172}00172\ \textcolor{preprocessor}{\ \ \#define\ MIN(a,\ b)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((a)\ <\ (b))\ ?\ (a)\ :\ (b))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00173}00173\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00174}00174\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00175}00175\ \textcolor{preprocessor}{\#ifndef\ \ \ MAX}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00176}00176\ \textcolor{preprocessor}{\ \ \#define\ MAX(a,\ b)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((a)\ >\ (b))\ ?\ (a)\ :\ (b))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00177}00177\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00178}00178\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00179}00179\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00180}00180\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00181}00181\ \textcolor{comment}{*\ \ \ \ \ \ \ Defines,\ fixed}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00182}00182\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00183}00183\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00184}00184\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00185}00185\ \textcolor{preprocessor}{\#if\ (defined\ \_\_ICCARM\_\_)\ ||\ (defined\ \_\_ICCRX\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00186}00186\ \textcolor{preprocessor}{\ \ \#define\ RTT\_PRAGMA(P)\ \_Pragma(\#P)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00187}00187\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00188}00188\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00189}00189\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_ALIGNMENT\ ||\ SEGGER\_RTT\_BUFFER\_ALIGNMENT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00190}00190\ \textcolor{preprocessor}{\ \ \#if\ ((defined\ \_\_GNUC\_\_)\ ||\ (defined\ \_\_clang\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00191}00191\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_ALIGN(Var,\ Alignment)\ Var\ \_\_attribute\_\_\ ((aligned\ (Alignment)))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00192}00192\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ \_\_ICCARM\_\_)\ ||\ (defined\ \_\_ICCRX\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00193}00193\ \textcolor{preprocessor}{\ \ \ \ \#define\ PRAGMA(A)\ \_Pragma(\#A)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00194}00194\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_ALIGN(Var,\ Alignment)\ RTT\_PRAGMA(data\_alignment=Alignment)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00195}00195\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00196}00196\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ \_\_CC\_ARM)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00197}00197\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_ALIGN(Var,\ Alignment)\ Var\ \_\_attribute\_\_\ ((aligned\ (Alignment)))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00198}00198\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00199}00199\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Alignment\ not\ supported\ for\ this\ compiler."{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00200}00200\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00201}00201\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00202}00202\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_ALIGN(Var,\ Alignment)\ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00203}00203\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00204}00204\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00205}00205\ \textcolor{preprocessor}{\#if\ defined(SEGGER\_RTT\_SECTION)\ ||\ defined\ (SEGGER\_RTT\_BUFFER\_SECTION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00206}00206\ \textcolor{preprocessor}{\ \ \#if\ ((defined\ \_\_GNUC\_\_)\ ||\ (defined\ \_\_clang\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00207}00207\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_PUT\_SECTION(Var,\ Section)\ \_\_attribute\_\_\ ((section\ (Section)))\ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00208}00208\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ \_\_ICCARM\_\_)\ ||\ (defined\ \_\_ICCRX\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00209}00209\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_PUT\_SECTION(Var,\ Section)\ RTT\_PRAGMA(location=Section)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00210}00210\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00211}00211\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ \_\_CC\_ARM)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00212}00212\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_PUT\_SECTION(Var,\ Section)\ \_\_attribute\_\_\ ((section\ (Section),\ zero\_init))\ \ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00213}00213\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00214}00214\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Section\ placement\ not\ supported\ for\ this\ compiler."{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00215}00215\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00216}00216\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00217}00217\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_PUT\_SECTION(Var,\ Section)\ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00218}00218\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00219}00219\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00220}00220\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_ALIGNMENT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00221}00221\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_CB\_ALIGN(Var)\ \ SEGGER\_RTT\_ALIGN(Var,\ SEGGER\_RTT\_ALIGNMENT)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00222}00222\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00223}00223\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_CB\_ALIGN(Var)\ \ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00224}00224\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00225}00225\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00226}00226\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_BUFFER\_ALIGNMENT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00227}00227\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_BUFFER\_ALIGN(Var)\ \ SEGGER\_RTT\_ALIGN(Var,\ SEGGER\_RTT\_BUFFER\_ALIGNMENT)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00228}00228\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00229}00229\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_BUFFER\_ALIGN(Var)\ \ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00230}00230\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00231}00231\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00232}00232\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00233}00233\ \textcolor{preprocessor}{\#if\ defined(SEGGER\_RTT\_SECTION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00234}00234\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_PUT\_CB\_SECTION(Var)\ SEGGER\_RTT\_PUT\_SECTION(Var,\ SEGGER\_RTT\_SECTION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00235}00235\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00236}00236\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_PUT\_CB\_SECTION(Var)\ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00237}00237\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00238}00238\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00239}00239\ \textcolor{preprocessor}{\#if\ defined(SEGGER\_RTT\_BUFFER\_SECTION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00240}00240\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_PUT\_BUFFER\_SECTION(Var)\ SEGGER\_RTT\_PUT\_SECTION(Var,\ SEGGER\_RTT\_BUFFER\_SECTION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00241}00241\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00242}00242\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_PUT\_BUFFER\_SECTION(Var)\ Var}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00243}00243\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00244}00244\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00245}00245\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00246}00246\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00247}00247\ \textcolor{comment}{*\ \ \ \ \ \ \ Static\ const\ data}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00248}00248\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00249}00249\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00250}00250\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00251}00251\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00252}00252\ \textcolor{keyword}{static}\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ \_aTerminalId[16]\ =\ \{\ \textcolor{charliteral}{'0'},\ \textcolor{charliteral}{'1'},\ \textcolor{charliteral}{'2'},\ \textcolor{charliteral}{'3'},\ \textcolor{charliteral}{'4'},\ \textcolor{charliteral}{'5'},\ \textcolor{charliteral}{'6'},\ \textcolor{charliteral}{'7'},\ \textcolor{charliteral}{'8'},\ \textcolor{charliteral}{'9'},\ \textcolor{charliteral}{'A'},\ \textcolor{charliteral}{'B'},\ \textcolor{charliteral}{'C'},\ \textcolor{charliteral}{'D'},\ \textcolor{charliteral}{'E'},\ \textcolor{charliteral}{'F'}\ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00253}00253\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00254}00254\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00255}00255\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00256}00256\ \textcolor{comment}{*\ \ \ \ \ \ \ Static\ data}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00257}00257\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00258}00258\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00259}00259\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00260}00260\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00261}00261\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00262}00262\ \textcolor{comment}{//\ RTT\ Control\ Block\ and\ allocate\ buffers\ for\ channel\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00263}00263\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00264}00264\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00265}00265\ \textcolor{preprocessor}{\ \ \#if\ ((defined\ \_\_GNUC\_\_)\ ||\ (defined\ \_\_clang\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00266}00266\ \ \ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}\ \_SEGGER\_RTT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_attribute\_\_\ ((aligned\ (SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE)));} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00267}00267\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keywordtype}{char}\ \ \ \_acUpBuffer\ \ [SEGGER\_RTT\_\_ROUND\_UP\_2\_CACHE\_LINE\_SIZE(BUFFER\_SIZE\_UP)]\ \ \ \_\_attribute\_\_\ ((aligned\ (SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE)));} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00268}00268\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keywordtype}{char}\ \ \ \_acDownBuffer[SEGGER\_RTT\_\_ROUND\_UP\_2\_CACHE\_LINE\_SIZE(BUFFER\_SIZE\_DOWN)]\ \_\_attribute\_\_\ ((aligned\ (SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE)));} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00269}00269\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ \_\_ICCARM\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00270}00270\ \textcolor{preprocessor}{\ \ \ \ \#pragma\ data\_alignment=SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00271}00271\ \ \ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}\ \_SEGGER\_RTT;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00272}00272\ \textcolor{preprocessor}{\ \ \ \ \#pragma\ data\_alignment=SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00273}00273\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keywordtype}{char}\ \ \ \_acUpBuffer\ \ [SEGGER\_RTT\_\_ROUND\_UP\_2\_CACHE\_LINE\_SIZE(BUFFER\_SIZE\_UP)];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00274}00274\ \textcolor{preprocessor}{\ \ \ \ \#pragma\ data\_alignment=SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00275}00275\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keywordtype}{char}\ \ \ \_acDownBuffer[SEGGER\_RTT\_\_ROUND\_UP\_2\_CACHE\_LINE\_SIZE(BUFFER\_SIZE\_DOWN)];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00276}00276\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00277}00277\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Don't\ know\ how\ to\ place\ \_SEGGER\_RTT,\ \_acUpBuffer,\ \_acDownBuffer\ cache-\/line\ aligned"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00278}00278\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00279}00279\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00280}00280\ \ \ SEGGER\_RTT\_PUT\_CB\_SECTION(SEGGER\_RTT\_CB\_ALIGN(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}\ \_SEGGER\_RTT));} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00281}00281\ \ \ SEGGER\_RTT\_PUT\_BUFFER\_SECTION(SEGGER\_RTT\_BUFFER\_ALIGN(\textcolor{keyword}{static}\ \textcolor{keywordtype}{char}\ \_acUpBuffer\ \ [BUFFER\_SIZE\_UP]));} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00282}00282\ \ \ SEGGER\_RTT\_PUT\_BUFFER\_SECTION(SEGGER\_RTT\_BUFFER\_ALIGN(\textcolor{keyword}{static}\ \textcolor{keywordtype}{char}\ \_acDownBuffer[BUFFER\_SIZE\_DOWN]));} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00283}00283\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00284}00284\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00285}00285\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ \_ActiveTerminal;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00286}00286\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00287}00287\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00288}00288\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00289}00289\ \textcolor{comment}{*\ \ \ \ \ \ \ Static\ functions}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00290}00290\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00291}00291\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00292}00292\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00293}00293\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00294}00294\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00295}00295\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00296}00296\ \textcolor{comment}{*\ \ \ \ \ \ \ \_DoInit()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00297}00297\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00298}00298\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00299}00299\ \textcolor{comment}{*\ \ \ \ Initializes\ the\ control\ block\ an\ buffers.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00300}00300\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00301}00301\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00302}00302\ \textcolor{comment}{*\ \ \ \ (1)\ May\ only\ be\ called\ via\ INIT()\ to\ avoid\ overriding\ settings.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00303}00303\ \textcolor{comment}{*\ \ \ \ \ \ \ \ The\ only\ exception\ is\ SEGGER\_RTT\_Init(),\ to\ make\ an\ intentional\ override\ possible.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00304}00304\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00305}00305\ \textcolor{preprocessor}{\ \ \#define\ INIT()\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00306}00306\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00307}00307\ \textcolor{preprocessor}{\ \ \ \ \ \ volatile\ SEGGER\_RTT\_CB*\ pRTTCBInit;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00308}00308\ \textcolor{preprocessor}{\ \ \ \ \ \ pRTTCBInit\ =\ (volatile\ SEGGER\_RTT\_CB*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00309}00309\ \textcolor{preprocessor}{\ \ \ \ \ \ if\ (pRTTCBInit-\/>acID[0]\ !=\ 'S')\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00310}00310\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \_DoInit();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00311}00311\ \textcolor{preprocessor}{\ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00312}00312\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00313}00313\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00314}00314\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ \_DoInit(\textcolor{keywordtype}{void})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00315}00315\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ p;\ \ \ \textcolor{comment}{//\ Volatile\ to\ make\ sure\ that\ compiler\ cannot\ change\ the\ order\ of\ accesses\ to\ the\ control\ block}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00316}00316\ \ \ \textcolor{keyword}{static}\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ \_aInitStr[]\ =\ \textcolor{stringliteral}{"{}\(\backslash\)0\(\backslash\)0\(\backslash\)0\(\backslash\)0\(\backslash\)0\(\backslash\)0TTR\ REGGES"{}};\ \ \textcolor{comment}{//\ Init\ complete\ ID\ string\ to\ make\ sure\ that\ things\ also\ work\ if\ RTT\ is\ linked\ to\ a\ no-\/init\ memory\ area}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00317}00317\ \ \ \textcolor{keywordtype}{unsigned}\ i;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00318}00318\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00319}00319\ \ \ \textcolor{comment}{//\ Initialize\ control\ block}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00320}00320\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00321}00321\ \ \ p\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ control\ block\ uncached\ so\ that\ nothing\ in\ the\ cache\ ever\ becomes\ dirty\ and\ all\ changes\ are\ visible\ in\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00322}00322\ \ \ memset((\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)p,\ 0,\ \textcolor{keyword}{sizeof}(\_SEGGER\_RTT));\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Make\ sure\ that\ the\ RTT\ CB\ is\ always\ zero\ initialized.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00323}00323\ \ \ p-\/>MaxNumUpBuffers\ \ \ \ =\ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00324}00324\ \ \ p-\/>MaxNumDownBuffers\ \ =\ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00325}00325\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00326}00326\ \ \ \textcolor{comment}{//\ Initialize\ up\ buffer\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00327}00327\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00328}00328\ \ \ p-\/>aUp[0].sName\ \ \ \ \ \ \ \ \ =\ \textcolor{stringliteral}{"{}Terminal"{}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00329}00329\ \ \ p-\/>aUp[0].pBuffer\ \ \ \ \ \ \ =\ \_acUpBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00330}00330\ \ \ p-\/>aUp[0].SizeOfBuffer\ \ =\ BUFFER\_SIZE\_UP;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00331}00331\ \ \ p-\/>aUp[0].RdOff\ \ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00332}00332\ \ \ p-\/>aUp[0].WrOff\ \ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00333}00333\ \ \ p-\/>aUp[0].Flags\ \ \ \ \ \ \ \ \ =\ SEGGER\_RTT\_MODE\_DEFAULT;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00334}00334\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00335}00335\ \ \ \textcolor{comment}{//\ Initialize\ down\ buffer\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00336}00336\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00337}00337\ \ \ p-\/>aDown[0].sName\ \ \ \ \ \ \ \ \ =\ \textcolor{stringliteral}{"{}Terminal"{}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00338}00338\ \ \ p-\/>aDown[0].pBuffer\ \ \ \ \ \ \ =\ \_acDownBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00339}00339\ \ \ p-\/>aDown[0].SizeOfBuffer\ \ =\ BUFFER\_SIZE\_DOWN;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00340}00340\ \ \ p-\/>aDown[0].RdOff\ \ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00341}00341\ \ \ p-\/>aDown[0].WrOff\ \ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00342}00342\ \ \ p-\/>aDown[0].Flags\ \ \ \ \ \ \ \ \ =\ SEGGER\_RTT\_MODE\_DEFAULT;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00343}00343\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00344}00344\ \ \ \textcolor{comment}{//\ Finish\ initialization\ of\ the\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00345}00345\ \ \ \textcolor{comment}{//\ Copy\ Id\ string\ backwards\ to\ make\ sure\ that\ "{}SEGGER\ RTT"{}\ is\ not\ found\ in\ initializer\ memory\ (usually\ flash),}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00346}00346\ \ \ \textcolor{comment}{//\ as\ this\ would\ cause\ J-\/Link\ to\ "{}find"{}\ the\ control\ block\ at\ a\ wrong\ address.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00347}00347\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00348}00348\ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ order\ of\ memory\ accesses\ for\ cores\ that\ may\ perform\ out-\/of-\/order\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00349}00349\ \ \ \textcolor{keywordflow}{for}\ (i\ =\ 0;\ i\ <\ \textcolor{keyword}{sizeof}(\_aInitStr)\ -\/\ 1;\ ++i)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00350}00350\ \ \ \ \ p-\/>acID[i]\ =\ \_aInitStr[\textcolor{keyword}{sizeof}(\_aInitStr)\ -\/\ 2\ -\/\ i];\ \ \textcolor{comment}{//\ Skip\ terminating\ \(\backslash\)0\ at\ the\ end\ of\ the\ array}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00351}00351\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00352}00352\ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ order\ of\ memory\ accesses\ for\ cores\ that\ may\ perform\ out-\/of-\/order\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00353}00353\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00354}00354\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00355}00355\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00356}00356\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00357}00357\ \textcolor{comment}{*\ \ \ \ \ \ \ \_WriteBlocking()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00358}00358\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00359}00359\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00360}00360\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT\ ring\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00361}00361\ \textcolor{comment}{*\ \ \ \ and\ updates\ the\ associated\ write\ pointer\ which\ is\ periodically}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00362}00362\ \textcolor{comment}{*\ \ \ \ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00363}00363\ \textcolor{comment}{*\ \ \ \ The\ caller\ is\ responsible\ for\ managing\ the\ write\ chunk\ sizes\ as}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00364}00364\ \textcolor{comment}{*\ \ \ \ \_WriteBlocking()\ will\ block\ until\ all\ data\ has\ been\ posted\ successfully.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00365}00365\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00366}00366\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00367}00367\ \textcolor{comment}{*\ \ \ \ pRing\ \ \ \ \ \ \ \ Ring\ buffer\ to\ post\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00368}00368\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00369}00369\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00370}00370\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00371}00371\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00372}00372\ \textcolor{comment}{*\ \ \ \ >=\ 0\ -\/\ Number\ of\ bytes\ written\ into\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00373}00373\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00374}00374\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{unsigned}\ \_WriteBlocking(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00375}00375\ \ \ \textcolor{keywordtype}{unsigned}\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00376}00376\ \ \ \textcolor{keywordtype}{unsigned}\ NumBytesWritten;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00377}00377\ \ \ \textcolor{keywordtype}{unsigned}\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00378}00378\ \ \ \textcolor{keywordtype}{unsigned}\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00379}00379\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ pDst;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00380}00380\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00381}00381\ \ \ \textcolor{comment}{//\ Write\ data\ to\ buffer\ and\ handle\ wrap-\/around\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00382}00382\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00383}00383\ \ \ NumBytesWritten\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00384}00384\ \ \ WrOff\ =\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00385}00385\ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00386}00386\ \ \ \ \ RdOff\ =\ pRing-\/>RdOff;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ May\ be\ changed\ by\ host\ (debug\ probe)\ in\ the\ meantime}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00387}00387\ \ \ \ \ \textcolor{keywordflow}{if}\ (RdOff\ >\ WrOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00388}00388\ \ \ \ \ \ \ NumBytesToWrite\ =\ RdOff\ -\/\ WrOff\ -\/\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00389}00389\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00390}00390\ \ \ \ \ \ \ NumBytesToWrite\ =\ pRing-\/>SizeOfBuffer\ -\/\ (WrOff\ -\/\ RdOff\ +\ 1u);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00391}00391\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00392}00392\ \ \ \ \ NumBytesToWrite\ =\ MIN(NumBytesToWrite,\ (pRing-\/>SizeOfBuffer\ -\/\ WrOff));\ \ \ \ \ \ \textcolor{comment}{//\ Number\ of\ bytes\ that\ can\ be\ written\ until\ buffer\ wrap-\/around}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00393}00393\ \ \ \ \ NumBytesToWrite\ =\ MIN(NumBytesToWrite,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00394}00394\ \ \ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00395}00395\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00396}00396\ \ \ \ \ NumBytesWritten\ +=\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00397}00397\ \ \ \ \ NumBytes\ \ \ \ \ \ \ \ -\/=\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00398}00398\ \ \ \ \ WrOff\ \ \ \ \ \ \ \ \ \ \ +=\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00399}00399\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytesToWrite-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00400}00400\ \ \ \ \ \ \ *pDst++\ =\ *pBuffer++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00401}00401\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00402}00402\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00403}00403\ \ \ \ \ SEGGER\_RTT\_MEMCPY((\textcolor{keywordtype}{void}*)pDst,\ pBuffer,\ NumBytesToWrite);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00404}00404\ \ \ \ \ NumBytesWritten\ +=\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00405}00405\ \ \ \ \ pBuffer\ \ \ \ \ \ \ \ \ +=\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00406}00406\ \ \ \ \ NumBytes\ \ \ \ \ \ \ \ -\/=\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00407}00407\ \ \ \ \ WrOff\ \ \ \ \ \ \ \ \ \ \ +=\ NumBytesToWrite;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00408}00408\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00409}00409\ \ \ \ \ \textcolor{keywordflow}{if}\ (WrOff\ ==\ pRing-\/>SizeOfBuffer)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00410}00410\ \ \ \ \ \ \ WrOff\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00411}00411\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00412}00412\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00413}00413\ \ \ \ \ pRing-\/>WrOff\ =\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00414}00414\ \ \ \}\ \textcolor{keywordflow}{while}\ (NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00415}00415\ \ \ \textcolor{keywordflow}{return}\ NumBytesWritten;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00416}00416\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00417}00417\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00418}00418\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00419}00419\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00420}00420\ \textcolor{comment}{*\ \ \ \ \ \ \ \_WriteNoCheck()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00421}00421\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00422}00422\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00423}00423\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT\ ring\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00424}00424\ \textcolor{comment}{*\ \ \ \ and\ updates\ the\ associated\ write\ pointer\ which\ is\ periodically}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00425}00425\ \textcolor{comment}{*\ \ \ \ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00426}00426\ \textcolor{comment}{*\ \ \ \ It\ is\ callers\ responsibility\ to\ make\ sure\ data\ actually\ fits\ in\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00427}00427\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00428}00428\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00429}00429\ \textcolor{comment}{*\ \ \ \ pRing\ \ \ \ \ \ \ \ Ring\ buffer\ to\ post\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00430}00430\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00431}00431\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00432}00432\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00433}00433\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00434}00434\ \textcolor{comment}{*\ \ \ \ (1)\ If\ there\ might\ not\ be\ enough\ space\ in\ the\ "{}Up"{}-\/buffer,\ call\ \_WriteBlocking}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00435}00435\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00436}00436\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ \_WriteNoCheck(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ pData,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00437}00437\ \ \ \textcolor{keywordtype}{unsigned}\ NumBytesAtOnce;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00438}00438\ \ \ \textcolor{keywordtype}{unsigned}\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00439}00439\ \ \ \textcolor{keywordtype}{unsigned}\ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00440}00440\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ pDst;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00441}00441\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00442}00442\ \ \ WrOff\ =\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00443}00443\ \ \ Rem\ =\ pRing-\/>SizeOfBuffer\ -\/\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00444}00444\ \ \ \textcolor{keywordflow}{if}\ (Rem\ >\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00445}00445\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00446}00446\ \ \ \ \ \textcolor{comment}{//\ All\ data\ fits\ before\ wrap\ around}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00447}00447\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00448}00448\ \ \ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00449}00449\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00450}00450\ \ \ \ \ WrOff\ +=\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00451}00451\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytes-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00452}00452\ \ \ \ \ \ \ *pDst++\ =\ *pData++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00453}00453\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00454}00454\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00455}00455\ \ \ \ \ pRing-\/>WrOff\ =\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00456}00456\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00457}00457\ \ \ \ \ SEGGER\_RTT\_MEMCPY((\textcolor{keywordtype}{void}*)pDst,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00458}00458\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00459}00459\ \ \ \ \ pRing-\/>WrOff\ =\ WrOff\ +\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00460}00460\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00461}00461\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00462}00462\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00463}00463\ \ \ \ \ \textcolor{comment}{//\ We\ reach\ the\ end\ of\ the\ buffer,\ so\ need\ to\ wrap\ around}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00464}00464\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00465}00465\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00466}00466\ \ \ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00467}00467\ \ \ \ \ NumBytesAtOnce\ =\ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00468}00468\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytesAtOnce-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00469}00469\ \ \ \ \ \ \ *pDst++\ =\ *pData++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00470}00470\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00471}00471\ \ \ \ \ pDst\ =\ pRing-\/>pBuffer\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00472}00472\ \ \ \ \ NumBytesAtOnce\ =\ NumBytes\ -\/\ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00473}00473\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytesAtOnce-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00474}00474\ \ \ \ \ \ \ *pDst++\ =\ *pData++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00475}00475\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00476}00476\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00477}00477\ \ \ \ \ pRing-\/>WrOff\ =\ NumBytes\ -\/\ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00478}00478\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00479}00479\ \ \ \ \ NumBytesAtOnce\ =\ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00480}00480\ \ \ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00481}00481\ \ \ \ \ SEGGER\_RTT\_MEMCPY((\textcolor{keywordtype}{void}*)pDst,\ pData,\ NumBytesAtOnce);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00482}00482\ \ \ \ \ NumBytesAtOnce\ =\ NumBytes\ -\/\ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00483}00483\ \ \ \ \ pDst\ =\ pRing-\/>pBuffer\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00484}00484\ \ \ \ \ SEGGER\_RTT\_MEMCPY((\textcolor{keywordtype}{void}*)pDst,\ pData\ +\ Rem,\ NumBytesAtOnce);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00485}00485\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00486}00486\ \ \ \ \ pRing-\/>WrOff\ =\ NumBytesAtOnce;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00487}00487\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00488}00488\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00489}00489\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00490}00490\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00491}00491\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00492}00492\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00493}00493\ \textcolor{comment}{*\ \ \ \ \ \ \ \_PostTerminalSwitch()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00494}00494\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00495}00495\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00496}00496\ \textcolor{comment}{*\ \ \ \ Switch\ terminal\ to\ the\ given\ terminal\ ID.\ \ It\ is\ the\ caller's}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00497}00497\ \textcolor{comment}{*\ \ \ \ responsibility\ to\ ensure\ the\ terminal\ ID\ is\ correct\ and\ there\ is}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00498}00498\ \textcolor{comment}{*\ \ \ \ enough\ space\ in\ the\ buffer\ for\ this\ to\ complete\ successfully.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00499}00499\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00500}00500\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00501}00501\ \textcolor{comment}{*\ \ \ \ pRing\ \ \ \ \ \ \ \ Ring\ buffer\ to\ post\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00502}00502\ \textcolor{comment}{*\ \ \ \ TerminalId\ \ \ Terminal\ ID\ to\ switch\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00503}00503\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00504}00504\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ \_PostTerminalSwitch(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing,\ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ TerminalId)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00505}00505\ \ \ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ ac[2];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00506}00506\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00507}00507\ \ \ ac[0]\ =\ 0xFFu;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00508}00508\ \ \ ac[1]\ =\ \_aTerminalId[TerminalId];\ \ \textcolor{comment}{//\ Caller\ made\ already\ sure\ that\ TerminalId\ does\ not\ exceed\ our\ terminal\ limit}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00509}00509\ \ \ \_WriteBlocking(pRing,\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*)ac,\ 2u);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00510}00510\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00511}00511\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00512}00512\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00513}00513\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00514}00514\ \textcolor{comment}{*\ \ \ \ \ \ \ \_GetAvailWriteSpace()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00515}00515\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00516}00516\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00517}00517\ \textcolor{comment}{*\ \ \ \ Returns\ the\ number\ of\ bytes\ that\ can\ be\ written\ to\ the\ ring}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00518}00518\ \textcolor{comment}{*\ \ \ \ buffer\ without\ blocking.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00519}00519\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00520}00520\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00521}00521\ \textcolor{comment}{*\ \ \ \ pRing\ \ \ \ \ \ \ \ Ring\ buffer\ to\ check.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00522}00522\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00523}00523\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00524}00524\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ that\ are\ free\ in\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00525}00525\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00526}00526\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{unsigned}\ \_GetAvailWriteSpace(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00527}00527\ \ \ \textcolor{keywordtype}{unsigned}\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00528}00528\ \ \ \textcolor{keywordtype}{unsigned}\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00529}00529\ \ \ \textcolor{keywordtype}{unsigned}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00530}00530\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00531}00531\ \ \ \textcolor{comment}{//\ Avoid\ warnings\ regarding\ volatile\ access\ order.\ \ It's\ not\ a\ problem}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00532}00532\ \ \ \textcolor{comment}{//\ in\ this\ case,\ but\ dampen\ compiler\ enthusiasm.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00533}00533\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00534}00534\ \ \ RdOff\ =\ pRing-\/>RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00535}00535\ \ \ WrOff\ =\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00536}00536\ \ \ \textcolor{keywordflow}{if}\ (RdOff\ <=\ WrOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00537}00537\ \ \ \ \ r\ =\ pRing-\/>SizeOfBuffer\ -\/\ 1u\ -\/\ WrOff\ +\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00538}00538\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00539}00539\ \ \ \ \ r\ =\ RdOff\ -\/\ WrOff\ -\/\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00540}00540\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00541}00541\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00542}00542\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00543}00543\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00544}00544\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00545}00545\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00546}00546\ \textcolor{comment}{*\ \ \ \ \ \ \ Public\ code}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00547}00547\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00548}00548\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00549}00549\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00550}00550\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00551}00551\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00552}00552\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00553}00553\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_ReadUpBufferNoLock()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00554}00554\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00555}00555\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00556}00556\ \textcolor{comment}{*\ \ \ \ Reads\ characters\ from\ SEGGER\ real-\/time-\/terminal\ control\ block}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00557}00557\ \textcolor{comment}{*\ \ \ \ which\ have\ been\ previously\ stored\ by\ the\ application.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00558}00558\ \textcolor{comment}{*\ \ \ \ Do\ not\ lock\ against\ interrupts\ and\ multiple\ access.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00559}00559\ \textcolor{comment}{*\ \ \ \ Used\ to\ do\ the\ same\ operation\ that\ J-\/Link\ does,\ to\ transfer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00560}00560\ \textcolor{comment}{*\ \ \ \ RTT\ data\ via\ other\ channels,\ such\ as\ TCP/IP\ or\ UART.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00561}00561\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00562}00562\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00563}00563\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ Up-\/buffer\ to\ be\ used.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00564}00564\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ buffer\ provided\ by\ target\ application,\ to\ copy\ characters\ from\ RTT-\/up-\/buffer\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00565}00565\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ target\ application\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00566}00566\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00567}00567\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00568}00568\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ that\ have\ been\ read.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00569}00569\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00570}00570\ \textcolor{comment}{*\ \ Additional\ information}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00571}00571\ \textcolor{comment}{*\ \ \ \ This\ function\ must\ not\ be\ called\ when\ J-\/Link\ might\ also\ do\ RTT.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00572}00572\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00573}00573\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_ReadUpBufferNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{void}*\ pData,\ \textcolor{keywordtype}{unsigned}\ BufferSize)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00574}00574\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00575}00575\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00576}00576\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00577}00577\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00578}00578\ \ \ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00579}00579\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ \ \ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00580}00580\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ pSrc;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00581}00581\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00582}00582\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00583}00583\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00584}00584\ \ \ pBuffer\ =\ (\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}*)pData;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00585}00585\ \ \ RdOff\ =\ pRing-\/>RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00586}00586\ \ \ WrOff\ =\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00587}00587\ \ \ NumBytesRead\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00588}00588\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00589}00589\ \ \ \textcolor{comment}{//\ Read\ from\ current\ read\ position\ to\ wrap-\/around\ of\ buffer,\ first}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00590}00590\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00591}00591\ \ \ \textcolor{keywordflow}{if}\ (RdOff\ >\ WrOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00592}00592\ \ \ \ \ NumBytesRem\ =\ pRing-\/>SizeOfBuffer\ -\/\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00593}00593\ \ \ \ \ NumBytesRem\ =\ MIN(NumBytesRem,\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00594}00594\ \ \ \ \ pSrc\ =\ (pRing-\/>pBuffer\ +\ RdOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00595}00595\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00596}00596\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00597}00597\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00598}00598\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00599}00599\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytesRem-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00600}00600\ \ \ \ \ \ \ *pBuffer++\ =\ *pSrc++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00601}00601\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00602}00602\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00603}00603\ \ \ \ \ SEGGER\_RTT\_MEMCPY(pBuffer,\ (\textcolor{keywordtype}{void}*)pSrc,\ NumBytesRem);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00604}00604\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00605}00605\ \ \ \ \ pBuffer\ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00606}00606\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00607}00607\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00608}00608\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00609}00609\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00610}00610\ \ \ \ \ \textcolor{comment}{//\ Handle\ wrap-\/around\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00611}00611\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00612}00612\ \ \ \ \ \textcolor{keywordflow}{if}\ (RdOff\ ==\ pRing-\/>SizeOfBuffer)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00613}00613\ \ \ \ \ \ \ RdOff\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00614}00614\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00615}00615\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00616}00616\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00617}00617\ \ \ \textcolor{comment}{//\ Read\ remaining\ items\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00618}00618\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00619}00619\ \ \ NumBytesRem\ =\ WrOff\ -\/\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00620}00620\ \ \ NumBytesRem\ =\ MIN(NumBytesRem,\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00621}00621\ \ \ \textcolor{keywordflow}{if}\ (NumBytesRem\ >\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00622}00622\ \ \ \ \ pSrc\ =\ (pRing-\/>pBuffer\ +\ RdOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00623}00623\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00624}00624\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00625}00625\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00626}00626\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00627}00627\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytesRem-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00628}00628\ \ \ \ \ \ \ *pBuffer++\ =\ *pSrc++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00629}00629\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00630}00630\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00631}00631\ \ \ \ \ SEGGER\_RTT\_MEMCPY(pBuffer,\ (\textcolor{keywordtype}{void}*)pSrc,\ NumBytesRem);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00632}00632\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00633}00633\ \ \ \ \ pBuffer\ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00634}00634\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00635}00635\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00636}00636\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00637}00637\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00638}00638\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00639}00639\ \ \ \textcolor{comment}{//\ Update\ read\ offset\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00640}00640\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00641}00641\ \ \ \textcolor{keywordflow}{if}\ (NumBytesRead)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00642}00642\ \ \ \ \ pRing-\/>RdOff\ =\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00643}00643\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00644}00644\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00645}00645\ \ \ \textcolor{keywordflow}{return}\ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00646}00646\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00647}00647\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00648}00648\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00649}00649\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00650}00650\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_ReadNoLock()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00651}00651\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00652}00652\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00653}00653\ \textcolor{comment}{*\ \ \ \ Reads\ characters\ from\ SEGGER\ real-\/time-\/terminal\ control\ block}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00654}00654\ \textcolor{comment}{*\ \ \ \ which\ have\ been\ previously\ stored\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00655}00655\ \textcolor{comment}{*\ \ \ \ Do\ not\ lock\ against\ interrupts\ and\ multiple\ access.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00656}00656\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00657}00657\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00658}00658\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ Down-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00659}00659\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ buffer\ provided\ by\ target\ application,\ to\ copy\ characters\ from\ RTT-\/down-\/buffer\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00660}00660\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ target\ application\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00661}00661\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00662}00662\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00663}00663\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ that\ have\ been\ read.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00664}00664\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00665}00665\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_ReadNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{void}*\ pData,\ \textcolor{keywordtype}{unsigned}\ BufferSize)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00666}00666\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00667}00667\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00668}00668\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00669}00669\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00670}00670\ \ \ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00671}00671\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00672}00672\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ pSrc;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00673}00673\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00674}00674\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00675}00675\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*)((uintptr\_t)\&\_SEGGER\_RTT.aDown[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00676}00676\ \ \ pBuffer\ =\ (\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}*)pData;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00677}00677\ \ \ RdOff\ =\ pRing-\/>RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00678}00678\ \ \ WrOff\ =\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00679}00679\ \ \ NumBytesRead\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00680}00680\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00681}00681\ \ \ \textcolor{comment}{//\ Read\ from\ current\ read\ position\ to\ wrap-\/around\ of\ buffer,\ first}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00682}00682\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00683}00683\ \ \ \textcolor{keywordflow}{if}\ (RdOff\ >\ WrOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00684}00684\ \ \ \ \ NumBytesRem\ =\ pRing-\/>SizeOfBuffer\ -\/\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00685}00685\ \ \ \ \ NumBytesRem\ =\ MIN(NumBytesRem,\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00686}00686\ \ \ \ \ pSrc\ =\ (pRing-\/>pBuffer\ +\ RdOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00687}00687\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00688}00688\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00689}00689\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00690}00690\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00691}00691\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytesRem-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00692}00692\ \ \ \ \ \ \ *pBuffer++\ =\ *pSrc++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00693}00693\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00694}00694\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00695}00695\ \ \ \ \ SEGGER\_RTT\_MEMCPY(pBuffer,\ (\textcolor{keywordtype}{void}*)pSrc,\ NumBytesRem);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00696}00696\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00697}00697\ \ \ \ \ pBuffer\ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00698}00698\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00699}00699\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00700}00700\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00701}00701\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00702}00702\ \ \ \ \ \textcolor{comment}{//\ Handle\ wrap-\/around\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00703}00703\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00704}00704\ \ \ \ \ \textcolor{keywordflow}{if}\ (RdOff\ ==\ pRing-\/>SizeOfBuffer)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00705}00705\ \ \ \ \ \ \ RdOff\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00706}00706\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00707}00707\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00708}00708\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00709}00709\ \ \ \textcolor{comment}{//\ Read\ remaining\ items\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00710}00710\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00711}00711\ \ \ NumBytesRem\ =\ WrOff\ -\/\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00712}00712\ \ \ NumBytesRem\ =\ MIN(NumBytesRem,\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00713}00713\ \ \ \textcolor{keywordflow}{if}\ (NumBytesRem\ >\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00714}00714\ \ \ \ \ pSrc\ =\ (pRing-\/>pBuffer\ +\ RdOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00715}00715\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00716}00716\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00717}00717\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00718}00718\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00719}00719\ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytesRem-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00720}00720\ \ \ \ \ \ \ *pBuffer++\ =\ *pSrc++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00721}00721\ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00722}00722\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00723}00723\ \ \ \ \ SEGGER\_RTT\_MEMCPY(pBuffer,\ (\textcolor{keywordtype}{void}*)pSrc,\ NumBytesRem);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00724}00724\ \ \ \ \ NumBytesRead\ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00725}00725\ \ \ \ \ pBuffer\ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00726}00726\ \ \ \ \ BufferSize\ \ \ -\/=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00727}00727\ \ \ \ \ RdOff\ \ \ \ \ \ \ \ +=\ NumBytesRem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00728}00728\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00729}00729\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00730}00730\ \ \ \textcolor{keywordflow}{if}\ (NumBytesRead)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00731}00731\ \ \ \ \ pRing-\/>RdOff\ =\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00732}00732\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00733}00733\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00734}00734\ \ \ \textcolor{keywordflow}{return}\ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00735}00735\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00736}00736\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00737}00737\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00738}00738\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00739}00739\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_ReadUpBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00740}00740\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00741}00741\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00742}00742\ \textcolor{comment}{*\ \ \ \ Reads\ characters\ from\ SEGGER\ real-\/time-\/terminal\ control\ block}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00743}00743\ \textcolor{comment}{*\ \ \ \ which\ have\ been\ previously\ stored\ by\ the\ application.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00744}00744\ \textcolor{comment}{*\ \ \ \ Used\ to\ do\ the\ same\ operation\ that\ J-\/Link\ does,\ to\ transfer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00745}00745\ \textcolor{comment}{*\ \ \ \ RTT\ data\ via\ other\ channels,\ such\ as\ TCP/IP\ or\ UART.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00746}00746\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00747}00747\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00748}00748\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ Up-\/buffer\ to\ be\ used.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00749}00749\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ buffer\ provided\ by\ target\ application,\ to\ copy\ characters\ from\ RTT-\/up-\/buffer\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00750}00750\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ target\ application\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00751}00751\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00752}00752\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00753}00753\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ that\ have\ been\ read.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00754}00754\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00755}00755\ \textcolor{comment}{*\ \ Additional\ information}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00756}00756\ \textcolor{comment}{*\ \ \ \ This\ function\ must\ not\ be\ called\ when\ J-\/Link\ might\ also\ do\ RTT.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00757}00757\ \textcolor{comment}{*\ \ \ \ This\ function\ locks\ against\ all\ other\ RTT\ operations.\ I.e.\ during}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00758}00758\ \textcolor{comment}{*\ \ \ \ the\ read\ operation,\ writing\ is\ also\ locked.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00759}00759\ \textcolor{comment}{*\ \ \ \ If\ only\ one\ consumer\ reads\ from\ the\ up\ buffer,}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00760}00760\ \textcolor{comment}{*\ \ \ \ call\ sEGGER\_RTT\_ReadUpBufferNoLock()\ instead.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00761}00761\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00762}00762\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_ReadUpBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00763}00763\ \ \ \textcolor{keywordtype}{unsigned}\ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00764}00764\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00765}00765\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00766}00766\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00767}00767\ \ \ \textcolor{comment}{//\ Call\ the\ non-\/locking\ read\ function}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00768}00768\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00769}00769\ \ \ NumBytesRead\ =\ SEGGER\_RTT\_ReadUpBufferNoLock(BufferIndex,\ pBuffer,\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00770}00770\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00771}00771\ \ \ \textcolor{comment}{//\ Finish\ up.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00772}00772\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00773}00773\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00774}00774\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00775}00775\ \ \ \textcolor{keywordflow}{return}\ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00776}00776\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00777}00777\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00778}00778\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00779}00779\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00780}00780\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_Read}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00781}00781\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00782}00782\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00783}00783\ \textcolor{comment}{*\ \ \ \ Reads\ characters\ from\ SEGGER\ real-\/time-\/terminal\ control\ block}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00784}00784\ \textcolor{comment}{*\ \ \ \ which\ have\ been\ previously\ stored\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00785}00785\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00786}00786\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00787}00787\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ Down-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00788}00788\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ buffer\ provided\ by\ target\ application,\ to\ copy\ characters\ from\ RTT-\/down-\/buffer\ to.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00789}00789\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ target\ application\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00790}00790\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00791}00791\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00792}00792\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ that\ have\ been\ read.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00793}00793\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00794}00794\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_Read(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00795}00795\ \ \ \textcolor{keywordtype}{unsigned}\ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00796}00796\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00797}00797\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00798}00798\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00799}00799\ \ \ \textcolor{comment}{//\ Call\ the\ non-\/locking\ read\ function}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00800}00800\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00801}00801\ \ \ NumBytesRead\ =\ SEGGER\_RTT\_ReadNoLock(BufferIndex,\ pBuffer,\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00802}00802\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00803}00803\ \ \ \textcolor{comment}{//\ Finish\ up.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00804}00804\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00805}00805\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00806}00806\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00807}00807\ \ \ \textcolor{keywordflow}{return}\ NumBytesRead;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00808}00808\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00809}00809\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00810}00810\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00811}00811\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00812}00812\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_WriteWithOverwriteNoLock}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00813}00813\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00814}00814\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00815}00815\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00816}00816\ \textcolor{comment}{*\ \ \ \ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00817}00817\ \textcolor{comment}{*\ \ \ \ SEGGER\_RTT\_WriteWithOverwriteNoLock\ does\ not\ lock\ the\ application}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00818}00818\ \textcolor{comment}{*\ \ \ \ and\ overwrites\ data\ if\ the\ data\ does\ not\ fit\ into\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00819}00819\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00820}00820\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00821}00821\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00822}00822\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00823}00823\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00824}00824\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00825}00825\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00826}00826\ \textcolor{comment}{*\ \ \ \ (1)\ If\ there\ is\ not\ enough\ space\ in\ the\ "{}Up"{}-\/buffer,\ data\ is\ overwritten.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00827}00827\ \textcolor{comment}{*\ \ \ \ (2)\ For\ performance\ reasons\ this\ function\ does\ not\ call\ Init()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00828}00828\ \textcolor{comment}{*\ \ \ \ \ \ \ \ and\ may\ only\ be\ called\ after\ RTT\ has\ been\ initialized.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00829}00829\ \textcolor{comment}{*\ \ \ \ \ \ \ \ Either\ by\ calling\ SEGGER\_RTT\_Init()\ or\ calling\ another\ RTT\ API\ function\ first.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00830}00830\ \textcolor{comment}{*\ \ \ \ (3)\ Do\ not\ use\ SEGGER\_RTT\_WriteWithOverwriteNoLock\ if\ a\ J-\/Link}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00831}00831\ \textcolor{comment}{*\ \ \ \ \ \ \ \ connection\ reads\ RTT\ data.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00832}00832\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00833}00833\ \textcolor{keywordtype}{void}\ SEGGER\_RTT\_WriteWithOverwriteNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00834}00834\ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ \ pData;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00835}00835\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00836}00836\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00837}00837\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ pDst;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00838}00838\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00839}00839\ \ \ \textcolor{comment}{//\ Get\ "{}to-\/host"{}\ ring\ buffer\ and\ copy\ some\ elements\ into\ local\ variables.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00840}00840\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00841}00841\ \ \ pData\ =\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00842}00842\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00843}00843\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00844}00844\ \ \ \textcolor{comment}{//\ Check\ if\ we\ will\ overwrite\ data\ and\ need\ to\ adjust\ the\ RdOff.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00845}00845\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00846}00846\ \ \ \textcolor{keywordflow}{if}\ (pRing-\/>WrOff\ ==\ pRing-\/>RdOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00847}00847\ \ \ \ \ Avail\ =\ pRing-\/>SizeOfBuffer\ -\/\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00848}00848\ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ pRing-\/>WrOff\ <\ pRing-\/>RdOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00849}00849\ \ \ \ \ Avail\ =\ pRing-\/>RdOff\ -\/\ pRing-\/>WrOff\ -\/\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00850}00850\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00851}00851\ \ \ \ \ Avail\ =\ pRing-\/>RdOff\ -\/\ pRing-\/>WrOff\ -\/\ 1u\ +\ pRing-\/>SizeOfBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00852}00852\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00853}00853\ \ \ \textcolor{keywordflow}{if}\ (NumBytes\ >\ Avail)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00854}00854\ \ \ \ \ pRing-\/>RdOff\ +=\ (NumBytes\ -\/\ Avail);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00855}00855\ \ \ \ \ \textcolor{keywordflow}{while}\ (pRing-\/>RdOff\ >=\ pRing-\/>SizeOfBuffer)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00856}00856\ \ \ \ \ \ \ pRing-\/>RdOff\ -\/=\ pRing-\/>SizeOfBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00857}00857\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00858}00858\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00859}00859\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00860}00860\ \ \ \textcolor{comment}{//\ Write\ all\ data,\ no\ need\ to\ check\ the\ RdOff,\ but\ possibly\ handle\ multiple\ wrap-\/arounds}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00861}00861\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00862}00862\ \ \ Avail\ =\ pRing-\/>SizeOfBuffer\ -\/\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00863}00863\ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00864}00864\ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ >\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00865}00865\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00866}00866\ \ \ \ \ \ \ \textcolor{comment}{//\ Last\ round}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00867}00867\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00868}00868\ \ \ \ \ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ pRing-\/>WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00869}00869\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00870}00870\ \ \ \ \ \ \ Avail\ =\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00871}00871\ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ (NumBytes-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00872}00872\ \ \ \ \ \ \ \ \ *pDst++\ =\ *pData++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00873}00873\ \ \ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00874}00874\ \ \ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00875}00875\ \ \ \ \ \ \ pRing-\/>WrOff\ +=\ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00876}00876\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00877}00877\ \ \ \ \ \ \ SEGGER\_RTT\_MEMCPY((\textcolor{keywordtype}{void}*)pDst,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00878}00878\ \ \ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00879}00879\ \ \ \ \ \ \ pRing-\/>WrOff\ +=\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00880}00880\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00881}00881\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00882}00882\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00883}00883\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00884}00884\ \ \ \ \ \ \ \textcolor{comment}{//\ \ Wrap-\/around\ necessary,\ write\ until\ wrap-\/around\ and\ reset\ WrOff}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00885}00885\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00886}00886\ \ \ \ \ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ pRing-\/>WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00887}00887\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00888}00888\ \ \ \ \ \ \ NumBytes\ -\/=\ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00889}00889\ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ (Avail-\/-\/)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00890}00890\ \ \ \ \ \ \ \ \ *pDst++\ =\ *pData++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00891}00891\ \ \ \ \ \ \ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00892}00892\ \ \ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00893}00893\ \ \ \ \ \ \ pRing-\/>WrOff\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00894}00894\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00895}00895\ \ \ \ \ \ \ SEGGER\_RTT\_MEMCPY((\textcolor{keywordtype}{void}*)pDst,\ pData,\ Avail);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00896}00896\ \ \ \ \ \ \ pData\ +=\ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00897}00897\ \ \ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00898}00898\ \ \ \ \ \ \ pRing-\/>WrOff\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00899}00899\ \ \ \ \ \ \ NumBytes\ -\/=\ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00900}00900\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00901}00901\ \ \ \ \ \ \ Avail\ =\ (pRing-\/>SizeOfBuffer\ -\/\ 1);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00902}00902\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00903}00903\ \ \ \}\ \textcolor{keywordflow}{while}\ (NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00904}00904\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00905}00905\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00906}00906\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00907}00907\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00908}00908\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_WriteSkipNoLock}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00909}00909\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00910}00910\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00911}00911\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00912}00912\ \textcolor{comment}{*\ \ \ \ control\ block\ which\ is\ then\ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00913}00913\ \textcolor{comment}{*\ \ \ \ SEGGER\_RTT\_WriteSkipNoLock\ does\ not\ lock\ the\ application\ and}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00914}00914\ \textcolor{comment}{*\ \ \ \ skips\ all\ data,\ if\ the\ data\ does\ not\ fit\ into\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00915}00915\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00916}00916\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00917}00917\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00918}00918\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00919}00919\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00920}00920\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MUST\ be\ >\ 0!!!}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00921}00921\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ This\ is\ done\ for\ performance\ reasons,\ so\ no\ initial\ check\ has\ do\ be\ done.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00922}00922\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00923}00923\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00924}00924\ \textcolor{comment}{*\ \ \ \ 1:\ Data\ has\ been\ copied}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00925}00925\ \textcolor{comment}{*\ \ \ \ 0:\ No\ space,\ data\ has\ not\ been\ copied}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00926}00926\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00927}00927\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00928}00928\ \textcolor{comment}{*\ \ \ \ (1)\ If\ there\ is\ not\ enough\ space\ in\ the\ "{}Up"{}-\/buffer,\ all\ data\ is\ dropped.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00929}00929\ \textcolor{comment}{*\ \ \ \ (2)\ For\ performance\ reasons\ this\ function\ does\ not\ call\ Init()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00930}00930\ \textcolor{comment}{*\ \ \ \ \ \ \ \ and\ may\ only\ be\ called\ after\ RTT\ has\ been\ initialized.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00931}00931\ \textcolor{comment}{*\ \ \ \ \ \ \ \ Either\ by\ calling\ SEGGER\_RTT\_Init()\ or\ calling\ another\ RTT\ API\ function\ first.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00932}00932\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00933}00933\ \textcolor{preprocessor}{\#if\ (RTT\_USE\_ASM\ ==\ 0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00934}00934\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_WriteSkipNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00935}00935\ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ \ pData;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00936}00936\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00937}00937\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00938}00938\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00939}00939\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00940}00940\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00941}00941\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ pDst;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00942}00942\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00943}00943\ \ \ \textcolor{comment}{//\ Cases:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00944}00944\ \ \ \textcolor{comment}{//\ \ \ 1)\ RdOff\ <=\ WrOff\ =>\ Space\ until\ wrap-\/around\ is\ sufficient}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00945}00945\ \ \ \textcolor{comment}{//\ \ \ 2)\ RdOff\ <=\ WrOff\ =>\ Space\ after\ wrap-\/around\ needed\ (copy\ in\ 2\ chunks)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00946}00946\ \ \ \textcolor{comment}{//\ \ \ 3)\ RdOff\ <\ \ WrOff\ =>\ No\ space\ in\ buf}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00947}00947\ \ \ \textcolor{comment}{//\ \ \ 4)\ RdOff\ >\ \ WrOff\ =>\ Space\ is\ sufficient}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00948}00948\ \ \ \textcolor{comment}{//\ \ \ 5)\ RdOff\ >\ \ WrOff\ =>\ No\ space\ in\ buf}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00949}00949\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00950}00950\ \ \ \textcolor{comment}{//\ 1)\ is\ the\ most\ common\ case\ for\ large\ buffers\ and\ assuming\ that\ J-\/Link\ reads\ the\ data\ fast\ enough}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00951}00951\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00952}00952\ \ \ pData\ =\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00953}00953\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00954}00954\ \ \ RdOff\ =\ pRing-\/>RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00955}00955\ \ \ WrOff\ =\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00956}00956\ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00957}00957\ \ \ \textcolor{keywordflow}{if}\ (RdOff\ <=\ WrOff)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Case\ 1),\ 2)\ or\ 3)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00958}00958\ \ \ \ \ Avail\ =\ pRing-\/>SizeOfBuffer\ -\/\ WrOff\ -\/\ 1u;\ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Space\ until\ wrap-\/around\ (assume\ 1\ byte\ not\ usable\ for\ case\ that\ RdOff\ ==\ 0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00959}00959\ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ >=\ NumBytes)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Case\ 1)?}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00960}00960\ \ \ \ \ \ \ memcpy((\textcolor{keywordtype}{void}*)pDst,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00961}00961\ \ \ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00962}00962\ \ \ \ \ \ \ pRing-\/>WrOff\ =\ WrOff\ +\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00963}00963\ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00964}00964\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00965}00965\ \ \ \ \ Avail\ +=\ RdOff;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Space\ incl.\ wrap-\/around}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00966}00966\ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ >=\ NumBytes)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Case\ 2?\ =>\ If\ not,\ we\ have\ case\ 3)\ (does\ not\ fit)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00967}00967\ \ \ \ \ \ \ Rem\ =\ pRing-\/>SizeOfBuffer\ -\/\ WrOff;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Space\ until\ end\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00968}00968\ \ \ \ \ \ \ memcpy((\textcolor{keywordtype}{void}*)pDst,\ pData,\ Rem);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Copy\ 1st\ chunk}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00969}00969\ \ \ \ \ \ \ NumBytes\ -\/=\ Rem;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00970}00970\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00971}00971\ \ \ \ \ \ \ \textcolor{comment}{//\ Special\ case:\ First\ check\ that\ assumed\ RdOff\ ==\ 0\ calculated\ that\ last\ element\ before\ wrap-\/around\ could\ not\ be\ used}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00972}00972\ \ \ \ \ \ \ \textcolor{comment}{//\ But\ 2nd\ check\ (considering\ space\ until\ wrap-\/around\ and\ until\ RdOff)\ revealed\ that\ RdOff\ is\ not\ 0,\ so\ we\ can\ use\ the\ last\ element}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00973}00973\ \ \ \ \ \ \ \textcolor{comment}{//\ In\ this\ case,\ we\ may\ use\ a\ copy\ straight\ until\ buffer\ end\ anyway\ without\ needing\ to\ copy\ 2\ chunks}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00974}00974\ \ \ \ \ \ \ \textcolor{comment}{//\ Therefore,\ check\ if\ 2nd\ memcpy\ is\ necessary\ at\ all}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00975}00975\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00976}00976\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00977}00977\ \ \ \ \ \ \ \ \ pDst\ =\ pRing-\/>pBuffer\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00978}00978\ \ \ \ \ \ \ \ \ memcpy((\textcolor{keywordtype}{void}*)pDst,\ pData\ +\ Rem,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00979}00979\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00980}00980\ \ \ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00981}00981\ \ \ \ \ \ \ pRing-\/>WrOff\ =\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00982}00982\ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00983}00983\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00984}00984\ \ \ \}\ \textcolor{keywordflow}{else}\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Potential\ case\ 4)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00985}00985\ \ \ \ \ Avail\ =\ RdOff\ -\/\ WrOff\ -\/\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00986}00986\ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ >=\ NumBytes)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Case\ 4)?\ =>\ If\ not,\ we\ have\ case\ 5)\ (does\ not\ fit)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00987}00987\ \ \ \ \ \ \ memcpy((\textcolor{keywordtype}{void}*)pDst,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00988}00988\ \ \ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00989}00989\ \ \ \ \ \ \ pRing-\/>WrOff\ =\ WrOff\ +\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00990}00990\ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00991}00991\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00992}00992\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00993}00993\ \ \ \textcolor{keywordflow}{return}\ 0;\ \ \ \ \ \textcolor{comment}{//\ No\ space\ in\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00994}00994\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00995}00995\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00996}00996\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00997}00997\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00998}00998\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l00999}00999\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_WriteDownBufferNoLock}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01000}01000\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01001}01001\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01002}01002\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01003}01003\ \textcolor{comment}{*\ \ \ \ control\ block\ inside\ a\ \ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01004}01004\ \textcolor{comment}{*\ \ \ \ SEGGER\_RTT\_WriteDownBufferNoLock\ does\ not\ lock\ the\ application.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01005}01005\ \textcolor{comment}{*\ \ \ \ Used\ to\ do\ the\ same\ operation\ that\ J-\/Link\ does,\ to\ transfer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01006}01006\ \textcolor{comment}{*\ \ \ \ RTT\ data\ from\ other\ channels,\ such\ as\ TCP/IP\ or\ UART.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01007}01007\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01008}01008\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01009}01009\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Down"{}-\/buffer\ to\ be\ used.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01010}01010\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01011}01011\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01012}01012\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01013}01013\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01014}01014\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Down"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01015}01015\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01016}01016\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01017}01017\ \textcolor{comment}{*\ \ \ \ (1)\ Data\ is\ stored\ according\ to\ buffer\ flags.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01018}01018\ \textcolor{comment}{*\ \ \ \ (2)\ For\ performance\ reasons\ this\ function\ does\ not\ call\ Init()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01019}01019\ \textcolor{comment}{*\ \ \ \ \ \ \ \ and\ may\ only\ be\ called\ after\ RTT\ has\ been\ initialized.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01020}01020\ \textcolor{comment}{*\ \ \ \ \ \ \ \ Either\ by\ calling\ SEGGER\_RTT\_Init()\ or\ calling\ another\ RTT\ API\ function\ first.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01021}01021\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01022}01022\ \textcolor{comment}{*\ \ Additional\ information}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01023}01023\ \textcolor{comment}{*\ \ \ \ This\ function\ must\ not\ be\ called\ when\ J-\/Link\ might\ also\ do\ RTT.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01024}01024\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01025}01025\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_WriteDownBufferNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01026}01026\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01027}01027\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01028}01028\ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ \ \ \ pData;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01029}01029\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ \ \ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01030}01030\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01031}01031\ \ \ \textcolor{comment}{//\ Get\ "{}to-\/target"{}\ ring\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01032}01032\ \ \ \textcolor{comment}{//\ It\ is\ save\ to\ cast\ that\ to\ a\ "{}to-\/host"{}\ buffer.\ Up\ and\ Down\ buffer\ differ\ in\ volatility\ of\ offsets\ that\ might\ be\ modified\ by\ J-\/Link.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01033}01033\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01034}01034\ \ \ pData\ =\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01035}01035\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aDown[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01036}01036\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01037}01037\ \ \ \textcolor{comment}{//\ How\ we\ output\ depends\ upon\ the\ mode...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01038}01038\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01039}01039\ \ \ \textcolor{keywordflow}{switch}\ (pRing-\/>Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01040}01040\ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_SKIP:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01041}01041\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01042}01042\ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ skip\ mode\ and\ there\ is\ no\ space\ for\ the\ whole}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01043}01043\ \ \ \ \ \textcolor{comment}{//\ of\ this\ output,\ don't\ bother.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01044}01044\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01045}01045\ \ \ \ \ Avail\ =\ \_GetAvailWriteSpace(pRing);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01046}01046\ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ <\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01047}01047\ \ \ \ \ \ \ Status\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01048}01048\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01049}01049\ \ \ \ \ \ \ Status\ =\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01050}01050\ \ \ \ \ \ \ \_WriteNoCheck(pRing,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01051}01051\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01052}01052\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01053}01053\ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_TRIM:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01054}01054\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01055}01055\ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ trim\ mode,\ trim\ to\ what\ we\ can\ output\ without\ blocking.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01056}01056\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01057}01057\ \ \ \ \ Avail\ =\ \_GetAvailWriteSpace(pRing);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01058}01058\ \ \ \ \ Status\ =\ Avail\ <\ NumBytes\ ?\ Avail\ :\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01059}01059\ \ \ \ \ \_WriteNoCheck(pRing,\ pData,\ Status);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01060}01060\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01061}01061\ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_BLOCK\_IF\_FIFO\_FULL:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01062}01062\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01063}01063\ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ blocking\ mode,\ output\ everything.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01064}01064\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01065}01065\ \ \ \ \ Status\ =\ \_WriteBlocking(pRing,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01066}01066\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01067}01067\ \ \ \textcolor{keywordflow}{default}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01068}01068\ \ \ \ \ Status\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01069}01069\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01070}01070\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01071}01071\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01072}01072\ \ \ \textcolor{comment}{//\ Finish\ up.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01073}01073\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01074}01074\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01075}01075\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01076}01076\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01077}01077\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01078}01078\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01079}01079\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_WriteNoLock}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01080}01080\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01081}01081\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01082}01082\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01083}01083\ \textcolor{comment}{*\ \ \ \ control\ block\ which\ is\ then\ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01084}01084\ \textcolor{comment}{*\ \ \ \ SEGGER\_RTT\_WriteNoLock\ does\ not\ lock\ the\ application.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01085}01085\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01086}01086\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01087}01087\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01088}01088\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01089}01089\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01090}01090\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01091}01091\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01092}01092\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01093}01093\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01094}01094\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01095}01095\ \textcolor{comment}{*\ \ \ \ (1)\ Data\ is\ stored\ according\ to\ buffer\ flags.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01096}01096\ \textcolor{comment}{*\ \ \ \ (2)\ For\ performance\ reasons\ this\ function\ does\ not\ call\ Init()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01097}01097\ \textcolor{comment}{*\ \ \ \ \ \ \ \ and\ may\ only\ be\ called\ after\ RTT\ has\ been\ initialized.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01098}01098\ \textcolor{comment}{*\ \ \ \ \ \ \ \ Either\ by\ calling\ SEGGER\_RTT\_Init()\ or\ calling\ another\ RTT\ API\ function\ first.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01099}01099\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01100}01100\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_WriteNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01101}01101\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01102}01102\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01103}01103\ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ \ \ \ pData;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01104}01104\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01105}01105\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01106}01106\ \ \ \textcolor{comment}{//\ Get\ "{}to-\/host"{}\ ring\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01107}01107\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01108}01108\ \ \ pData\ =\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01109}01109\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01110}01110\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01111}01111\ \ \ \textcolor{comment}{//\ How\ we\ output\ depends\ upon\ the\ mode...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01112}01112\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01113}01113\ \ \ \textcolor{keywordflow}{switch}\ (pRing-\/>Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01114}01114\ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_SKIP:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01115}01115\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01116}01116\ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ skip\ mode\ and\ there\ is\ no\ space\ for\ the\ whole}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01117}01117\ \ \ \ \ \textcolor{comment}{//\ of\ this\ output,\ don't\ bother.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01118}01118\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01119}01119\ \ \ \ \ Avail\ =\ \_GetAvailWriteSpace(pRing);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01120}01120\ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ <\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01121}01121\ \ \ \ \ \ \ Status\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01122}01122\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01123}01123\ \ \ \ \ \ \ Status\ =\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01124}01124\ \ \ \ \ \ \ \_WriteNoCheck(pRing,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01125}01125\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01126}01126\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01127}01127\ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_TRIM:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01128}01128\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01129}01129\ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ trim\ mode,\ trim\ to\ what\ we\ can\ output\ without\ blocking.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01130}01130\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01131}01131\ \ \ \ \ Avail\ =\ \_GetAvailWriteSpace(pRing);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01132}01132\ \ \ \ \ Status\ =\ Avail\ <\ NumBytes\ ?\ Avail\ :\ NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01133}01133\ \ \ \ \ \_WriteNoCheck(pRing,\ pData,\ Status);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01134}01134\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01135}01135\ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_BLOCK\_IF\_FIFO\_FULL:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01136}01136\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01137}01137\ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ blocking\ mode,\ output\ everything.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01138}01138\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01139}01139\ \ \ \ \ Status\ =\ \_WriteBlocking(pRing,\ pData,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01140}01140\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01141}01141\ \ \ \textcolor{keywordflow}{default}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01142}01142\ \ \ \ \ Status\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01143}01143\ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01144}01144\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01145}01145\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01146}01146\ \ \ \textcolor{comment}{//\ Finish\ up.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01147}01147\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01148}01148\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01149}01149\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01150}01150\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01151}01151\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01152}01152\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01153}01153\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_WriteDownBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01154}01154\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01155}01155\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01156}01156\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT\ control\ block\ in\ a\ \ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01157}01157\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01158}01158\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01159}01159\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01160}01160\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01161}01161\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01162}01162\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01163}01163\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01164}01164\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Down"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01165}01165\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01166}01166\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01167}01167\ \textcolor{comment}{*\ \ \ \ (1)\ Data\ is\ stored\ according\ to\ buffer\ flags.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01168}01168\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01169}01169\ \textcolor{comment}{*\ \ Additional\ information}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01170}01170\ \textcolor{comment}{*\ \ \ \ This\ function\ must\ not\ be\ called\ when\ J-\/Link\ might\ also\ do\ RTT.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01171}01171\ \textcolor{comment}{*\ \ \ \ This\ function\ locks\ against\ all\ other\ RTT\ operations.\ I.e.\ during}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01172}01172\ \textcolor{comment}{*\ \ \ \ the\ write\ operation,\ writing\ from\ the\ application\ is\ also\ locked.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01173}01173\ \textcolor{comment}{*\ \ \ \ If\ only\ one\ consumer\ writes\ to\ the\ down\ buffer,}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01174}01174\ \textcolor{comment}{*\ \ \ \ call\ SEGGER\_RTT\_WriteDownBufferNoLock()\ instead.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01175}01175\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01176}01176\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_WriteDownBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01177}01177\ \ \ \textcolor{keywordtype}{unsigned}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01178}01178\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01179}01179\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01180}01180\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01181}01181\ \ \ Status\ =\ SEGGER\_RTT\_WriteDownBufferNoLock(BufferIndex,\ pBuffer,\ NumBytes);\ \ \textcolor{comment}{//\ Call\ the\ non-\/locking\ write\ function}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01182}01182\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01183}01183\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01184}01184\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01185}01185\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01186}01186\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01187}01187\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01188}01188\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_Write}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01189}01189\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01190}01190\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01191}01191\ \textcolor{comment}{*\ \ \ \ Stores\ a\ specified\ number\ of\ characters\ in\ SEGGER\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01192}01192\ \textcolor{comment}{*\ \ \ \ control\ block\ which\ is\ then\ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01193}01193\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01194}01194\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01195}01195\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01196}01196\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ character\ array.\ Does\ not\ need\ to\ point\ to\ a\ \(\backslash\)0\ terminated\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01197}01197\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ Number\ of\ bytes\ to\ be\ stored\ in\ the\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01198}01198\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01199}01199\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01200}01200\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01201}01201\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01202}01202\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01203}01203\ \textcolor{comment}{*\ \ \ \ (1)\ Data\ is\ stored\ according\ to\ buffer\ flags.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01204}01204\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01205}01205\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_Write(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01206}01206\ \ \ \textcolor{keywordtype}{unsigned}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01207}01207\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01208}01208\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01209}01209\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01210}01210\ \ \ Status\ =\ SEGGER\_RTT\_WriteNoLock(BufferIndex,\ pBuffer,\ NumBytes);\ \ \textcolor{comment}{//\ Call\ the\ non-\/locking\ write\ function}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01211}01211\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01212}01212\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01213}01213\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01214}01214\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01215}01215\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01216}01216\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01217}01217\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_WriteString}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01218}01218\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01219}01219\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01220}01220\ \textcolor{comment}{*\ \ \ \ Stores\ string\ in\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01221}01221\ \textcolor{comment}{*\ \ \ \ This\ data\ is\ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01222}01222\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01223}01223\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01224}01224\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01225}01225\ \textcolor{comment}{*\ \ \ \ s\ \ \ \ \ \ \ \ \ \ \ \ Pointer\ to\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01226}01226\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01227}01227\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01228}01228\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01229}01229\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01230}01230\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01231}01231\ \textcolor{comment}{*\ \ \ \ (1)\ Data\ is\ stored\ according\ to\ buffer\ flags.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01232}01232\ \textcolor{comment}{*\ \ \ \ (2)\ String\ passed\ to\ this\ function\ has\ to\ be\ \(\backslash\)0\ terminated}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01233}01233\ \textcolor{comment}{*\ \ \ \ (3)\ \(\backslash\)0\ termination\ character\ is\ *not*\ stored\ in\ RTT\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01234}01234\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01235}01235\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_WriteString(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ s)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01236}01236\ \ \ \textcolor{keywordtype}{unsigned}\ Len;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01237}01237\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01238}01238\ \ \ Len\ =\ STRLEN(s);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01239}01239\ \ \ \textcolor{keywordflow}{return}\ SEGGER\_RTT\_Write(BufferIndex,\ s,\ Len);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01240}01240\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01241}01241\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01242}01242\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01243}01243\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01244}01244\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_PutCharSkipNoLock}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01245}01245\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01246}01246\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01247}01247\ \textcolor{comment}{*\ \ \ \ Stores\ a\ single\ character/byte\ in\ SEGGER\ RTT\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01248}01248\ \textcolor{comment}{*\ \ \ \ SEGGER\_RTT\_PutCharSkipNoLock\ does\ not\ lock\ the\ application\ and}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01249}01249\ \textcolor{comment}{*\ \ \ \ skips\ the\ byte,\ if\ it\ does\ not\ fit\ into\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01250}01250\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01251}01251\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01252}01252\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01253}01253\ \textcolor{comment}{*\ \ \ \ c\ \ \ \ \ \ \ \ \ \ \ \ Byte\ to\ be\ stored.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01254}01254\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01255}01255\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01256}01256\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01257}01257\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01258}01258\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01259}01259\ \textcolor{comment}{*\ \ \ \ (1)\ If\ there\ is\ not\ enough\ space\ in\ the\ "{}Up"{}-\/buffer,\ the\ character\ is\ dropped.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01260}01260\ \textcolor{comment}{*\ \ \ \ (2)\ For\ performance\ reasons\ this\ function\ does\ not\ call\ Init()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01261}01261\ \textcolor{comment}{*\ \ \ \ \ \ \ \ and\ may\ only\ be\ called\ after\ RTT\ has\ been\ initialized.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01262}01262\ \textcolor{comment}{*\ \ \ \ \ \ \ \ Either\ by\ calling\ SEGGER\_RTT\_Init()\ or\ calling\ another\ RTT\ API\ function\ first.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01263}01263\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01264}01264\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01265}01265\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_PutCharSkipNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{char}\ c)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01266}01266\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01267}01267\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01268}01268\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01269}01269\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ pDst;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01270}01270\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01271}01271\ \ \ \textcolor{comment}{//\ Get\ "{}to-\/host"{}\ ring\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01272}01272\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01273}01273\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01274}01274\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01275}01275\ \ \ \textcolor{comment}{//\ Get\ write\ position\ and\ handle\ wrap-\/around\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01276}01276\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01277}01277\ \ \ WrOff\ =\ pRing-\/>WrOff\ +\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01278}01278\ \ \ \textcolor{keywordflow}{if}\ (WrOff\ ==\ pRing-\/>SizeOfBuffer)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01279}01279\ \ \ \ \ WrOff\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01280}01280\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01281}01281\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01282}01282\ \ \ \textcolor{comment}{//\ Output\ byte\ if\ free\ space\ is\ available}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01283}01283\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01284}01284\ \ \ \textcolor{keywordflow}{if}\ (WrOff\ !=\ pRing-\/>RdOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01285}01285\ \ \ \ \ pDst\ =\ (pRing-\/>pBuffer\ +\ pRing-\/>WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01286}01286\ \ \ \ \ *pDst\ =\ c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01287}01287\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01288}01288\ \ \ \ \ pRing-\/>WrOff\ =\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01289}01289\ \ \ \ \ Status\ =\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01290}01290\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01291}01291\ \ \ \ \ Status\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01292}01292\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01293}01293\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01294}01294\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01295}01295\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01296}01296\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01297}01297\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01298}01298\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01299}01299\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_PutCharSkip}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01300}01300\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01301}01301\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01302}01302\ \textcolor{comment}{*\ \ \ \ Stores\ a\ single\ character/byte\ in\ SEGGER\ RTT\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01303}01303\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01304}01304\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01305}01305\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01306}01306\ \textcolor{comment}{*\ \ \ \ c\ \ \ \ \ \ \ \ \ \ \ \ Byte\ to\ be\ stored.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01307}01307\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01308}01308\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01309}01309\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01310}01310\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01311}01311\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01312}01312\ \textcolor{comment}{*\ \ \ \ (1)\ If\ there\ is\ not\ enough\ space\ in\ the\ "{}Up"{}-\/buffer,\ the\ character\ is\ dropped.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01313}01313\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01314}01314\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01315}01315\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_PutCharSkip(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{char}\ c)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01316}01316\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01317}01317\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01318}01318\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01319}01319\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ pDst;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01320}01320\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01321}01321\ \ \ \textcolor{comment}{//\ Prepare}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01322}01322\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01323}01323\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01324}01324\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01325}01325\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01326}01326\ \ \ \textcolor{comment}{//\ Get\ "{}to-\/host"{}\ ring\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01327}01327\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01328}01328\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01329}01329\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01330}01330\ \ \ \textcolor{comment}{//\ Get\ write\ position\ and\ handle\ wrap-\/around\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01331}01331\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01332}01332\ \ \ WrOff\ =\ pRing-\/>WrOff\ +\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01333}01333\ \ \ \textcolor{keywordflow}{if}\ (WrOff\ ==\ pRing-\/>SizeOfBuffer)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01334}01334\ \ \ \ \ WrOff\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01335}01335\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01336}01336\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01337}01337\ \ \ \textcolor{comment}{//\ Output\ byte\ if\ free\ space\ is\ available}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01338}01338\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01339}01339\ \ \ \textcolor{keywordflow}{if}\ (WrOff\ !=\ pRing-\/>RdOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01340}01340\ \ \ \ \ pDst\ \ =\ (pRing-\/>pBuffer\ +\ pRing-\/>WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01341}01341\ \ \ \ \ *pDst\ =\ c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01342}01342\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01343}01343\ \ \ \ \ pRing-\/>WrOff\ =\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01344}01344\ \ \ \ \ Status\ =\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01345}01345\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01346}01346\ \ \ \ \ Status\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01347}01347\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01348}01348\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01349}01349\ \ \ \textcolor{comment}{//\ Finish\ up.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01350}01350\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01351}01351\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01352}01352\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01353}01353\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01354}01354\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01355}01355\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01356}01356\ \textcolor{comment}{\ /*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01357}01357\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01358}01358\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_PutChar}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01359}01359\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01360}01360\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01361}01361\ \textcolor{comment}{*\ \ \ \ Stores\ a\ single\ character/byte\ in\ SEGGER\ RTT\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01362}01362\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01363}01363\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01364}01364\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used\ (e.g.\ 0\ for\ "{}Terminal"{}).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01365}01365\ \textcolor{comment}{*\ \ \ \ c\ \ \ \ \ \ \ \ \ \ \ \ Byte\ to\ be\ stored.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01366}01366\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01367}01367\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01368}01368\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01369}01369\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01370}01370\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01371}01371\ \textcolor{comment}{*\ \ \ \ (1)\ Data\ is\ stored\ according\ to\ buffer\ flags.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01372}01372\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01373}01373\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01374}01374\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_PutChar(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{char}\ c)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01375}01375\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01376}01376\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01377}01377\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01378}01378\ \ \ \textcolor{keyword}{volatile}\ \textcolor{keywordtype}{char}*\ \ \ \ \ \ \ \ pDst;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01379}01379\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01380}01380\ \ \ \textcolor{comment}{//\ Prepare}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01381}01381\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01382}01382\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01383}01383\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01384}01384\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01385}01385\ \ \ \textcolor{comment}{//\ Get\ "{}to-\/host"{}\ ring\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01386}01386\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01387}01387\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01388}01388\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01389}01389\ \ \ \textcolor{comment}{//\ Get\ write\ position\ and\ handle\ wrap-\/around\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01390}01390\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01391}01391\ \ \ WrOff\ =\ pRing-\/>WrOff\ +\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01392}01392\ \ \ \textcolor{keywordflow}{if}\ (WrOff\ ==\ pRing-\/>SizeOfBuffer)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01393}01393\ \ \ \ \ WrOff\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01394}01394\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01395}01395\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01396}01396\ \ \ \textcolor{comment}{//\ Wait\ for\ free\ space\ if\ mode\ is\ set\ to\ blocking}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01397}01397\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01398}01398\ \ \ \textcolor{keywordflow}{if}\ (pRing-\/>Flags\ ==\ SEGGER\_RTT\_MODE\_BLOCK\_IF\_FIFO\_FULL)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01399}01399\ \ \ \ \ \textcolor{keywordflow}{while}\ (WrOff\ ==\ pRing-\/>RdOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01400}01400\ \ \ \ \ \ \ ;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01401}01401\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01402}01402\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01403}01403\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01404}01404\ \ \ \textcolor{comment}{//\ Output\ byte\ if\ free\ space\ is\ available}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01405}01405\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01406}01406\ \ \ \textcolor{keywordflow}{if}\ (WrOff\ !=\ pRing-\/>RdOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01407}01407\ \ \ \ \ pDst\ \ =\ (pRing-\/>pBuffer\ +\ pRing-\/>WrOff)\ +\ SEGGER\_RTT\_UNCACHED\_OFF;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01408}01408\ \ \ \ \ *pDst\ =\ c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01409}01409\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01410}01410\ \ \ \ \ pRing-\/>WrOff\ =\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01411}01411\ \ \ \ \ Status\ =\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01412}01412\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01413}01413\ \ \ \ \ Status\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01414}01414\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01415}01415\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01416}01416\ \ \ \textcolor{comment}{//\ Finish\ up.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01417}01417\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01418}01418\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01419}01419\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01420}01420\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01421}01421\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01422}01422\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01423}01423\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01424}01424\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_GetKey}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01425}01425\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01426}01426\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01427}01427\ \textcolor{comment}{*\ \ \ \ Reads\ one\ character\ from\ the\ SEGGER\ RTT\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01428}01428\ \textcolor{comment}{*\ \ \ \ Host\ has\ previously\ stored\ data\ there.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01429}01429\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01430}01430\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01431}01431\ \textcolor{comment}{*\ \ \ \ <\ \ 0\ -\/\ \ \ No\ character\ available\ (buffer\ empty).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01432}01432\ \textcolor{comment}{*\ \ \ \ >=\ 0\ -\/\ \ \ Character\ which\ has\ been\ read.\ (Possible\ values:\ 0\ -\/\ 255)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01433}01433\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01434}01434\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01435}01435\ \textcolor{comment}{*\ \ \ \ (1)\ This\ function\ is\ only\ specified\ for\ accesses\ to\ RTT\ buffer\ 0.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01436}01436\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01437}01437\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_GetKey(\textcolor{keywordtype}{void})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01438}01438\ \ \ \textcolor{keywordtype}{char}\ c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01439}01439\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01440}01440\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01441}01441\ \ \ r\ =\ (int)SEGGER\_RTT\_Read(0u,\ \&c,\ 1u);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01442}01442\ \ \ \textcolor{keywordflow}{if}\ (r\ ==\ 1)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01443}01443\ \ \ \ \ r\ =\ (int)(\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char})c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01444}01444\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01445}01445\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01446}01446\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01447}01447\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01448}01448\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01449}01449\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01450}01450\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01451}01451\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01452}01452\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_WaitKey}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01453}01453\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01454}01454\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01455}01455\ \textcolor{comment}{*\ \ \ \ Waits\ until\ at\ least\ one\ character\ is\ avaible\ in\ the\ SEGGER\ RTT\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01456}01456\ \textcolor{comment}{*\ \ \ \ Once\ a\ character\ is\ available,\ it\ is\ read\ and\ this\ function\ returns.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01457}01457\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01458}01458\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01459}01459\ \textcolor{comment}{*\ \ \ \ >=0\ -\/\ \ \ Character\ which\ has\ been\ read.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01460}01460\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01461}01461\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01462}01462\ \textcolor{comment}{*\ \ \ \ (1)\ This\ function\ is\ only\ specified\ for\ accesses\ to\ RTT\ buffer\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01463}01463\ \textcolor{comment}{*\ \ \ \ (2)\ This\ function\ is\ blocking\ if\ no\ character\ is\ present\ in\ RTT\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01464}01464\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01465}01465\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_WaitKey(\textcolor{keywordtype}{void})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01466}01466\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01467}01467\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01468}01468\ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01469}01469\ \ \ \ \ r\ =\ SEGGER\_RTT\_GetKey();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01470}01470\ \ \ \}\ \textcolor{keywordflow}{while}\ (r\ <\ 0);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01471}01471\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01472}01472\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01473}01473\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01474}01474\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01475}01475\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01476}01476\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_HasKey}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01477}01477\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01478}01478\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01479}01479\ \textcolor{comment}{*\ \ \ \ Checks\ if\ at\ least\ one\ character\ for\ reading\ is\ available\ in\ the\ SEGGER\ RTT\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01480}01480\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01481}01481\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01482}01482\ \textcolor{comment}{*\ \ \ \ ==\ 0\ -\/\ \ \ \ \ No\ characters\ are\ available\ to\ read.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01483}01483\ \textcolor{comment}{*\ \ \ \ ==\ 1\ -\/\ \ \ \ \ At\ least\ one\ character\ is\ available.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01484}01484\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01485}01485\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01486}01486\ \textcolor{comment}{*\ \ \ \ (1)\ This\ function\ is\ only\ specified\ for\ accesses\ to\ RTT\ buffer\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01487}01487\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01488}01488\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_HasKey(\textcolor{keywordtype}{void})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01489}01489\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01490}01490\ \ \ \textcolor{keywordtype}{unsigned}\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01491}01491\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01492}01492\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01493}01493\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01494}01494\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*)((uintptr\_t)\&\_SEGGER\_RTT.aDown[0]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01495}01495\ \ \ RdOff\ =\ pRing-\/>RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01496}01496\ \ \ \textcolor{keywordflow}{if}\ (RdOff\ !=\ pRing-\/>WrOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01497}01497\ \ \ \ \ r\ =\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01498}01498\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01499}01499\ \ \ \ \ r\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01500}01500\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01501}01501\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01502}01502\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01503}01503\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01504}01504\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01505}01505\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01506}01506\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_HasData}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01507}01507\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01508}01508\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01509}01509\ \textcolor{comment}{*\ \ \ \ Check\ if\ there\ is\ data\ from\ the\ host\ in\ the\ given\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01510}01510\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01511}01511\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01512}01512\ \textcolor{comment}{*\ \ ==0:\ \ No\ data}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01513}01513\ \textcolor{comment}{*\ \ !=0:\ \ Data\ in\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01514}01514\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01515}01515\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01516}01516\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_HasData(\textcolor{keywordtype}{unsigned}\ BufferIndex)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01517}01517\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01518}01518\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01519}01519\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01520}01520\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*)((uintptr\_t)\&\_SEGGER\_RTT.aDown[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01521}01521\ \ \ v\ =\ pRing-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01522}01522\ \ \ \textcolor{keywordflow}{return}\ v\ -\/\ pRing-\/>RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01523}01523\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01524}01524\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01525}01525\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01526}01526\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01527}01527\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_HasDataUp}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01528}01528\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01529}01529\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01530}01530\ \textcolor{comment}{*\ \ \ \ Check\ if\ there\ is\ data\ remaining\ to\ be\ sent\ in\ the\ given\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01531}01531\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01532}01532\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01533}01533\ \textcolor{comment}{*\ \ ==0:\ \ No\ data}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01534}01534\ \textcolor{comment}{*\ \ !=0:\ \ Data\ in\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01535}01535\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01536}01536\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01537}01537\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_HasDataUp(\textcolor{keywordtype}{unsigned}\ BufferIndex)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01538}01538\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01539}01539\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01540}01540\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01541}01541\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01542}01542\ \ \ v\ =\ pRing-\/>RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01543}01543\ \ \ \textcolor{keywordflow}{return}\ pRing-\/>WrOff\ -\/\ v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01544}01544\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01545}01545\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01546}01546\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01547}01547\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01548}01548\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_AllocDownBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01549}01549\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01550}01550\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01551}01551\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ the\ next\ down-\/buffer\ (H-\/>T).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01552}01552\ \textcolor{comment}{*\ \ \ \ The\ next\ buffer,\ which\ is\ not\ used\ yet\ is\ configured.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01553}01553\ \textcolor{comment}{*\ \ \ \ This\ includes:\ Buffer\ address,\ size,\ name,\ flags,\ ...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01554}01554\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01555}01555\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01556}01556\ \textcolor{comment}{*\ \ \ \ sName\ \ \ \ \ \ \ \ Pointer\ to\ a\ constant\ name\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01557}01557\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ a\ buffer\ to\ be\ used.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01558}01558\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01559}01559\ \textcolor{comment}{*\ \ \ \ Flags\ \ \ \ \ \ \ \ Operating\ modes.\ Define\ behavior\ if\ buffer\ is\ full\ (not\ enough\ space\ for\ entire\ message).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01560}01560\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01561}01561\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01562}01562\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01563}01563\ \textcolor{comment}{*\ \ \ \ >=\ 0\ -\/\ O.K.\ Buffer\ Index}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01564}01564\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ -\/\ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01565}01565\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01566}01566\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_AllocDownBuffer(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01567}01567\ \ \ \textcolor{keywordtype}{int}\ BufferIndex;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01568}01568\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01569}01569\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01570}01570\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01571}01571\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01572}01572\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01573}01573\ \ \ BufferIndex\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01574}01574\ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01575}01575\ \ \ \ \ \textcolor{keywordflow}{if}\ (pRTTCB-\/>aDown[BufferIndex].pBuffer\ ==\ NULL)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01576}01576\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01577}01577\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01578}01578\ \ \ \ \ BufferIndex++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01579}01579\ \ \ \}\ \textcolor{keywordflow}{while}\ (BufferIndex\ <\ pRTTCB-\/>MaxNumDownBuffers);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01580}01580\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ pRTTCB-\/>MaxNumDownBuffers)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01581}01581\ \ \ \ \ pRTTCB-\/>aDown[BufferIndex].sName\ \ \ \ \ \ \ \ =\ sName;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01582}01582\ \ \ \ \ pRTTCB-\/>aDown[BufferIndex].pBuffer\ \ \ \ \ \ =\ (\textcolor{keywordtype}{char}*)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01583}01583\ \ \ \ \ pRTTCB-\/>aDown[BufferIndex].SizeOfBuffer\ =\ BufferSize;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01584}01584\ \ \ \ \ pRTTCB-\/>aDown[BufferIndex].RdOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01585}01585\ \ \ \ \ pRTTCB-\/>aDown[BufferIndex].WrOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01586}01586\ \ \ \ \ pRTTCB-\/>aDown[BufferIndex].Flags\ \ \ \ \ \ \ \ =\ Flags;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01587}01587\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01588}01588\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01589}01589\ \ \ \ \ BufferIndex\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01590}01590\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01591}01591\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01592}01592\ \ \ \textcolor{keywordflow}{return}\ BufferIndex;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01593}01593\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01594}01594\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01595}01595\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01596}01596\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01597}01597\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_AllocUpBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01598}01598\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01599}01599\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01600}01600\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ the\ next\ up-\/buffer\ (T-\/>H).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01601}01601\ \textcolor{comment}{*\ \ \ \ The\ next\ buffer,\ which\ is\ not\ used\ yet\ is\ configured.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01602}01602\ \textcolor{comment}{*\ \ \ \ This\ includes:\ Buffer\ address,\ size,\ name,\ flags,\ ...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01603}01603\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01604}01604\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01605}01605\ \textcolor{comment}{*\ \ \ \ sName\ \ \ \ \ \ \ \ Pointer\ to\ a\ constant\ name\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01606}01606\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ a\ buffer\ to\ be\ used.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01607}01607\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01608}01608\ \textcolor{comment}{*\ \ \ \ Flags\ \ \ \ \ \ \ \ Operating\ modes.\ Define\ behavior\ if\ buffer\ is\ full\ (not\ enough\ space\ for\ entire\ message).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01609}01609\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01610}01610\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01611}01611\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01612}01612\ \textcolor{comment}{*\ \ \ \ >=\ 0\ -\/\ O.K.\ Buffer\ Index}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01613}01613\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ -\/\ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01614}01614\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01615}01615\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_AllocUpBuffer(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01616}01616\ \ \ \textcolor{keywordtype}{int}\ BufferIndex;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01617}01617\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01618}01618\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01619}01619\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01620}01620\ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01621}01621\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01622}01622\ \ \ BufferIndex\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01623}01623\ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01624}01624\ \ \ \ \ \textcolor{keywordflow}{if}\ (pRTTCB-\/>aUp[BufferIndex].pBuffer\ ==\ NULL)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01625}01625\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01626}01626\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01627}01627\ \ \ \ \ BufferIndex++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01628}01628\ \ \ \}\ \textcolor{keywordflow}{while}\ (BufferIndex\ <\ pRTTCB-\/>MaxNumUpBuffers);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01629}01629\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ pRTTCB-\/>MaxNumUpBuffers)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01630}01630\ \ \ \ \ pRTTCB-\/>aUp[BufferIndex].sName\ \ \ \ \ \ \ \ =\ sName;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01631}01631\ \ \ \ \ pRTTCB-\/>aUp[BufferIndex].pBuffer\ \ \ \ \ \ =\ (\textcolor{keywordtype}{char}*)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01632}01632\ \ \ \ \ pRTTCB-\/>aUp[BufferIndex].SizeOfBuffer\ =\ BufferSize;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01633}01633\ \ \ \ \ pRTTCB-\/>aUp[BufferIndex].RdOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01634}01634\ \ \ \ \ pRTTCB-\/>aUp[BufferIndex].WrOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01635}01635\ \ \ \ \ pRTTCB-\/>aUp[BufferIndex].Flags\ \ \ \ \ \ \ \ =\ Flags;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01636}01636\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01637}01637\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01638}01638\ \ \ \ \ BufferIndex\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01639}01639\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01640}01640\ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01641}01641\ \ \ \textcolor{keywordflow}{return}\ BufferIndex;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01642}01642\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01643}01643\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01644}01644\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01645}01645\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01646}01646\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_ConfigUpBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01647}01647\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01648}01648\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01649}01649\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ a\ specific\ up-\/buffer\ (T-\/>H).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01650}01650\ \textcolor{comment}{*\ \ \ \ Buffer\ to\ be\ configured\ is\ specified\ by\ index.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01651}01651\ \textcolor{comment}{*\ \ \ \ This\ includes:\ Buffer\ address,\ size,\ name,\ flags,\ ...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01652}01652\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01653}01653\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01654}01654\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ buffer\ to\ configure.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01655}01655\ \textcolor{comment}{*\ \ \ \ sName\ \ \ \ \ \ \ \ Pointer\ to\ a\ constant\ name\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01656}01656\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ a\ buffer\ to\ be\ used.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01657}01657\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01658}01658\ \textcolor{comment}{*\ \ \ \ Flags\ \ \ \ \ \ \ \ Operating\ modes.\ Define\ behavior\ if\ buffer\ is\ full\ (not\ enough\ space\ for\ entire\ message).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01659}01659\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01660}01660\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01661}01661\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01662}01662\ \textcolor{comment}{*\ \ \ \ >=\ 0\ -\/\ O.K.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01663}01663\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ -\/\ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01664}01664\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01665}01665\ \textcolor{comment}{*\ \ Additional\ information}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01666}01666\ \textcolor{comment}{*\ \ \ \ Buffer\ 0\ is\ configured\ on\ compile-\/time.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01667}01667\ \textcolor{comment}{*\ \ \ \ May\ only\ be\ called\ once\ per\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01668}01668\ \textcolor{comment}{*\ \ \ \ Buffer\ name\ and\ flags\ can\ be\ reconfigured\ using\ the\ appropriate\ functions.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01669}01669\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01670}01670\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_ConfigUpBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01671}01671\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01672}01672\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01673}01673\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pUp;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01674}01674\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01675}01675\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01676}01676\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01677}01677\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01678}01678\ \ \ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01679}01679\ \ \ \ \ pUp\ =\ \&pRTTCB-\/>aUp[BufferIndex];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01680}01680\ \ \ \ \ \textcolor{keywordflow}{if}\ (BufferIndex)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01681}01681\ \ \ \ \ \ \ pUp-\/>sName\ \ \ \ \ \ \ \ =\ sName;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01682}01682\ \ \ \ \ \ \ pUp-\/>pBuffer\ \ \ \ \ \ =\ (\textcolor{keywordtype}{char}*)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01683}01683\ \ \ \ \ \ \ pUp-\/>SizeOfBuffer\ =\ BufferSize;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01684}01684\ \ \ \ \ \ \ pUp-\/>RdOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01685}01685\ \ \ \ \ \ \ pUp-\/>WrOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01686}01686\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01687}01687\ \ \ \ \ pUp-\/>Flags\ \ \ \ \ \ \ \ \ \ =\ Flags;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01688}01688\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01689}01689\ \ \ \ \ r\ =\ \ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01690}01690\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01691}01691\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01692}01692\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01693}01693\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01694}01694\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01695}01695\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01696}01696\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01697}01697\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01698}01698\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_ConfigDownBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01699}01699\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01700}01700\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01701}01701\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ a\ specific\ down-\/buffer\ (H-\/>T).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01702}01702\ \textcolor{comment}{*\ \ \ \ Buffer\ to\ be\ configured\ is\ specified\ by\ index.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01703}01703\ \textcolor{comment}{*\ \ \ \ This\ includes:\ Buffer\ address,\ size,\ name,\ flags,\ ...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01704}01704\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01705}01705\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01706}01706\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ buffer\ to\ configure.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01707}01707\ \textcolor{comment}{*\ \ \ \ sName\ \ \ \ \ \ \ \ Pointer\ to\ a\ constant\ name\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01708}01708\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ \ \ Pointer\ to\ a\ buffer\ to\ be\ used.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01709}01709\ \textcolor{comment}{*\ \ \ \ BufferSize\ \ \ Size\ of\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01710}01710\ \textcolor{comment}{*\ \ \ \ Flags\ \ \ \ \ \ \ \ Operating\ modes.\ Define\ behavior\ if\ buffer\ is\ full\ (not\ enough\ space\ for\ entire\ message).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01711}01711\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01712}01712\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01713}01713\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01714}01714\ \textcolor{comment}{*\ \ \ \ >=\ 0\ \ O.K.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01715}01715\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ \ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01716}01716\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01717}01717\ \textcolor{comment}{*\ \ Additional\ information}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01718}01718\ \textcolor{comment}{*\ \ \ \ Buffer\ 0\ is\ configured\ on\ compile-\/time.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01719}01719\ \textcolor{comment}{*\ \ \ \ May\ only\ be\ called\ once\ per\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01720}01720\ \textcolor{comment}{*\ \ \ \ Buffer\ name\ and\ flags\ can\ be\ reconfigured\ using\ the\ appropriate\ functions.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01721}01721\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01722}01722\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_ConfigDownBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01723}01723\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01724}01724\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01725}01725\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*\ pDown;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01726}01726\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01727}01727\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01728}01728\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01729}01729\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01730}01730\ \ \ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01731}01731\ \ \ \ \ pDown\ =\ \&pRTTCB-\/>aDown[BufferIndex];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01732}01732\ \ \ \ \ \textcolor{keywordflow}{if}\ (BufferIndex)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01733}01733\ \ \ \ \ \ \ pDown-\/>sName\ \ \ \ \ \ \ \ =\ sName;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01734}01734\ \ \ \ \ \ \ pDown-\/>pBuffer\ \ \ \ \ \ =\ (\textcolor{keywordtype}{char}*)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01735}01735\ \ \ \ \ \ \ pDown-\/>SizeOfBuffer\ =\ BufferSize;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01736}01736\ \ \ \ \ \ \ pDown-\/>RdOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01737}01737\ \ \ \ \ \ \ pDown-\/>WrOff\ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01738}01738\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01739}01739\ \ \ \ \ pDown-\/>Flags\ \ \ \ \ \ \ \ \ \ =\ Flags;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01740}01740\ \ \ \ \ RTT\_\_DMB();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Force\ data\ write\ to\ be\ complete\ before\ writing\ the\ ,\ in\ case\ CPU\ is\ allowed\ to\ change\ the\ order\ of\ memory\ accesses}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01741}01741\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01742}01742\ \ \ \ \ r\ =\ \ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01743}01743\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01744}01744\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01745}01745\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01746}01746\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01747}01747\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01748}01748\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01749}01749\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01750}01750\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01751}01751\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_SetNameUpBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01752}01752\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01753}01753\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01754}01754\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ a\ specific\ up-\/buffer\ name\ (T-\/>H).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01755}01755\ \textcolor{comment}{*\ \ \ \ Buffer\ to\ be\ configured\ is\ specified\ by\ index.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01756}01756\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01757}01757\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01758}01758\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ buffer\ to\ renamed.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01759}01759\ \textcolor{comment}{*\ \ \ \ sName\ \ \ \ \ \ \ \ Pointer\ to\ a\ constant\ name\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01760}01760\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01761}01761\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01762}01762\ \textcolor{comment}{*\ \ \ \ >=\ 0\ \ O.K.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01763}01763\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ \ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01764}01764\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01765}01765\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_SetNameUpBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01766}01766\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01767}01767\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01768}01768\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pUp;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01769}01769\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01770}01770\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01771}01771\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01772}01772\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01773}01773\ \ \ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01774}01774\ \ \ \ \ pUp\ =\ \&pRTTCB-\/>aUp[BufferIndex];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01775}01775\ \ \ \ \ pUp-\/>sName\ =\ sName;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01776}01776\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01777}01777\ \ \ \ \ r\ =\ \ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01778}01778\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01779}01779\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01780}01780\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01781}01781\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01782}01782\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01783}01783\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01784}01784\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01785}01785\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01786}01786\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_SetNameDownBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01787}01787\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01788}01788\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01789}01789\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ a\ specific\ Down-\/buffer\ name\ (T-\/>H).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01790}01790\ \textcolor{comment}{*\ \ \ \ Buffer\ to\ be\ configured\ is\ specified\ by\ index.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01791}01791\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01792}01792\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01793}01793\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ buffer\ to\ renamed.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01794}01794\ \textcolor{comment}{*\ \ \ \ sName\ \ \ \ \ \ \ \ Pointer\ to\ a\ constant\ name\ string.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01795}01795\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01796}01796\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01797}01797\ \textcolor{comment}{*\ \ \ \ >=\ 0\ \ O.K.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01798}01798\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ \ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01799}01799\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01800}01800\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_SetNameDownBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01801}01801\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01802}01802\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01803}01803\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*\ pDown;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01804}01804\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01805}01805\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01806}01806\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01807}01807\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01808}01808\ \ \ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01809}01809\ \ \ \ \ pDown\ =\ \&pRTTCB-\/>aDown[BufferIndex];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01810}01810\ \ \ \ \ pDown-\/>sName\ =\ sName;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01811}01811\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01812}01812\ \ \ \ \ r\ =\ \ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01813}01813\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01814}01814\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01815}01815\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01816}01816\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01817}01817\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01818}01818\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01819}01819\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01820}01820\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01821}01821\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_SetFlagsUpBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01822}01822\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01823}01823\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01824}01824\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ specific\ up-\/buffer\ flags\ (T-\/>H).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01825}01825\ \textcolor{comment}{*\ \ \ \ Buffer\ to\ be\ configured\ is\ specified\ by\ index.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01826}01826\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01827}01827\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01828}01828\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01829}01829\ \textcolor{comment}{*\ \ \ \ Flags\ \ \ \ \ \ \ \ Flags\ to\ set\ for\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01830}01830\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01831}01831\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01832}01832\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01833}01833\ \textcolor{comment}{*\ \ \ \ >=\ 0\ \ O.K.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01834}01834\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ \ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01835}01835\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01836}01836\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_SetFlagsUpBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{unsigned}\ Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01837}01837\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01838}01838\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01839}01839\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pUp;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01840}01840\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01841}01841\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01842}01842\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01843}01843\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01844}01844\ \ \ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01845}01845\ \ \ \ \ pUp\ =\ \&pRTTCB-\/>aUp[BufferIndex];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01846}01846\ \ \ \ \ pUp-\/>Flags\ =\ Flags;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01847}01847\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01848}01848\ \ \ \ \ r\ =\ \ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01849}01849\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01850}01850\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01851}01851\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01852}01852\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01853}01853\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01854}01854\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01855}01855\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01856}01856\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01857}01857\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_SetFlagsDownBuffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01858}01858\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01859}01859\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01860}01860\ \textcolor{comment}{*\ \ \ \ Run-\/time\ configuration\ of\ specific\ Down-\/buffer\ flags\ (T-\/>H).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01861}01861\ \textcolor{comment}{*\ \ \ \ Buffer\ to\ be\ configured\ is\ specified\ by\ index.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01862}01862\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01863}01863\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01864}01864\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ buffer\ to\ renamed.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01865}01865\ \textcolor{comment}{*\ \ \ \ Flags\ \ \ \ \ \ \ \ Flags\ to\ set\ for\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01866}01866\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01867}01867\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01868}01868\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01869}01869\ \textcolor{comment}{*\ \ \ \ >=\ 0\ \ O.K.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01870}01870\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ \ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01871}01871\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01872}01872\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_SetFlagsDownBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{unsigned}\ Flags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01873}01873\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01874}01874\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01875}01875\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}*\ pDown;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01876}01876\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01877}01877\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01878}01878\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01879}01879\ \ \ \textcolor{keywordflow}{if}\ (BufferIndex\ <\ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01880}01880\ \ \ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01881}01881\ \ \ \ \ pDown\ =\ \&pRTTCB-\/>aDown[BufferIndex];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01882}01882\ \ \ \ \ pDown-\/>Flags\ =\ Flags;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01883}01883\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01884}01884\ \ \ \ \ r\ =\ \ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01885}01885\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01886}01886\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01887}01887\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01888}01888\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01889}01889\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01890}01890\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01891}01891\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01892}01892\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01893}01893\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_Init}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01894}01894\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01895}01895\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01896}01896\ \textcolor{comment}{*\ \ \ \ Initializes\ the\ RTT\ Control\ Block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01897}01897\ \textcolor{comment}{*\ \ \ \ Should\ be\ used\ in\ RAM\ targets,\ at\ start\ of\ the\ application.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01898}01898\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01899}01899\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01900}01900\ \textcolor{keywordtype}{void}\ SEGGER\_RTT\_Init\ (\textcolor{keywordtype}{void})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01901}01901\ \ \ \_DoInit();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01902}01902\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01903}01903\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01904}01904\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01905}01905\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01906}01906\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_SetTerminal}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01907}01907\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01908}01908\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01909}01909\ \textcolor{comment}{*\ \ \ \ Sets\ the\ terminal\ to\ be\ used\ for\ output\ on\ channel\ 0.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01910}01910\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01911}01911\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01912}01912\ \textcolor{comment}{*\ \ \ \ TerminalId\ \ Index\ of\ the\ terminal.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01913}01913\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01914}01914\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01915}01915\ \textcolor{comment}{*\ \ \ \ >=\ 0\ \ O.K.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01916}01916\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ \ Error\ (e.g.\ if\ RTT\ is\ configured\ for\ non-\/blocking\ mode\ and\ there\ was\ no\ space\ in\ the\ buffer\ to\ set\ the\ new\ terminal\ Id)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01917}01917\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01918}01918\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01919}01919\ \textcolor{comment}{*\ \ \ \ (1)\ Buffer\ 0\ is\ always\ reserved\ for\ terminal\ I/O,\ so\ we\ can\ use\ index\ 0\ here,\ fixed}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01920}01920\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01921}01921\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_SetTerminal\ (\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ TerminalId)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01922}01922\ \ \ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ \ \ \ \ \ \ \ \ ac[2];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01923}01923\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01924}01924\ \ \ \textcolor{keywordtype}{unsigned}\ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01925}01925\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01926}01926\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01927}01927\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01928}01928\ \ \ r\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01929}01929\ \ \ ac[0]\ =\ 0xFFu;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01930}01930\ \ \ \textcolor{keywordflow}{if}\ (TerminalId\ <\ \textcolor{keyword}{sizeof}(\_aTerminalId))\ \{\ \textcolor{comment}{//\ We\ only\ support\ a\ certain\ number\ of\ channels}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01931}01931\ \ \ \ \ ac[1]\ =\ \_aTerminalId[TerminalId];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01932}01932\ \ \ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[0]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01933}01933\ \ \ \ \ SEGGER\_RTT\_LOCK();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Lock\ to\ make\ sure\ that\ no\ other\ task\ is\ writing\ into\ buffer,\ while\ we\ are\ and\ number\ of\ free\ bytes\ in\ buffer\ does\ not\ change\ downwards\ after\ checking\ and\ before\ writing}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01934}01934\ \ \ \ \ \textcolor{keywordflow}{if}\ ((pRing-\/>Flags\ \&\ SEGGER\_RTT\_MODE\_MASK)\ ==\ SEGGER\_RTT\_MODE\_BLOCK\_IF\_FIFO\_FULL)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01935}01935\ \ \ \ \ \ \ \_ActiveTerminal\ =\ TerminalId;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01936}01936\ \ \ \ \ \ \ \_WriteBlocking(pRing,\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*)ac,\ 2u);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01937}01937\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Skipping\ mode\ or\ trim\ mode?\ =>\ We\ cannot\ trim\ this\ command\ so\ handling\ is\ the\ same\ for\ both\ modes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01938}01938\ \ \ \ \ \ \ Avail\ =\ \_GetAvailWriteSpace(pRing);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01939}01939\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ >=\ 2)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01940}01940\ \ \ \ \ \ \ \ \ \_ActiveTerminal\ =\ TerminalId;\ \ \ \ \textcolor{comment}{//\ Only\ change\ active\ terminal\ in\ case\ of\ success}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01941}01941\ \ \ \ \ \ \ \ \ \_WriteNoCheck(pRing,\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*)ac,\ 2u);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01942}01942\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01943}01943\ \ \ \ \ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01944}01944\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01945}01945\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01946}01946\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01947}01947\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01948}01948\ \ \ \ \ r\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01949}01949\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01950}01950\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01951}01951\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01952}01952\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01953}01953\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01954}01954\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01955}01955\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_TerminalOut}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01956}01956\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01957}01957\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01958}01958\ \textcolor{comment}{*\ \ \ \ Writes\ a\ string\ to\ the\ given\ terminal}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01959}01959\ \textcolor{comment}{*\ \ \ \ \ without\ changing\ the\ terminal\ for\ channel\ 0.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01960}01960\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01961}01961\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01962}01962\ \textcolor{comment}{*\ \ \ \ TerminalId\ \ \ Index\ of\ the\ terminal.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01963}01963\ \textcolor{comment}{*\ \ \ \ s\ \ \ \ \ \ \ \ \ \ \ \ String\ to\ be\ printed\ on\ the\ terminal.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01964}01964\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01965}01965\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01966}01966\ \textcolor{comment}{*\ \ \ \ >=\ 0\ -\/\ Number\ of\ bytes\ written.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01967}01967\ \textcolor{comment}{*\ \ \ \ \ <\ 0\ -\/\ Error.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01968}01968\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01969}01969\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01970}01970\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_TerminalOut\ (\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ TerminalId,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ s)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01971}01971\ \ \ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01972}01972\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ FragLen;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01973}01973\ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ Avail;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01974}01974\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01975}01975\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01976}01976\ \ \ INIT();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01977}01977\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01978}01978\ \ \ \textcolor{comment}{//\ Validate\ terminal\ ID.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01979}01979\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01980}01980\ \ \ \textcolor{keywordflow}{if}\ (TerminalId\ <\ (\textcolor{keywordtype}{char})\textcolor{keyword}{sizeof}(\_aTerminalId))\ \{\ \textcolor{comment}{//\ We\ only\ support\ a\ certain\ number\ of\ channels}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01981}01981\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01982}01982\ \ \ \ \ \textcolor{comment}{//\ Get\ "{}to-\/host"{}\ ring\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01983}01983\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01984}01984\ \ \ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[0]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01985}01985\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01986}01986\ \ \ \ \ \textcolor{comment}{//\ Need\ to\ be\ able\ to\ change\ terminal,\ write\ data,\ change\ back.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01987}01987\ \ \ \ \ \textcolor{comment}{//\ Compute\ the\ fixed\ and\ variable\ sizes.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01988}01988\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01989}01989\ \ \ \ \ FragLen\ =\ STRLEN(s);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01990}01990\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01991}01991\ \ \ \ \ \textcolor{comment}{//\ How\ we\ output\ depends\ upon\ the\ mode...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01992}01992\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01993}01993\ \ \ \ \ SEGGER\_RTT\_LOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01994}01994\ \ \ \ \ Avail\ =\ \_GetAvailWriteSpace(pRing);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01995}01995\ \ \ \ \ \textcolor{keywordflow}{switch}\ (pRing-\/>Flags\ \&\ SEGGER\_RTT\_MODE\_MASK)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01996}01996\ \ \ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_SKIP:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01997}01997\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01998}01998\ \ \ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ skip\ mode\ and\ there\ is\ no\ space\ for\ the\ whole}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l01999}01999\ \ \ \ \ \ \ \textcolor{comment}{//\ of\ this\ output,\ don't\ bother\ switching\ terminals\ at\ all.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02000}02000\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02001}02001\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ <\ (FragLen\ +\ 4u))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02002}02002\ \ \ \ \ \ \ \ \ Status\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02003}02003\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02004}02004\ \ \ \ \ \ \ \ \ \_PostTerminalSwitch(pRing,\ TerminalId);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02005}02005\ \ \ \ \ \ \ \ \ Status\ =\ (int)\_WriteBlocking(pRing,\ s,\ FragLen);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02006}02006\ \ \ \ \ \ \ \ \ \_PostTerminalSwitch(pRing,\ \_ActiveTerminal);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02007}02007\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02008}02008\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02009}02009\ \ \ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_TRIM:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02010}02010\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02011}02011\ \ \ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ trim\ mode\ and\ there\ is\ not\ enough\ space\ for\ everything,}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02012}02012\ \ \ \ \ \ \ \textcolor{comment}{//\ trim\ the\ output\ but\ always\ include\ the\ terminal\ switch.\ \ If\ no\ room}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02013}02013\ \ \ \ \ \ \ \textcolor{comment}{//\ for\ terminal\ switch,\ skip\ that\ totally.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02014}02014\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02015}02015\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (Avail\ <\ 4u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02016}02016\ \ \ \ \ \ \ \ \ Status\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02017}02017\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02018}02018\ \ \ \ \ \ \ \ \ \_PostTerminalSwitch(pRing,\ TerminalId);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02019}02019\ \ \ \ \ \ \ \ \ Status\ =\ (int)\_WriteBlocking(pRing,\ s,\ (FragLen\ <\ (Avail\ -\/\ 4u))\ ?\ FragLen\ :\ (Avail\ -\/\ 4u));} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02020}02020\ \ \ \ \ \ \ \ \ \_PostTerminalSwitch(pRing,\ \_ActiveTerminal);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02021}02021\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02022}02022\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02023}02023\ \ \ \ \ \textcolor{keywordflow}{case}\ SEGGER\_RTT\_MODE\_BLOCK\_IF\_FIFO\_FULL:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02024}02024\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02025}02025\ \ \ \ \ \ \ \textcolor{comment}{//\ If\ we\ are\ in\ blocking\ mode,\ output\ everything.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02026}02026\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02027}02027\ \ \ \ \ \ \ \_PostTerminalSwitch(pRing,\ TerminalId);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02028}02028\ \ \ \ \ \ \ Status\ =\ (int)\_WriteBlocking(pRing,\ s,\ FragLen);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02029}02029\ \ \ \ \ \ \ \_PostTerminalSwitch(pRing,\ \_ActiveTerminal);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02030}02030\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02031}02031\ \ \ \ \ \textcolor{keywordflow}{default}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02032}02032\ \ \ \ \ \ \ Status\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02033}02033\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02034}02034\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02035}02035\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02036}02036\ \ \ \ \ \textcolor{comment}{//\ Finish\ up.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02037}02037\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02038}02038\ \ \ \ \ SEGGER\_RTT\_UNLOCK();} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02039}02039\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02040}02040\ \ \ \ \ Status\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02041}02041\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02042}02042\ \ \ \textcolor{keywordflow}{return}\ Status;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02043}02043\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02044}02044\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02045}02045\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02046}02046\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02047}02047\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_GetAvailWriteSpace}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02048}02048\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02049}02049\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02050}02050\ \textcolor{comment}{*\ \ \ \ Returns\ the\ number\ of\ bytes\ available\ in\ the\ ring\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02051}02051\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02052}02052\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02053}02053\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ up\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02054}02054\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02055}02055\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02056}02056\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ that\ are\ free\ in\ the\ selected\ up\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02057}02057\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02058}02058\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_GetAvailWriteSpace\ (\textcolor{keywordtype}{unsigned}\ BufferIndex)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02059}02059\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*\ pRing;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02060}02060\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02061}02061\ \ \ pRing\ =\ (\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[BufferIndex]\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02062}02062\ \ \ \textcolor{keywordflow}{return}\ \_GetAvailWriteSpace(pRing);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02063}02063\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02064}02064\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02065}02065\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02066}02066\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02067}02067\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02068}02068\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_GetBytesInBuffer()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02069}02069\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02070}02070\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02071}02071\ \textcolor{comment}{*\ \ \ \ Returns\ the\ number\ of\ bytes\ currently\ used\ in\ the\ up\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02072}02072\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02073}02073\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02074}02074\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ the\ up\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02075}02075\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02076}02076\ \textcolor{comment}{*\ \ Return\ value}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02077}02077\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ that\ are\ used\ in\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02078}02078\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02079}02079\ \textcolor{keywordtype}{unsigned}\ SEGGER\_RTT\_GetBytesInBuffer(\textcolor{keywordtype}{unsigned}\ BufferIndex)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02080}02080\ \ \ \textcolor{keywordtype}{unsigned}\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02081}02081\ \ \ \textcolor{keywordtype}{unsigned}\ WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02082}02082\ \ \ \textcolor{keywordtype}{unsigned}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02083}02083\ \ \ \textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*\ pRTTCB;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02084}02084\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02085}02085\ \ \ \textcolor{comment}{//\ Avoid\ warnings\ regarding\ volatile\ access\ order.\ \ It's\ not\ a\ problem}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02086}02086\ \ \ \textcolor{comment}{//\ in\ this\ case,\ but\ dampen\ compiler\ enthusiasm.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02087}02087\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02088}02088\ \ \ pRTTCB\ =\ (\textcolor{keyword}{volatile}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}*)((uintptr\_t)\&\_SEGGER\_RTT\ +\ SEGGER\_RTT\_UNCACHED\_OFF);\ \ \textcolor{comment}{//\ Access\ RTTCB\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02089}02089\ \ \ RdOff\ =\ pRTTCB-\/>aUp[BufferIndex].RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02090}02090\ \ \ WrOff\ =\ pRTTCB-\/>aUp[BufferIndex].WrOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02091}02091\ \ \ \textcolor{keywordflow}{if}\ (RdOff\ <=\ WrOff)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02092}02092\ \ \ \ \ r\ =\ WrOff\ -\/\ RdOff;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02093}02093\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02094}02094\ \ \ \ \ r\ =\ pRTTCB-\/>aUp[BufferIndex].SizeOfBuffer\ -\/\ (WrOff\ -\/\ RdOff);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02095}02095\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02096}02096\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02097}02097\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02098}02098\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8c_source_l02099}02099\ \textcolor{comment}{/***************************\ End\ of\ file\ ****************************/}} + +\end{DoxyCode} diff --git a/Doc/latex/_s_e_g_g_e_r___r_t_t_8h_source.tex b/Doc/latex/_s_e_g_g_e_r___r_t_t_8h_source.tex new file mode 100644 index 0000000..220f07c --- /dev/null +++ b/Doc/latex/_s_e_g_g_e_r___r_t_t_8h_source.tex @@ -0,0 +1,519 @@ +\doxysection{SEGGER\+\_\+\+RTT.\+h} +\hypertarget{_s_e_g_g_e_r___r_t_t_8h_source}{}\label{_s_e_g_g_e_r___r_t_t_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT.h}} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00001}00001\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00002}00002\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00003}00003\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ The\ Embedded\ Experts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00004}00004\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00005}00005\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00006}00006\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ (c)\ 1995\ -\/\ 2021\ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00007}00007\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00008}00008\ \textcolor{comment}{*\ \ \ \ \ \ \ www.segger.com\ \ \ \ \ Support:\ support@segger.com\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00009}00009\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00010}00010\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00011}00011\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00012}00012\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\ RTT\ *\ Real\ Time\ Transfer\ for\ embedded\ targets\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00013}00013\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00014}00014\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00015}00015\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00016}00016\ \textcolor{comment}{*\ All\ rights\ reserved.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00017}00017\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00018}00018\ \textcolor{comment}{*\ SEGGER\ strongly\ recommends\ to\ not\ make\ any\ changes\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00019}00019\ \textcolor{comment}{*\ to\ or\ modify\ the\ source\ code\ of\ this\ software\ in\ order\ to\ stay\ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00020}00020\ \textcolor{comment}{*\ compatible\ with\ the\ RTT\ protocol\ and\ J-\/Link.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00021}00021\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00022}00022\ \textcolor{comment}{*\ Redistribution\ and\ use\ in\ source\ and\ binary\ forms,\ with\ or\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00023}00023\ \textcolor{comment}{*\ without\ modification,\ are\ permitted\ provided\ that\ the\ following\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00024}00024\ \textcolor{comment}{*\ condition\ is\ met:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00025}00025\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00026}00026\ \textcolor{comment}{*\ o\ Redistributions\ of\ source\ code\ must\ retain\ the\ above\ copyright\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00027}00027\ \textcolor{comment}{*\ \ \ notice,\ this\ condition\ and\ the\ following\ disclaimer.\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00028}00028\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00029}00029\ \textcolor{comment}{*\ THIS\ SOFTWARE\ IS\ PROVIDED\ BY\ THE\ COPYRIGHT\ HOLDERS\ AND\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00030}00030\ \textcolor{comment}{*\ CONTRIBUTORS\ "{}AS\ IS"{}\ AND\ ANY\ EXPRESS\ OR\ IMPLIED\ WARRANTIES,\ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00031}00031\ \textcolor{comment}{*\ INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ THE\ IMPLIED\ WARRANTIES\ OF\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00032}00032\ \textcolor{comment}{*\ MERCHANTABILITY\ AND\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE\ ARE\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00033}00033\ \textcolor{comment}{*\ DISCLAIMED.\ IN\ NO\ EVENT\ SHALL\ SEGGER\ Microcontroller\ BE\ LIABLE\ FOR\ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00034}00034\ \textcolor{comment}{*\ ANY\ DIRECT,\ INDIRECT,\ INCIDENTAL,\ SPECIAL,\ EXEMPLARY,\ OR\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00035}00035\ \textcolor{comment}{*\ CONSEQUENTIAL\ DAMAGES\ (INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ PROCUREMENT\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00036}00036\ \textcolor{comment}{*\ OF\ SUBSTITUTE\ GOODS\ OR\ SERVICES;\ LOSS\ OF\ USE,\ DATA,\ OR\ PROFITS;\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00037}00037\ \textcolor{comment}{*\ OR\ BUSINESS\ INTERRUPTION)\ HOWEVER\ CAUSED\ AND\ ON\ ANY\ THEORY\ OF\ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00038}00038\ \textcolor{comment}{*\ LIABILITY,\ WHETHER\ IN\ CONTRACT,\ STRICT\ LIABILITY,\ OR\ TORT\ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00039}00039\ \textcolor{comment}{*\ (INCLUDING\ NEGLIGENCE\ OR\ OTHERWISE)\ ARISING\ IN\ ANY\ WAY\ OUT\ OF\ THE\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00040}00040\ \textcolor{comment}{*\ USE\ OF\ THIS\ SOFTWARE,\ EVEN\ IF\ ADVISED\ OF\ THE\ POSSIBILITY\ OF\ SUCH\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00041}00041\ \textcolor{comment}{*\ DAMAGE.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00042}00042\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00043}00043\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00044}00044\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00045}00045\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ version:\ 8.10g\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00046}00046\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00047}00047\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00048}00048\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00049}00049\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/END-\/OF-\/HEADER-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00050}00050\ \textcolor{comment}{File\ \ \ \ :\ SEGGER\_RTT.h}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00051}00051\ \textcolor{comment}{Purpose\ :\ Implementation\ of\ SEGGER\ real-\/time\ transfer\ which\ allows}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00052}00052\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ real-\/time\ communication\ on\ targets\ which\ support\ debugger}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00053}00053\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ memory\ accesses\ while\ the\ CPU\ is\ running.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00054}00054\ \textcolor{comment}{Revision:\ \$Rev:\ 25842\ \$}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00055}00055\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00056}00056\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00057}00057\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00058}00058\ \textcolor{preprocessor}{\#ifndef\ SEGGER\_RTT\_H}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00059}00059\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_H}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00060}00060\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00061}00061\ \textcolor{preprocessor}{\#include\ "{}SEGGER\_RTT\_Conf.h"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00062}00062\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00063}00063\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00064}00064\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00065}00065\ \textcolor{comment}{*\ \ \ \ \ \ \ Defines,\ defaults}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00066}00066\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00067}00067\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00068}00068\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00069}00069\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00070}00070\ \textcolor{preprocessor}{\#ifndef\ RTT\_USE\_ASM}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00071}00071\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00072}00072\ \ \ \textcolor{comment}{//\ Some\ cores\ support\ out-\/of-\/order\ memory\ accesses\ (reordering\ of\ memory\ accesses\ in\ the\ core)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00073}00073\ \ \ \textcolor{comment}{//\ For\ such\ cores,\ we\ need\ to\ define\ a\ memory\ barrier\ to\ guarantee\ the\ order\ of\ certain\ accesses\ to\ the\ RTT\ ring\ buffers.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00074}00074\ \ \ \textcolor{comment}{//\ Needed\ for:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00075}00075\ \ \ \textcolor{comment}{//\ \ \ Cortex-\/M7\ (ARMv7-\/M)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00076}00076\ \ \ \textcolor{comment}{//\ \ \ Cortex-\/M23\ (ARM-\/v8M)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00077}00077\ \ \ \textcolor{comment}{//\ \ \ Cortex-\/M33\ (ARM-\/v8M)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00078}00078\ \ \ \textcolor{comment}{//\ \ \ Cortex-\/A/R\ (ARM-\/v7A/R)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00079}00079\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00080}00080\ \ \ \textcolor{comment}{//\ We\ do\ not\ explicitly\ check\ for\ "{}Embedded\ Studio"{}\ as\ the\ compiler\ in\ use\ determines\ what\ we\ support.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00081}00081\ \ \ \textcolor{comment}{//\ You\ can\ use\ an\ external\ toolchain\ like\ IAR\ inside\ ES.\ So\ there\ is\ no\ point\ in\ checking\ for\ "{}Embedded\ Studio"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00082}00082\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00083}00083\ \textcolor{preprocessor}{\ \ \#if\ (defined\ \_\_CROSSWORKS\_ARM)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Rowley\ Crossworks}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00084}00084\ \textcolor{preprocessor}{\ \ \ \ \#define\ \_CC\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00085}00085\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM\_ARCH\_7M\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M3}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00086}00086\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00087}00087\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_7EM\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M4/M7}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00088}00088\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00089}00089\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00090}00090\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00091}00091\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8M\_BASE\_\_)\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M23}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00092}00092\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00093}00093\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00094}00094\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00095}00095\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8M\_MAIN\_\_)\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M33}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00096}00096\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00097}00097\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00098}00098\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00099}00099\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined(\_\_ARM\_ARCH\_8\_1M\_MAIN\_\_))\ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M85}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00100}00100\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00101}00101\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00102}00102\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00103}00103\ \textcolor{preprocessor}{\ \ \ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00104}00104\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00105}00105\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00106}00106\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ \_\_ARMCC\_VERSION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00107}00107\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00108}00108\ \ \ \ \ \textcolor{comment}{//\ ARM\ compiler}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00109}00109\ \ \ \ \ \textcolor{comment}{//\ ARM\ compiler\ V6.0\ and\ later\ is\ clang\ based.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00110}00110\ \ \ \ \ \textcolor{comment}{//\ Our\ ASM\ part\ is\ compatible\ to\ clang.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00111}00111\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00112}00112\ \textcolor{preprocessor}{\ \ \ \ \#if\ (\_\_ARMCC\_VERSION\ >=\ 6000000)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00113}00113\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CC\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00114}00114\ \textcolor{preprocessor}{\ \ \ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00115}00115\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CC\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00116}00116\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00117}00117\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM\_ARCH\_6M\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M0\ /\ M1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00118}00118\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0\ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ No\ ASM\ support\ for\ this\ architecture}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00119}00119\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_7M\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M3}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00120}00120\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00121}00121\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_7EM\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M4/M7}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00122}00122\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00123}00123\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00124}00124\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00125}00125\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8M\_BASE\_\_)\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M23}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00126}00126\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00127}00127\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00128}00128\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00129}00129\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8M\_MAIN\_\_)\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M33}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00130}00130\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00131}00131\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00132}00132\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00133}00133\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8\_1M\_MAIN\_\_)\ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M85}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00134}00134\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00135}00135\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00136}00136\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00137}00137\ \textcolor{preprocessor}{\ \ \ \ \#elif\ ((defined\ \_\_ARM\_ARCH\_7A\_\_)\ ||\ (defined\ \_\_ARM\_ARCH\_7R\_\_))\ \ }\textcolor{comment}{//\ Cortex-\/A/R\ 32-\/bit\ ARMv7-\/A/R}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00138}00138\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00139}00139\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00140}00140\ \textcolor{preprocessor}{\ \ \ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00141}00141\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00142}00142\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00143}00143\ \textcolor{preprocessor}{\ \ \#elif\ ((defined\ \_\_GNUC\_\_)\ ||\ (defined\ \_\_clang\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00144}00144\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00145}00145\ \ \ \ \ \textcolor{comment}{//\ GCC\ /\ Clang}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00146}00146\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00147}00147\ \textcolor{preprocessor}{\ \ \ \ \#define\ \_CC\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00148}00148\ \ \ \ \ \textcolor{comment}{//\ ARM\ 7/9:\ \_\_ARM\_ARCH\_5\_\_\ /\ \_\_ARM\_ARCH\_5E\_\_\ /\ \_\_ARM\_ARCH\_5T\_\_\ /\ \_\_ARM\_ARCH\_5T\_\_\ /\ \_\_ARM\_ARCH\_5TE\_\_}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00149}00149\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM\_ARCH\_7M\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M3}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_7EM\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M4/M7}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00152}00152\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00153}00153\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Only\ Cortex-\/M7\ needs\ a\ DMB\ but\ we\ cannot\ distinguish\ M4\ and\ M7\ here...}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00154}00154\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00155}00155\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8M\_BASE\_\_)\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M23}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00156}00156\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00157}00157\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00158}00158\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00159}00159\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8M\_MAIN\_\_)\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M33}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00160}00160\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00161}00161\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00162}00162\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00163}00163\ \textcolor{preprocessor}{\ \ \ \ \#elif\ (defined\ \_\_ARM\_ARCH\_8\_1M\_MAIN\_\_)\ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M85}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00164}00164\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00165}00165\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00166}00166\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00167}00167\ \textcolor{preprocessor}{\ \ \ \ \#elif\ ((defined\ \_\_ARM\_ARCH\_7A\_\_)\ ||\ (defined\ \_\_ARM\_ARCH\_7R\_\_))\ \ }\textcolor{comment}{//\ Cortex-\/A/R\ 32-\/bit\ ARMv7-\/A/R}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00168}00168\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ \ \ \ \ \ \ \ \ \ \ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00169}00169\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ RTT\_\_DMB()\ \_\_asm\ volatile\ ("{}dmb\(\backslash\)n"{}\ :\ :\ :);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00170}00170\ \textcolor{preprocessor}{\ \ \ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00171}00171\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00172}00172\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00173}00173\ \textcolor{preprocessor}{\ \ \#elif\ ((defined\ \_\_IASMARM\_\_)\ ||\ (defined\ \_\_ICCARM\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00174}00174\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00175}00175\ \ \ \ \ \textcolor{comment}{//\ IAR\ assembler/compiler}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00176}00176\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00177}00177\ \textcolor{preprocessor}{\ \ \ \ \#define\ \_CC\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00178}00178\ \textcolor{preprocessor}{\ \ \ \ \#if\ (\_\_VER\_\_\ <\ 6300000)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00179}00179\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ VOLATILE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00180}00180\ \textcolor{preprocessor}{\ \ \ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00181}00181\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ VOLATILE\ volatile}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00182}00182\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00183}00183\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM7M\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Needed\ for\ old\ versions\ that\ do\ not\ know\ the\ define\ yet}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00184}00184\ \textcolor{preprocessor}{\ \ \ \ \ \ \#if\ (\_\_CORE\_\_\ ==\ \_\_ARM7M\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M3}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00185}00185\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00186}00186\ \textcolor{preprocessor}{\ \ \ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00187}00187\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00188}00188\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM7EM\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00189}00189\ \textcolor{preprocessor}{\ \ \ \ \ \ \#if\ (\_\_CORE\_\_\ ==\ \_\_ARM7EM\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M4/M7}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00190}00190\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00191}00191\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00192}00192\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ RTT\_\_DMB()\ asm\ VOLATILE\ ("{}DMB"{});}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00193}00193\ \textcolor{preprocessor}{\ \ \ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00194}00194\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00195}00195\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM8M\_BASELINE\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00196}00196\ \textcolor{preprocessor}{\ \ \ \ \ \ \#if\ (\_\_CORE\_\_\ ==\ \_\_ARM8M\_BASELINE\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M23}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00197}00197\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00198}00198\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00199}00199\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ RTT\_\_DMB()\ asm\ VOLATILE\ ("{}DMB"{});}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00200}00200\ \textcolor{preprocessor}{\ \ \ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00201}00201\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00202}00202\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM8M\_MAINLINE\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00203}00203\ \textcolor{preprocessor}{\ \ \ \ \ \ \#if\ (\_\_CORE\_\_\ ==\ \_\_ARM8M\_MAINLINE\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/M33}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00204}00204\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00205}00205\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00206}00206\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ RTT\_\_DMB()\ asm\ VOLATILE\ ("{}DMB"{});}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00207}00207\ \textcolor{preprocessor}{\ \ \ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00208}00208\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00209}00209\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM8EM\_MAINLINE\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00210}00210\ \textcolor{preprocessor}{\ \ \ \ \ \ \#if\ (\_\_CORE\_\_\ ==\ \_\_ARM8EM\_MAINLINE\_\_)\ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/???}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00211}00211\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00212}00212\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00213}00213\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ RTT\_\_DMB()\ asm\ VOLATILE\ ("{}DMB"{});}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00214}00214\ \textcolor{preprocessor}{\ \ \ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00215}00215\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00216}00216\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM7A\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00217}00217\ \textcolor{preprocessor}{\ \ \ \ \ \ \#if\ (\_\_CORE\_\_\ ==\ \_\_ARM7A\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/A\ 32-\/bit\ ARMv7-\/A}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00218}00218\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00219}00219\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ RTT\_\_DMB()\ asm\ VOLATILE\ ("{}DMB"{});}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00220}00220\ \textcolor{preprocessor}{\ \ \ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00221}00221\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00222}00222\ \textcolor{preprocessor}{\ \ \ \ \#if\ (defined\ \_\_ARM7R\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00223}00223\ \textcolor{preprocessor}{\ \ \ \ \ \ \#if\ (\_\_CORE\_\_\ ==\ \_\_ARM7R\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Cortex-\/R\ 32-\/bit\ ARMv7-\/R}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00224}00224\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ \_CORE\_NEEDS\_DMB\ 1}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00225}00225\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \#define\ RTT\_\_DMB()\ asm\ VOLATILE\ ("{}DMB"{});}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00226}00226\ \textcolor{preprocessor}{\ \ \ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00227}00227\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00228}00228\ \textcolor{comment}{//\ TBD:\ \_\_ARM8A\_\_\ =>\ Cortex-\/A\ 64-\/bit\ ARMv8-\/A}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00229}00229\ \textcolor{comment}{//\ TBD:\ \_\_ARM8R\_\_\ =>\ Cortex-\/R\ 64-\/bit\ ARMv8-\/R}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00230}00230\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00231}00231\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00232}00232\ \ \ \ \ \textcolor{comment}{//\ Other\ compilers}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00233}00233\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00234}00234\ \textcolor{preprocessor}{\ \ \ \ \#define\ \_CC\_HAS\_RTT\_ASM\_SUPPORT\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00235}00235\ \textcolor{preprocessor}{\ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00236}00236\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00237}00237\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00238}00238\ \ \ \textcolor{comment}{//\ If\ IDE\ and\ core\ support\ the\ ASM\ version,\ enable\ ASM\ version\ by\ default}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00239}00239\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00240}00240\ \textcolor{preprocessor}{\ \ \#ifndef\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00241}00241\ \textcolor{preprocessor}{\ \ \ \ \#define\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT\ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Default\ for\ unknown\ cores}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00242}00242\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00243}00243\ \textcolor{preprocessor}{\ \ \#if\ (\_CC\_HAS\_RTT\_ASM\_SUPPORT\ \&\&\ \_CORE\_HAS\_RTT\_ASM\_SUPPORT)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00244}00244\ \textcolor{preprocessor}{\ \ \ \ \#define\ RTT\_USE\_ASM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00245}00245\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00246}00246\ \textcolor{preprocessor}{\ \ \ \ \#define\ RTT\_USE\_ASM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00247}00247\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00248}00248\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00249}00249\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00250}00250\ \textcolor{preprocessor}{\#ifndef\ \_CORE\_NEEDS\_DMB}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00251}00251\ \textcolor{preprocessor}{\ \ \#define\ \_CORE\_NEEDS\_DMB\ 0}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00252}00252\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00253}00253\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00254}00254\ \textcolor{preprocessor}{\#ifndef\ RTT\_\_DMB}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00255}00255\ \textcolor{preprocessor}{\ \ \#if\ \_CORE\_NEEDS\_DMB}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00256}00256\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}Don't\ know\ how\ to\ place\ inline\ assembly\ for\ DMB"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00257}00257\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00258}00258\ \textcolor{preprocessor}{\ \ \ \ \#define\ RTT\_\_DMB()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00259}00259\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00260}00260\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00261}00261\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00262}00262\ \textcolor{preprocessor}{\#ifndef\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00263}00263\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ (0)\ \ \ }\textcolor{comment}{//\ On\ most\ target\ systems\ where\ RTT\ is\ used,\ we\ do\ not\ have\ a\ CPU\ cache,\ therefore\ 0\ is\ a\ good\ default\ here}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00264}00264\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00265}00265\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00266}00266\ \textcolor{preprocessor}{\#ifndef\ SEGGER\_RTT\_UNCACHED\_OFF}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00267}00267\ \textcolor{preprocessor}{\ \ \#if\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00268}00268\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}SEGGER\_RTT\_UNCACHED\_OFF\ must\ be\ defined\ when\ setting\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00269}00269\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00270}00270\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNCACHED\_OFF\ (0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00271}00271\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00272}00272\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00273}00273\ \textcolor{preprocessor}{\#if\ RTT\_USE\_ASM}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00274}00274\ \textcolor{preprocessor}{\ \ \#if\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00275}00275\ \textcolor{preprocessor}{\ \ \ \ \#error\ "{}RTT\_USE\_ASM\ is\ not\ available\ if\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ !=\ 0"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00276}00276\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00277}00277\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00278}00278\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00279}00279\ \textcolor{preprocessor}{\#ifndef\ SEGGER\_RTT\_ASM\ \ }\textcolor{comment}{//\ defined\ when\ SEGGER\_RTT.h\ is\ included\ from\ assembly\ file}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00280}00280\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00281}00281\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00282}00282\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00283}00283\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00284}00284\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00285}00285\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00286}00286\ \textcolor{comment}{*\ \ \ \ \ \ \ Defines,\ fixed}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00287}00287\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00288}00288\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00289}00289\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00290}00290\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00291}00291\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00292}00292\ \textcolor{comment}{//\ Determine\ how\ much\ we\ must\ pad\ the\ control\ block\ to\ make\ it\ a\ multiple\ of\ a\ cache\ line\ in\ size}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00293}00293\ \textcolor{comment}{//\ Assuming:\ U8\ =\ 1B}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00294}00294\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ \ U16\ =\ 2B}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00295}00295\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ \ U32\ =\ 4B}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00296}00296\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ \ U8/U16/U32*\ =\ 4B}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00297}00297\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00298}00298\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ \ \ \ }\textcolor{comment}{//\ Avoid\ division\ by\ zero\ in\ case\ we\ do\ not\ have\ any\ cache}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00299}00299\ \textcolor{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)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00300}00300\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00301}00301\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_\_ROUND\_UP\_2\_CACHE\_LINE\_SIZE(NumBytes)\ (NumBytes)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00302}00302\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00303}00303\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_\_CB\_SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (16\ +\ 4\ +\ 4\ +\ (SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS\ *\ 24)\ +\ (SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS\ *\ 24))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00304}00304\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_\_CB\_PADDING\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (SEGGER\_RTT\_\_ROUND\_UP\_2\_CACHE\_LINE\_SIZE(SEGGER\_RTT\_\_CB\_SIZE)\ -\/\ SEGGER\_RTT\_\_CB\_SIZE)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00305}00305\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00306}00306\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00307}00307\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00308}00308\ \textcolor{comment}{*\ \ \ \ \ \ \ Types}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00309}00309\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00310}00310\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00311}00311\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00312}00312\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00313}00313\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00314}00314\ \textcolor{comment}{//\ Description\ for\ a\ circular\ buffer\ (also\ called\ "{}ring\ buffer"{})}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00315}00315\ \textcolor{comment}{//\ which\ is\ used\ as\ up-\/buffer\ (T-\/>H)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00316}00316\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00317}\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{00317}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00318}00318\ \ \ \textcolor{keyword}{const}\ \ \ \ \ \textcolor{keywordtype}{char}*\ \ \ \ sName;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Optional\ name.\ Standard\ names\ so\ far\ are:\ "{}Terminal"{},\ "{}SysView"{},\ "{}J-\/Scope\_t4i4"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00319}00319\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{char}*\ \ \ \ pBuffer;\ \ \ \ \ \ \ \textcolor{comment}{//\ Pointer\ to\ start\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00320}00320\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{unsigned}\ SizeOfBuffer;\ \ \textcolor{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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00321}00321\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{unsigned}\ WrOff;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Position\ of\ next\ item\ to\ be\ written\ by\ either\ target.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00322}00322\ \ \ \textcolor{keyword}{volatile}\ \ \textcolor{keywordtype}{unsigned}\ RdOff;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Position\ of\ next\ item\ to\ be\ read\ by\ host.\ Must\ be\ volatile\ since\ it\ may\ be\ modified\ by\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00323}00323\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{unsigned}\ Flags;\ \ \ \ \ \ \ \ \ \textcolor{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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00324}00324\ \}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00325}00325\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00326}00326\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00327}00327\ \textcolor{comment}{//\ Description\ for\ a\ circular\ buffer\ (also\ called\ "{}ring\ buffer"{})}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00328}00328\ \textcolor{comment}{//\ which\ is\ used\ as\ down-\/buffer\ (H-\/>T)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00329}00329\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00330}\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{00330}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00331}00331\ \ \ \textcolor{keyword}{const}\ \ \ \ \ \textcolor{keywordtype}{char}*\ \ \ \ sName;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Optional\ name.\ Standard\ names\ so\ far\ are:\ "{}Terminal"{},\ "{}SysView"{},\ "{}J-\/Scope\_t4i4"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00332}00332\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{char}*\ \ \ \ pBuffer;\ \ \ \ \ \ \ \textcolor{comment}{//\ Pointer\ to\ start\ of\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00333}00333\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{unsigned}\ SizeOfBuffer;\ \ \textcolor{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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00334}00334\ \ \ \textcolor{keyword}{volatile}\ \ \textcolor{keywordtype}{unsigned}\ WrOff;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Position\ of\ next\ item\ to\ be\ written\ by\ host.\ Must\ be\ volatile\ since\ it\ may\ be\ modified\ by\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00335}00335\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{unsigned}\ RdOff;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Position\ of\ next\ item\ to\ be\ read\ by\ target\ (down-\/buffer).}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00336}00336\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{unsigned}\ Flags;\ \ \ \ \ \ \ \ \ \textcolor{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.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00337}00337\ \}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00338}00338\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00339}00339\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00340}00340\ \textcolor{comment}{//\ RTT\ control\ block\ which\ describes\ the\ number\ of\ buffers\ available}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00341}00341\ \textcolor{comment}{//\ as\ well\ as\ the\ configuration\ for\ each\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00342}00342\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00343}00343\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00344}\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{00344}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00345}00345\ \ \ \textcolor{keywordtype}{char}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ acID[16];\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Initialized\ to\ "{}SEGGER\ RTT"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00346}00346\ \ \ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MaxNumUpBuffers;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Initialized\ to\ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS\ (type.\ 2)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00347}00347\ \ \ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MaxNumDownBuffers;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Initialized\ to\ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS\ (type.\ 2)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00348}00348\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}\ \ \ \ aUp[SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS];\ \ \ \ \ \ \ \textcolor{comment}{//\ Up\ buffers,\ transferring\ information\ up\ from\ target\ via\ debug\ probe\ to\ host}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00349}00349\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\_RTT\_BUFFER\_DOWN}}\ \ aDown[SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS];\ \ \ \textcolor{comment}{//\ Down\ buffers,\ transferring\ information\ down\ from\ host\ via\ debug\ probe\ to\ target}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00350}00350\ \textcolor{preprocessor}{\#if\ SEGGER\_RTT\_\_CB\_PADDING}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00351}00351\ \ \ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ \ \ \ \ \ \ \ \ \ \ aDummy[SEGGER\_RTT\_\_CB\_PADDING];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00352}00352\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00353}00353\ \}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00354}00354\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00355}00355\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00356}00356\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00357}00357\ \textcolor{comment}{*\ \ \ \ \ \ \ Global\ data}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00358}00358\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00359}00359\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00360}00360\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00361}00361\ \textcolor{keyword}{extern}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\_RTT\_CB}}\ \_SEGGER\_RTT;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00362}00362\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00363}00363\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00364}00364\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00365}00365\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ API\ functions}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00366}00366\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00367}00367\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00368}00368\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00369}00369\ \textcolor{preprocessor}{\#ifdef\ \_\_cplusplus}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00370}00370\ \ \ \textcolor{keyword}{extern}\ \textcolor{stringliteral}{"{}C"{}}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00371}00371\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00372}00372\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_AllocDownBuffer\ \ \ \ \ \ \ \ \ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00373}00373\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_AllocUpBuffer\ \ \ \ \ \ \ \ \ \ \ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00374}00374\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_ConfigUpBuffer\ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00375}00375\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_ConfigDownBuffer\ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize,\ \textcolor{keywordtype}{unsigned}\ Flags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00376}00376\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_GetKey\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{void});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00377}00377\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_HasData\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00378}00378\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_HasKey\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{void});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00379}00379\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_HasDataUp\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00380}00380\ \textcolor{keywordtype}{void}\ \ \ \ \ \ \ \ \ SEGGER\_RTT\_Init\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{void});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00381}00381\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_Read\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \ \ \ \ \ \ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00382}00382\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_ReadNoLock\ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \ \ \ \ \ \ \textcolor{keywordtype}{void}*\ pData,\ \ \ \textcolor{keywordtype}{unsigned}\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00383}00383\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_SetNameDownBuffer\ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00384}00384\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_SetNameUpBuffer\ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ sName);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00385}00385\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_SetFlagsDownBuffer\ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{unsigned}\ Flags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00386}00386\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_SetFlagsUpBuffer\ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{unsigned}\ Flags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00387}00387\ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_WaitKey\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{void});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00388}00388\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_Write\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00389}00389\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_WriteNoLock\ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00390}00390\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_WriteSkipNoLock\ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00391}00391\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_ASM\_WriteSkipNoLock\ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00392}00392\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_WriteString\ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ s);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00393}00393\ \textcolor{keywordtype}{void}\ \ \ \ \ \ \ \ \ SEGGER\_RTT\_WriteWithOverwriteNoLock(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00394}00394\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_PutChar\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{char}\ c);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00395}00395\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_PutCharSkip\ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{char}\ c);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00396}00396\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_PutCharSkipNoLock\ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{char}\ c);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00397}00397\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_GetAvailWriteSpace\ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00398}00398\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_GetBytesInBuffer\ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00399}00399\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00400}00400\ \textcolor{comment}{//\ Function\ macro\ for\ performance\ optimization}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00401}00401\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00402}00402\ \textcolor{preprocessor}{\#define\ \ \ \ \ \ SEGGER\_RTT\_HASDATA(n)\ \ \ \ \ \ \ (((SEGGER\_RTT\_BUFFER\_DOWN*)((uintptr\_t)\&\_SEGGER\_RTT.aDown[n]\ +\ SEGGER\_RTT\_UNCACHED\_OFF))-\/>WrOff\ -\/\ ((SEGGER\_RTT\_BUFFER\_DOWN*)((uintptr\_t)\&\_SEGGER\_RTT.aDown[n]\ +\ SEGGER\_RTT\_UNCACHED\_OFF))-\/>RdOff)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00403}00403\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00404}00404\ \textcolor{preprocessor}{\#if\ RTT\_USE\_ASM}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00405}00405\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_WriteSkipNoLock\ \ SEGGER\_RTT\_ASM\_WriteSkipNoLock}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00406}00406\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00407}00407\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00408}00408\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00409}00409\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00410}00410\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ transfer\ functions\ to\ send\ RTT\ data\ via\ other\ channels.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00411}00411\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00412}00412\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00413}00413\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00414}00414\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_ReadUpBuffer\ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00415}00415\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_ReadUpBufferNoLock\ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keywordtype}{void}*\ pData,\ \textcolor{keywordtype}{unsigned}\ BufferSize);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00416}00416\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_WriteDownBuffer\ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00417}00417\ \textcolor{keywordtype}{unsigned}\ \ \ \ \ SEGGER\_RTT\_WriteDownBufferNoLock\ \ \ (\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}*\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00418}00418\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00419}00419\ \textcolor{preprocessor}{\#define\ \ \ \ \ \ SEGGER\_RTT\_HASDATA\_UP(n)\ \ \ \ (((SEGGER\_RTT\_BUFFER\_UP*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[n]\ +\ SEGGER\_RTT\_UNCACHED\_OFF))-\/>WrOff\ -\/\ ((SEGGER\_RTT\_BUFFER\_UP*)((uintptr\_t)\&\_SEGGER\_RTT.aUp[n]\ +\ SEGGER\_RTT\_UNCACHED\_OFF))-\/>RdOff)\ \ \ }\textcolor{comment}{//\ Access\ uncached\ to\ make\ sure\ we\ see\ changes\ made\ by\ the\ J-\/Link\ side\ and\ all\ of\ our\ changes\ go\ into\ HW\ directly}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00420}00420\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00421}00421\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00422}00422\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00423}00423\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ "{}Terminal"{}\ API\ functions}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00424}00424\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00425}00425\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00426}00426\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00427}00427\ \textcolor{keywordtype}{int}\ \ \ \ \ SEGGER\_RTT\_SetTerminal\ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ TerminalId);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00428}00428\ \textcolor{keywordtype}{int}\ \ \ \ \ SEGGER\_RTT\_TerminalOut\ \ \ \ \ \ \ \ (\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ TerminalId,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ s);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00429}00429\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00430}00430\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00431}00431\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00432}00432\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ printf\ functions\ (require\ SEGGER\_RTT\_printf.c)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00433}00433\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00434}00434\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00435}00435\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00436}00436\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_printf(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *\ sFormat,\ ...);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00437}00437\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_vprintf(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *\ sFormat,\ va\_list\ *\ pParamList);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00438}00438\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00439}00439\ \textcolor{preprocessor}{\#ifdef\ \_\_cplusplus}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00440}00440\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00441}00441\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00442}00442\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00443}00443\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ ifndef(SEGGER\_RTT\_ASM)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00444}00444\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00445}00445\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00446}00446\ \textcolor{comment}{//\ For\ some\ environments,\ NULL\ may\ not\ be\ defined\ until\ certain\ headers\ are\ included}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00447}00447\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00448}00448\ \textcolor{preprocessor}{\#ifndef\ NULL}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00449}00449\ \textcolor{preprocessor}{\ \ \#define\ NULL\ \ ((void*)0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00450}00450\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00451}00451\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00452}00452\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00453}00453\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00454}00454\ \textcolor{comment}{*\ \ \ \ \ \ \ Defines}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00455}00455\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00456}00456\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00457}00457\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00458}00458\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00459}00459\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00460}00460\ \textcolor{comment}{//\ Operating\ modes.\ Define\ behavior\ if\ buffer\ is\ full\ (not\ enough\ space\ for\ entire\ message)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00461}00461\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00462}00462\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_SKIP\ \ \ \ \ \ \ \ \ (0)\ \ \ \ \ }\textcolor{comment}{//\ Skip.\ Do\ not\ block,\ output\ nothing.\ (Default)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00463}00463\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_MODE\_NO\_BLOCK\_TRIM\ \ \ \ \ \ \ \ \ (1)\ \ \ \ \ }\textcolor{comment}{//\ Trim:\ Do\ not\ block,\ output\ as\ much\ as\ fits.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00464}00464\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_MODE\_BLOCK\_IF\_FIFO\_FULL\ \ \ \ (2)\ \ \ \ \ }\textcolor{comment}{//\ Block:\ Wait\ until\ there\ is\ space\ in\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00465}00465\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_MODE\_MASK\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (3)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00466}00466\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00467}00467\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00468}00468\ \textcolor{comment}{//\ Control\ sequences,\ based\ on\ ANSI.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00469}00469\ \textcolor{comment}{//\ Can\ be\ used\ to\ control\ color,\ and\ clear\ the\ screen}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00470}00470\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00471}00471\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_RESET\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[0m"{}\ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Reset\ to\ default\ colors}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00472}00472\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_CLEAR\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2J"{}\ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Clear\ screen,\ reposition\ cursor\ to\ top\ left}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00473}00473\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00474}00474\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BLACK\ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;30m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00475}00475\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_RED\ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;31m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00476}00476\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_GREEN\ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;32m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00477}00477\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_YELLOW\ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;33m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00478}00478\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BLUE\ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;34m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00479}00479\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_MAGENTA\ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;35m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00480}00480\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_CYAN\ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;36m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00481}00481\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_WHITE\ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[2;37m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00482}00482\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00483}00483\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_BLACK\ \ \ \ "{}\(\backslash\)x1B[1;30m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00484}00484\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_RED\ \ \ \ \ \ "{}\(\backslash\)x1B[1;31m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00485}00485\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_GREEN\ \ \ \ "{}\(\backslash\)x1B[1;32m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00486}00486\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_YELLOW\ \ \ "{}\(\backslash\)x1B[1;33m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00487}00487\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_BLUE\ \ \ \ \ "{}\(\backslash\)x1B[1;34m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00488}00488\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_MAGENTA\ \ "{}\(\backslash\)x1B[1;35m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00489}00489\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_CYAN\ \ \ \ \ "{}\(\backslash\)x1B[1;36m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00490}00490\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_TEXT\_BRIGHT\_WHITE\ \ \ \ "{}\(\backslash\)x1B[1;37m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00491}00491\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00492}00492\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BLACK\ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;40m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00493}00493\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_RED\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;41m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00494}00494\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_GREEN\ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;42m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00495}00495\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_YELLOW\ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;43m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00496}00496\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BLUE\ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;44m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00497}00497\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_MAGENTA\ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;45m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00498}00498\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_CYAN\ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;46m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00499}00499\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_WHITE\ \ \ \ \ \ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[24;47m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00500}00500\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00501}00501\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_BLACK\ \ \ \ \ \ "{}\(\backslash\)x1B[4;40m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00502}00502\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_RED\ \ \ \ \ \ \ \ "{}\(\backslash\)x1B[4;41m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00503}00503\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_GREEN\ \ \ \ \ \ "{}\(\backslash\)x1B[4;42m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00504}00504\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_YELLOW\ \ \ \ \ "{}\(\backslash\)x1B[4;43m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00505}00505\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_BLUE\ \ \ \ \ \ \ "{}\(\backslash\)x1B[4;44m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00506}00506\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_MAGENTA\ \ \ \ "{}\(\backslash\)x1B[4;45m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00507}00507\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_CYAN\ \ \ \ \ \ \ "{}\(\backslash\)x1B[4;46m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00508}00508\ \textcolor{preprocessor}{\#define\ RTT\_CTRL\_BG\_BRIGHT\_WHITE\ \ \ \ \ \ "{}\(\backslash\)x1B[4;47m"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00509}00509\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00510}00510\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00511}00511\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00512}00512\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t_8h_source_l00513}00513\ \textcolor{comment}{/***************************\ End\ of\ file\ ****************************/}} + +\end{DoxyCode} diff --git a/Doc/latex/_s_e_g_g_e_r___r_t_t___conf_8h_source.tex b/Doc/latex/_s_e_g_g_e_r___r_t_t___conf_8h_source.tex new file mode 100644 index 0000000..e85fd0a --- /dev/null +++ b/Doc/latex/_s_e_g_g_e_r___r_t_t___conf_8h_source.tex @@ -0,0 +1,435 @@ +\doxysection{SEGGER\+\_\+\+RTT\+\_\+\+Conf.\+h} +\hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source}{}\label{_s_e_g_g_e_r___r_t_t___conf_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT\_Conf.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT\_Conf.h}} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00001}00001\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00002}00002\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00003}00003\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ The\ Embedded\ Experts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00004}00004\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00005}00005\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00006}00006\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ (c)\ 1995\ -\/\ 2021\ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00007}00007\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00008}00008\ \textcolor{comment}{*\ \ \ \ \ \ \ www.segger.com\ \ \ \ \ Support:\ support@segger.com\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00009}00009\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00010}00010\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00011}00011\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00012}00012\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\ RTT\ *\ Real\ Time\ Transfer\ for\ embedded\ targets\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00013}00013\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00014}00014\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00015}00015\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00016}00016\ \textcolor{comment}{*\ All\ rights\ reserved.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00017}00017\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00018}00018\ \textcolor{comment}{*\ SEGGER\ strongly\ recommends\ to\ not\ make\ any\ changes\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00019}00019\ \textcolor{comment}{*\ to\ or\ modify\ the\ source\ code\ of\ this\ software\ in\ order\ to\ stay\ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00020}00020\ \textcolor{comment}{*\ compatible\ with\ the\ RTT\ protocol\ and\ J-\/Link.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00021}00021\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00022}00022\ \textcolor{comment}{*\ Redistribution\ and\ use\ in\ source\ and\ binary\ forms,\ with\ or\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00023}00023\ \textcolor{comment}{*\ without\ modification,\ are\ permitted\ provided\ that\ the\ following\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00024}00024\ \textcolor{comment}{*\ condition\ is\ met:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00025}00025\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00026}00026\ \textcolor{comment}{*\ o\ Redistributions\ of\ source\ code\ must\ retain\ the\ above\ copyright\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00027}00027\ \textcolor{comment}{*\ \ \ notice,\ this\ condition\ and\ the\ following\ disclaimer.\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00028}00028\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00029}00029\ \textcolor{comment}{*\ THIS\ SOFTWARE\ IS\ PROVIDED\ BY\ THE\ COPYRIGHT\ HOLDERS\ AND\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00030}00030\ \textcolor{comment}{*\ CONTRIBUTORS\ "{}AS\ IS"{}\ AND\ ANY\ EXPRESS\ OR\ IMPLIED\ WARRANTIES,\ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00031}00031\ \textcolor{comment}{*\ INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ THE\ IMPLIED\ WARRANTIES\ OF\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00032}00032\ \textcolor{comment}{*\ MERCHANTABILITY\ AND\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE\ ARE\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00033}00033\ \textcolor{comment}{*\ DISCLAIMED.\ IN\ NO\ EVENT\ SHALL\ SEGGER\ Microcontroller\ BE\ LIABLE\ FOR\ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00034}00034\ \textcolor{comment}{*\ ANY\ DIRECT,\ INDIRECT,\ INCIDENTAL,\ SPECIAL,\ EXEMPLARY,\ OR\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00035}00035\ \textcolor{comment}{*\ CONSEQUENTIAL\ DAMAGES\ (INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ PROCUREMENT\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00036}00036\ \textcolor{comment}{*\ OF\ SUBSTITUTE\ GOODS\ OR\ SERVICES;\ LOSS\ OF\ USE,\ DATA,\ OR\ PROFITS;\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00037}00037\ \textcolor{comment}{*\ OR\ BUSINESS\ INTERRUPTION)\ HOWEVER\ CAUSED\ AND\ ON\ ANY\ THEORY\ OF\ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00038}00038\ \textcolor{comment}{*\ LIABILITY,\ WHETHER\ IN\ CONTRACT,\ STRICT\ LIABILITY,\ OR\ TORT\ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00039}00039\ \textcolor{comment}{*\ (INCLUDING\ NEGLIGENCE\ OR\ OTHERWISE)\ ARISING\ IN\ ANY\ WAY\ OUT\ OF\ THE\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00040}00040\ \textcolor{comment}{*\ USE\ OF\ THIS\ SOFTWARE,\ EVEN\ IF\ ADVISED\ OF\ THE\ POSSIBILITY\ OF\ SUCH\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00041}00041\ \textcolor{comment}{*\ DAMAGE.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00042}00042\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00043}00043\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00044}00044\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00045}00045\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ version:\ 8.10g\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00046}00046\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00047}00047\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00048}00048\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00049}00049\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/END-\/OF-\/HEADER-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00050}00050\ \textcolor{comment}{File\ \ \ \ :\ SEGGER\_RTT\_Conf.h}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00051}00051\ \textcolor{comment}{Purpose\ :\ Implementation\ of\ SEGGER\ real-\/time\ transfer\ (RTT)\ which}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00052}00052\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ allows\ real-\/time\ communication\ on\ targets\ which\ support}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00053}00053\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ debugger\ memory\ accesses\ while\ the\ CPU\ is\ running.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00054}00054\ \textcolor{comment}{Revision:\ \$Rev:\ 24316\ \$}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00055}00055\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00056}00056\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00057}00057\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00058}00058\ \textcolor{preprocessor}{\#ifndef\ SEGGER\_RTT\_CONF\_H}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00059}00059\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_CONF\_H}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00060}00060\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00061}00061\ \textcolor{preprocessor}{\#ifdef\ \_\_IAR\_SYSTEMS\_ICC\_\_}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00062}00062\ \textcolor{preprocessor}{\ \ \#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00063}00063\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00064}00064\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00065}00065\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00066}00066\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00067}00067\ \textcolor{comment}{*\ \ \ \ \ \ \ Defines,\ configurable}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00068}00068\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00069}00069\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00070}00070\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00071}00071\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00072}00072\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00073}00073\ \textcolor{comment}{//\ Take\ in\ and\ set\ to\ correct\ values\ for\ Cortex-\/A\ systems\ with\ CPU\ cache}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00074}00074\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00075}00075\ \textcolor{comment}{//\#define\ SEGGER\_RTT\_CPU\_CACHE\_LINE\_SIZE\ \ \ \ \ \ \ \ \ \ \ \ (32)\ \ \ \ \ \ \ \ \ \ //\ Largest\ cache\ line\ size\ (in\ bytes)\ in\ the\ current\ system}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00076}00076\ \textcolor{comment}{//\#define\ SEGGER\_RTT\_UNCACHED\_OFF\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (0xFB000000)\ \ //\ Address\ alias\ where\ RTT\ CB\ and\ buffers\ can\ be\ accessed\ uncached}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00077}00077\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00078}00078\ \textcolor{comment}{//\ Most\ common\ case:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00079}00079\ \textcolor{comment}{//\ Up-\/channel\ 0:\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00080}00080\ \textcolor{comment}{//\ Up-\/channel\ 1:\ SystemView}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00081}00081\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00083}00083\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MAX\_NUM\_UP\_BUFFERS\ \ \ \ \ \ \ \ \ \ \ \ \ (3)\ \ \ \ \ }\textcolor{comment}{//\ Max.\ number\ of\ up-\/buffers\ (T-\/>H)\ available\ on\ this\ target\ \ \ \ (Default:\ 3)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00084}00084\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00085}00085\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00086}00086\ \textcolor{comment}{//\ Most\ common\ case:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00087}00087\ \textcolor{comment}{//\ Down-\/channel\ 0:\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00088}00088\ \textcolor{comment}{//\ Down-\/channel\ 1:\ SystemView}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00089}00089\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00090}00090\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00091}00091\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MAX\_NUM\_DOWN\_BUFFERS\ \ \ \ \ \ \ \ \ \ \ (3)\ \ \ \ \ }\textcolor{comment}{//\ Max.\ number\ of\ down-\/buffers\ (H-\/>T)\ available\ on\ this\ target\ \ (Default:\ 3)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00092}00092\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00093}00093\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifndef\ \ \ BUFFER\_SIZE\_UP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00095}00095\ \textcolor{preprocessor}{\ \ \#define\ BUFFER\_SIZE\_UP\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (4096)\ \ }\textcolor{comment}{//\ Size\ of\ the\ buffer\ for\ terminal\ output\ of\ target,\ up\ to\ host\ (Default:\ 1k)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00097}00097\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00098}00098\ \textcolor{preprocessor}{\#ifndef\ \ \ BUFFER\_SIZE\_DOWN}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00099}00099\ \textcolor{preprocessor}{\ \ \#define\ BUFFER\_SIZE\_DOWN\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (16)\ \ \ \ }\textcolor{comment}{//\ Size\ of\ the\ buffer\ for\ terminal\ input\ to\ target\ from\ host\ (Usually\ keyboard\ input)\ (Default:\ 16)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00100}00100\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00101}00101\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00102}00102\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_PRINTF\_BUFFER\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00103}00103\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_PRINTF\_BUFFER\_SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ (64u)\ \ \ \ }\textcolor{comment}{//\ Size\ of\ buffer\ for\ RTT\ printf\ to\ bulk-\/send\ chars\ via\ RTT\ \ \ \ \ (Default:\ 64)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00104}00104\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00105}00105\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00106}00106\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MODE\_DEFAULT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00107}00107\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MODE\_DEFAULT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\_RTT\_MODE\_NO\_BLOCK\_TRIM\ }\textcolor{comment}{//\ Mode\ for\ pre-\/initialized\ terminal\ channel\ (buffer\ 0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00108}00108\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00109}00109\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00110}00110\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00111}00111\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00112}00112\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ memcpy\ configuration}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00113}00113\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00114}00114\ \textcolor{comment}{*\ \ \ \ \ \ \ memcpy()\ is\ good\ for\ large\ amounts\ of\ data,}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00115}00115\ \textcolor{comment}{*\ \ \ \ \ \ \ but\ the\ overhead\ is\ big\ for\ small\ amounts,\ which\ are\ usually\ stored\ via\ RTT.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00116}00116\ \textcolor{comment}{*\ \ \ \ \ \ \ With\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP\ a\ simple\ byte\ loop\ can\ be\ used\ instead.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00117}00117\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00118}00118\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_MEMCPY()\ can\ be\ used\ to\ replace\ standard\ memcpy()\ in\ RTT\ functions.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00119}00119\ \textcolor{comment}{*\ \ \ \ \ \ \ This\ is\ may\ be\ required\ with\ memory\ access\ restrictions,}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00120}00120\ \textcolor{comment}{*\ \ \ \ \ \ \ such\ as\ on\ Cortex-\/A\ devices\ with\ MMU.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00121}00121\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00122}00122\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00123}00123\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MEMCPY\_USE\_BYTELOOP\ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ }\textcolor{comment}{//\ 0:\ Use\ memcpy/SEGGER\_RTT\_MEMCPY,\ 1:\ Use\ a\ simple\ byte-\/loop}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00124}00124\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00125}00125\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00126}00126\ \textcolor{comment}{//\ Example\ definition\ of\ SEGGER\_RTT\_MEMCPY\ to\ external\ memcpy\ with\ GCC\ toolchains\ and\ Cortex-\/A\ targets}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00127}00127\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00128}00128\ \textcolor{comment}{//\#if\ ((defined\ \_\_SES\_ARM)\ ||\ (defined\ \_\_CROSSWORKS\_ARM)\ ||\ (defined\ \_\_GNUC\_\_))\ \&\&\ (defined\ (\_\_ARM\_ARCH\_7A\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00129}00129\ \textcolor{comment}{//\ \ \#define\ SEGGER\_RTT\_MEMCPY(pDest,\ pSrc,\ NumBytes)\ \ \ \ \ \ SEGGER\_memcpy((pDest),\ (pSrc),\ (NumBytes))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00130}00130\ \textcolor{comment}{//\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00131}00131\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00132}00132\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00133}00133\ \textcolor{comment}{//\ Target\ is\ not\ allowed\ to\ perform\ other\ RTT\ operations\ while\ string\ still\ has\ not\ been\ stored\ completely.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00134}00134\ \textcolor{comment}{//\ Otherwise\ we\ would\ probably\ end\ up\ with\ a\ mixed\ string\ in\ the\ buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00135}00135\ \textcolor{comment}{//\ If\ using\ \ RTT\ from\ within\ interrupts,\ multiple\ tasks\ or\ multi\ processors,\ define\ the\ SEGGER\_RTT\_LOCK()\ and\ SEGGER\_RTT\_UNLOCK()\ function\ here.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00136}00136\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00137}00137\ \textcolor{comment}{//\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY\ can\ be\ used\ in\ the\ sample\ lock\ routines\ on\ Cortex-\/M3/4.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00138}00138\ \textcolor{comment}{//\ Make\ sure\ to\ mask\ all\ interrupts\ which\ can\ send\ RTT\ data,\ i.e.\ generate\ SystemView\ events,\ or\ cause\ task\ switches.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00139}00139\ \textcolor{comment}{//\ When\ high-\/priority\ interrupts\ must\ not\ be\ masked\ while\ sending\ RTT\ data,\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY\ needs\ to\ be\ adjusted\ accordingly.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00140}00140\ \textcolor{comment}{//\ (Higher\ priority\ =\ lower\ priority\ number)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00141}00141\ \textcolor{comment}{//\ Default\ value\ for\ embOS:\ 128u}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00142}00142\ \textcolor{comment}{//\ Default\ configuration\ in\ FreeRTOS:\ configMAX\_SYSCALL\_INTERRUPT\_PRIORITY:\ (\ configLIBRARY\_MAX\_SYSCALL\_INTERRUPT\_PRIORITY\ <<\ (8\ -\/\ configPRIO\_BITS)\ )}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00143}00143\ \textcolor{comment}{//\ In\ case\ of\ doubt\ mask\ all\ interrupts:\ 1\ <<\ (8\ -\/\ BASEPRI\_PRIO\_BITS)\ i.e.\ 1\ <<\ 5\ when\ 3\ bits\ are\ implemented\ in\ NVIC}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00144}00144\ \textcolor{comment}{//\ or\ define\ SEGGER\_RTT\_LOCK()\ to\ completely\ disable\ interrupts.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00145}00145\ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00146}00146\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00147}00147\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY\ \ \ \ \ \ \ \ \ (0x20)\ \ \ }\textcolor{comment}{//\ Interrupt\ priority\ to\ lock\ on\ SEGGER\_RTT\_LOCK\ on\ Cortex-\/M3/4\ (Default:\ 0x20)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00148}00148\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00149}00149\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00150}00150\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00151}00151\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00152}00152\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ SEGGER\ Embedded\ Studio,}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00153}00153\ \textcolor{comment}{*\ \ \ \ \ \ \ Rowley\ CrossStudio\ and\ GCC}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00154}00154\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00155}00155\ \textcolor{preprocessor}{\#if\ ((defined(\_\_SES\_ARM)\ ||\ defined(\_\_SES\_RISCV)\ ||\ defined(\_\_CROSSWORKS\_ARM)\ ||\ defined(\_\_GNUC\_\_)\ ||\ defined(\_\_clang\_\_))\ \&\&\ !defined\ (\_\_CC\_ARM)\ \&\&\ !defined(WIN32))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00156}00156\ \textcolor{preprocessor}{\ \ \#if\ (defined(\_\_ARM\_ARCH\_6M\_\_)\ ||\ defined(\_\_ARM\_ARCH\_8M\_BASE\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00157}00157\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00158}00158\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00159}00159\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_asm\ volatile\ ("{}mrs\ \ \ \%0,\ primask\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00160}00160\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}movs\ \ r1,\ \#1\ \ \ \ \ \ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00161}00161\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}msr\ \ \ primask,\ r1\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00162}00162\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}=r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00163}00163\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00164}00164\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r1"{},\ "{}cc"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00165}00165\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00166}00166\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00167}00167\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_\_asm\ volatile\ ("{}msr\ \ \ primask,\ \%0\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00168}00168\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00169}00169\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00170}00170\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00171}00171\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00172}00172\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00173}00173\ \textcolor{preprocessor}{\ \ \#elif\ (defined(\_\_ARM\_ARCH\_7M\_\_)\ ||\ defined(\_\_ARM\_ARCH\_7EM\_\_)\ ||\ defined(\_\_ARM\_ARCH\_8M\_MAIN\_\_)\ ||\ defined(\_\_ARM\_ARCH\_8\_1M\_MAIN\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00174}00174\ \textcolor{preprocessor}{\ \ \ \ \#ifndef\ \ \ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00175}00175\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY\ \ \ (0x20)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00176}00176\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00177}00177\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00178}00178\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00179}00179\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_asm\ volatile\ ("{}mrs\ \ \ \%0,\ basepri\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00180}00180\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}mov\ \ \ r1,\ \%1\ \ \ \ \ \ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00181}00181\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}msr\ \ \ basepri,\ r1\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00182}00182\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}=r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00183}00183\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}i"{}(SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY)\ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00184}00184\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r1"{},\ "{}cc"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00185}00185\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00186}00186\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00187}00187\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_\_asm\ volatile\ ("{}msr\ \ \ basepri,\ \%0\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00188}00188\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00189}00189\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00190}00190\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00191}00191\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00192}00192\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00193}00193\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00194}00194\ \textcolor{preprocessor}{\ \ \#elif\ (defined(\_\_ARM\_ARCH\_7A\_\_)\ ||\ defined(\_\_ARM\_ARCH\_7R\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00195}00195\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00196}00196\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00197}00197\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_asm\ volatile\ ("{}mrs\ r1,\ CPSR\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00198}00198\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}mov\ \%0,\ r1\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00199}00199\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}orr\ r1,\ r1,\ \#0xC0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00200}00200\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}msr\ CPSR\_c,\ r1\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00201}00201\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}=r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00202}00202\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00203}00203\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r1"{},\ "{}cc"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00204}00204\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00205}00205\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00206}00206\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \_\_asm\ volatile\ ("{}mov\ r0,\ \%0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00207}00207\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}mrs\ r1,\ CPSR\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00208}00208\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}bic\ r1,\ r1,\ \#0xC0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00209}00209\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}and\ r0,\ r0,\ \#0xC0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00210}00210\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}orr\ r1,\ r1,\ r0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00211}00211\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}msr\ CPSR\_c,\ r1\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00212}00212\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00213}00213\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00214}00214\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r0"{},\ "{}r1"{},\ "{}cc"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00215}00215\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00216}00216\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00217}00217\ \textcolor{preprocessor}{\ \ \#elif\ defined(\_\_riscv)\ ||\ defined(\_\_riscv\_xlen)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00218}00218\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00219}00219\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00220}00220\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_asm\ volatile\ ("{}csrr\ \ \%0,\ mstatus\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00221}00221\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}csrci\ mstatus,\ 8\ \ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00222}00222\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}andi\ \ \%0,\ \%0,\ \ 8\ \ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00223}00223\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}=r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00224}00224\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00225}00225\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00226}00226\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00227}00227\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00228}00228\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \ \_\_asm\ volatile\ ("{}csrr\ \ a1,\ mstatus\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00229}00229\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}or\ \ \ \ \%0,\ \%0,\ a1\ \ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00230}00230\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}csrs\ \ mstatus,\ \%0\ \ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00231}00231\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00232}00232\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r"{}\ \ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00233}00233\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}a1"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00234}00234\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00235}00235\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00236}00236\ \textcolor{preprocessor}{\ \ \#else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00237}00237\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00238}00238\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00239}00239\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00240}00240\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00241}00241\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00242}00242\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00243}00243\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00244}00244\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ IAR\ EWARM}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00245}00245\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00246}00246\ \textcolor{preprocessor}{\#ifdef\ \_\_ICCARM\_\_}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00247}00247\ \textcolor{preprocessor}{\ \ \#if\ (defined\ (\_\_ARM6M\_\_)\ \ \ \ \ \ \ \ \ \ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM6M\_\_))\ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00248}00248\ \textcolor{preprocessor}{\ \ \ \ \ \ (defined\ (\_\_ARM8M\_BASELINE\_\_)\ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM8M\_BASELINE\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00249}00249\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00250}00250\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00251}00251\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ \_\_get\_PRIMASK();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00252}00252\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_set\_PRIMASK(1);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00253}00253\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00254}00254\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_\_set\_PRIMASK(\_SEGGER\_RTT\_\_LockState);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00255}00255\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00256}00256\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ (\_\_ARM7EM\_\_)\ \ \ \ \ \ \ \ \ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM7EM\_\_))\ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00257}00257\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ (defined\ (\_\_ARM7M\_\_)\ \ \ \ \ \ \ \ \ \ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM7M\_\_))\ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00258}00258\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ (defined\ (\_\_ARM8M\_MAINLINE\_\_)\ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM8M\_MAINLINE\_\_))\ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00259}00259\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ (defined\ (\_\_ARM8M\_MAINLINE\_\_)\ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM8M\_MAINLINE\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00260}00260\ \textcolor{preprocessor}{\ \ \ \ \#ifndef\ \ \ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00261}00261\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY\ \ \ (0x20)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00262}00262\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00263}00263\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00264}00264\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00265}00265\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ \_\_get\_BASEPRI();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00266}00266\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_set\_BASEPRI(SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00267}00267\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00268}00268\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_\_set\_BASEPRI(\_SEGGER\_RTT\_\_LockState);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00269}00269\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00270}00270\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ (\_\_ARM7A\_\_)\ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM7A\_\_))\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00271}00271\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ (defined\ (\_\_ARM7R\_\_)\ \&\&\ (\_\_CORE\_\_\ ==\ \_\_ARM7R\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00272}00272\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00273}00273\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00274}00274\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_asm\ volatile\ ("{}mrs\ r1,\ CPSR\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00275}00275\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}mov\ \%0,\ r1\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00276}00276\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}orr\ r1,\ r1,\ \#0xC0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00277}00277\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}msr\ CPSR\_c,\ r1\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00278}00278\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}=r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00279}00279\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00280}00280\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r1"{},\ "{}cc"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00281}00281\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00282}00282\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00283}00283\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \_\_asm\ volatile\ ("{}mov\ r0,\ \%0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00284}00284\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}mrs\ r1,\ CPSR\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00285}00285\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}bic\ r1,\ r1,\ \#0xC0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00286}00286\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}and\ r0,\ r0,\ \#0xC0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00287}00287\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}orr\ r1,\ r1,\ r0\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00288}00288\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}msr\ CPSR\_c,\ r1\ \(\backslash\)n\(\backslash\)t"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00289}00289\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00290}00290\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r"{}\ (\_SEGGER\_RTT\_\_LockState)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00291}00291\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ "{}r0"{},\ "{}r1"{},\ "{}cc"{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00292}00292\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00293}00293\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00294}00294\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00295}00295\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00296}00296\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00297}00297\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00298}00298\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00299}00299\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ IAR\ RX}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00300}00300\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00301}00301\ \textcolor{preprocessor}{\#ifdef\ \_\_ICCRX\_\_}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00302}00302\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00303}00303\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ long\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00304}00304\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ \_\_get\_interrupt\_state();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00305}00305\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_disable\_interrupt();}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00306}00306\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00307}00307\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_\_set\_interrupt\_state(\_SEGGER\_RTT\_\_LockState);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00308}00308\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00309}00309\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00310}00310\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00311}00311\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00312}00312\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00313}00313\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ IAR\ RL78}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00314}00314\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00315}00315\ \textcolor{preprocessor}{\#ifdef\ \_\_ICCRL78\_\_}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00316}00316\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00317}00317\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_istate\_t\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00318}00318\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ \_\_get\_interrupt\_state();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00319}00319\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_disable\_interrupt();}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00320}00320\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00321}00321\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_\_set\_interrupt\_state(\_SEGGER\_RTT\_\_LockState);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00322}00322\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00323}00323\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00324}00324\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00325}00325\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00326}00326\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00327}00327\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ KEIL\ ARM}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00328}00328\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00329}00329\ \textcolor{preprocessor}{\#ifdef\ \_\_CC\_ARM}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00330}00330\ \textcolor{preprocessor}{\ \ \#if\ (defined\ \_\_TARGET\_ARCH\_6S\_M)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00331}00331\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00332}00332\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00333}00333\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ register\ unsigned\ char\ \_SEGGER\_RTT\_\_PRIMASK\ \_\_asm(\ "{}primask"{});\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00334}00334\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ \_SEGGER\_RTT\_\_PRIMASK;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00335}00335\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_PRIMASK\ =\ 1u;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00336}00336\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_schedule\_barrier();}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00337}00337\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00338}00338\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_SEGGER\_RTT\_\_PRIMASK\ =\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00339}00339\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_schedule\_barrier();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00340}00340\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00341}00341\ \textcolor{preprocessor}{\ \ \#elif\ (defined(\_\_TARGET\_ARCH\_7\_M)\ ||\ defined(\_\_TARGET\_ARCH\_7E\_M))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00342}00342\ \textcolor{preprocessor}{\ \ \ \ \#ifndef\ \ \ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00343}00343\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY\ \ \ (0x20)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00344}00344\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00345}00345\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00346}00346\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00347}00347\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ register\ unsigned\ char\ BASEPRI\ \_\_asm(\ "{}basepri"{});\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00348}00348\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ BASEPRI;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00349}00349\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ BASEPRI\ =\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00350}00350\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_schedule\_barrier();}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00351}00351\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00352}00352\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ BASEPRI\ =\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00353}00353\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_schedule\_barrier();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00354}00354\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00355}00355\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00356}00356\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00357}00357\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00358}00358\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00359}00359\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00360}00360\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ TI\ ARM}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00361}00361\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00362}00362\ \textcolor{preprocessor}{\#ifdef\ \_\_TI\_ARM\_\_}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00363}00363\ \textcolor{preprocessor}{\ \ \#if\ defined\ (\_\_TI\_ARM\_V6M0\_\_)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00364}00364\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00365}00365\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00366}00366\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ \_\_get\_PRIMASK();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00367}00367\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_set\_PRIMASK(1);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00368}00368\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00369}00369\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_\_set\_PRIMASK(\_SEGGER\_RTT\_\_LockState);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00370}00370\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00371}00371\ \textcolor{preprocessor}{\ \ \#elif\ (defined\ (\_\_TI\_ARM\_V7M3\_\_)\ ||\ defined\ (\_\_TI\_ARM\_V7M4\_\_))}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00372}00372\ \textcolor{preprocessor}{\ \ \ \ \#ifndef\ \ \ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00373}00373\ \textcolor{preprocessor}{\ \ \ \ \ \ \#define\ SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY\ \ \ (0x20)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00374}00374\ \textcolor{preprocessor}{\ \ \ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00375}00375\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00376}00376\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ int\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00377}00377\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ \_set\_interrupt\_priority(SEGGER\_RTT\_MAX\_INTERRUPT\_PRIORITY);}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00378}00378\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00379}00379\ \textcolor{preprocessor}{\ \ \ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \_set\_interrupt\_priority(\_SEGGER\_RTT\_\_LockState);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00380}00380\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00381}00381\ \textcolor{preprocessor}{\ \ \#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00382}00382\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00383}00383\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00384}00384\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00385}00385\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00386}00386\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ CCRX}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00387}00387\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00388}00388\ \textcolor{preprocessor}{\#ifdef\ \_\_RX}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00389}00389\ \textcolor{preprocessor}{\ \ \#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00390}00390\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00391}00391\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ unsigned\ long\ \_SEGGER\_RTT\_\_LockState;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00392}00392\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_SEGGER\_RTT\_\_LockState\ =\ get\_psw()\ \&\ 0x010000;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00393}00393\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ clrpsw\_i();}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00394}00394\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00395}00395\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ set\_psw(get\_psw()\ |\ \_SEGGER\_RTT\_\_LockState);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00396}00396\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00397}00397\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00398}00398\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00399}00399\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00400}00400\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00401}00401\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ for\ embOS\ Simulation\ on\ Windows}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00402}00402\ \textcolor{comment}{*\ \ \ \ \ \ \ (Can\ also\ be\ used\ for\ generic\ RTT\ locking\ with\ embOS)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00403}00403\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00404}00404\ \textcolor{preprocessor}{\#if\ defined(WIN32)\ ||\ defined(SEGGER\_RTT\_LOCK\_EMBOS)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00405}00405\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00406}00406\ \textcolor{keywordtype}{void}\ OS\_SIM\_EnterCriticalSection(\textcolor{keywordtype}{void});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00407}00407\ \textcolor{keywordtype}{void}\ OS\_SIM\_LeaveCriticalSection(\textcolor{keywordtype}{void});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00408}00408\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00409}00409\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_LOCK()\ \ \ \ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00410}00410\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ OS\_SIM\_EnterCriticalSection();}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00411}00411\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00412}00412\ \textcolor{preprocessor}{\#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \ \ \ \ OS\_SIM\_LeaveCriticalSection();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00413}00413\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00414}00414\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00415}00415\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00416}00416\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00417}00417\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00418}00418\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ lock\ configuration\ fallback}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00419}00419\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00420}00420\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_LOCK}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00421}00421\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_LOCK()\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Lock\ RTT\ (nestable)\ \ \ (i.e.\ disable\ interrupts)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00422}00422\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00423}00423\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00424}00424\ \textcolor{preprocessor}{\#ifndef\ \ \ SEGGER\_RTT\_UNLOCK}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00425}00425\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_UNLOCK()\ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ Unlock\ RTT\ (nestable)\ (i.e.\ enable\ previous\ interrupt\ lock\ state)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00426}00426\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00427}00427\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00428}00428\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___conf_8h_source_l00429}00429\ \textcolor{comment}{/***************************\ End\ of\ file\ ****************************/}} + +\end{DoxyCode} diff --git a/Doc/latex/_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.tex b/Doc/latex/_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.tex new file mode 100644 index 0000000..8e606e9 --- /dev/null +++ b/Doc/latex/_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source.tex @@ -0,0 +1,400 @@ +\doxysection{SEGGER\+\_\+\+RTT\+\_\+\+Syscalls\+\_\+\+KEIL.\+c} +\hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source}{}\label{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT\_Syscalls\_KEIL.c@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT\_Syscalls\_KEIL.c}} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00001}00001\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00002}00002\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00003}00003\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ The\ Embedded\ Experts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00004}00004\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00005}00005\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00006}00006\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ (c)\ 1995\ -\/\ 2021\ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00007}00007\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00008}00008\ \textcolor{comment}{*\ \ \ \ \ \ \ www.segger.com\ \ \ \ \ Support:\ support@segger.com\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00009}00009\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00010}00010\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00011}00011\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00012}00012\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\ RTT\ *\ Real\ Time\ Transfer\ for\ embedded\ targets\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00013}00013\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00014}00014\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00015}00015\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00016}00016\ \textcolor{comment}{*\ All\ rights\ reserved.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00017}00017\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00018}00018\ \textcolor{comment}{*\ SEGGER\ strongly\ recommends\ to\ not\ make\ any\ changes\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00019}00019\ \textcolor{comment}{*\ to\ or\ modify\ the\ source\ code\ of\ this\ software\ in\ order\ to\ stay\ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00020}00020\ \textcolor{comment}{*\ compatible\ with\ the\ RTT\ protocol\ and\ J-\/Link.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00021}00021\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00022}00022\ \textcolor{comment}{*\ Redistribution\ and\ use\ in\ source\ and\ binary\ forms,\ with\ or\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00023}00023\ \textcolor{comment}{*\ without\ modification,\ are\ permitted\ provided\ that\ the\ following\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00024}00024\ \textcolor{comment}{*\ condition\ is\ met:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00025}00025\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00026}00026\ \textcolor{comment}{*\ o\ Redistributions\ of\ source\ code\ must\ retain\ the\ above\ copyright\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00027}00027\ \textcolor{comment}{*\ \ \ notice,\ this\ condition\ and\ the\ following\ disclaimer.\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00028}00028\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00029}00029\ \textcolor{comment}{*\ THIS\ SOFTWARE\ IS\ PROVIDED\ BY\ THE\ COPYRIGHT\ HOLDERS\ AND\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00030}00030\ \textcolor{comment}{*\ CONTRIBUTORS\ "{}AS\ IS"{}\ AND\ ANY\ EXPRESS\ OR\ IMPLIED\ WARRANTIES,\ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00031}00031\ \textcolor{comment}{*\ INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ THE\ IMPLIED\ WARRANTIES\ OF\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00032}00032\ \textcolor{comment}{*\ MERCHANTABILITY\ AND\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE\ ARE\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00033}00033\ \textcolor{comment}{*\ DISCLAIMED.\ IN\ NO\ EVENT\ SHALL\ SEGGER\ Microcontroller\ BE\ LIABLE\ FOR\ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00034}00034\ \textcolor{comment}{*\ ANY\ DIRECT,\ INDIRECT,\ INCIDENTAL,\ SPECIAL,\ EXEMPLARY,\ OR\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00035}00035\ \textcolor{comment}{*\ CONSEQUENTIAL\ DAMAGES\ (INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ PROCUREMENT\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00036}00036\ \textcolor{comment}{*\ OF\ SUBSTITUTE\ GOODS\ OR\ SERVICES;\ LOSS\ OF\ USE,\ DATA,\ OR\ PROFITS;\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00037}00037\ \textcolor{comment}{*\ OR\ BUSINESS\ INTERRUPTION)\ HOWEVER\ CAUSED\ AND\ ON\ ANY\ THEORY\ OF\ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00038}00038\ \textcolor{comment}{*\ LIABILITY,\ WHETHER\ IN\ CONTRACT,\ STRICT\ LIABILITY,\ OR\ TORT\ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00039}00039\ \textcolor{comment}{*\ (INCLUDING\ NEGLIGENCE\ OR\ OTHERWISE)\ ARISING\ IN\ ANY\ WAY\ OUT\ OF\ THE\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00040}00040\ \textcolor{comment}{*\ USE\ OF\ THIS\ SOFTWARE,\ EVEN\ IF\ ADVISED\ OF\ THE\ POSSIBILITY\ OF\ SUCH\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00041}00041\ \textcolor{comment}{*\ DAMAGE.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00042}00042\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00043}00043\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00044}00044\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00045}00045\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ version:\ 7.54\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00046}00046\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00047}00047\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00048}00048\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00049}00049\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/END-\/OF-\/HEADER-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00050}00050\ \textcolor{comment}{File\ \ \ \ :\ RTT\_Syscalls\_KEIL.c}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00051}00051\ \textcolor{comment}{Purpose\ :\ Retargeting\ module\ for\ KEIL\ MDK-\/CM3.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00052}00052\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ Low-\/level\ functions\ for\ using\ printf()\ via\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00053}00053\ \textcolor{comment}{Revision:\ \$Rev:\ 24316\ \$}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00054}00054\ \textcolor{comment}{Notes\ \ \ :\ (1)\ https://wiki.segger.com/Keil\_MDK-\/ARM\#RTT\_in\_uVision}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00055}00055\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00056}00056\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00057}00057\ \textcolor{preprocessor}{\#if\ (defined\ \_\_CC\_ARM)\ ||\ (defined\ \_\_ARMCC\_VERSION)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00058}00058\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00059}00059\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00060}00060\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00061}00061\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00062}00062\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00063}00063\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00064}00064\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00065}00065\ \textcolor{preprocessor}{\#include\ "{}SEGGER\_RTT.h"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00066}00066\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00067}00067\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00068}00068\ \textcolor{comment}{*\ \ \ \ \ \ \ \#pragmas}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00069}00069\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00070}00070\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00071}00071\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00072}00072\ \textcolor{preprocessor}{\#if\ \_\_ARMCC\_VERSION\ <\ 6000000}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00073}00073\ \textcolor{preprocessor}{\#pragma\ import(\_\_use\_no\_semihosting)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00074}00074\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00075}00075\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00076}00076\ \textcolor{preprocessor}{\#ifdef\ \_MICROLIB}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00077}00077\ \textcolor{preprocessor}{\ \ \#pragma\ import(\_\_use\_full\_stdio)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00078}00078\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00079}00079\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00080}00080\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00081}00081\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00082}00082\ \textcolor{comment}{*\ \ \ \ \ \ \ Defines\ non-\/configurable}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00083}00083\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00084}00084\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00085}00085\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00086}00086\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00087}00087\ \textcolor{comment}{/*\ Standard\ IO\ device\ handles\ -\/\ arbitrary,\ but\ any\ real\ file\ system\ handles\ must\ be}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00088}00088\ \textcolor{comment}{\ \ \ less\ than\ 0x8000.\ */}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00089}00089\ \textcolor{preprocessor}{\#define\ STDIN\ \ \ \ \ \ \ \ \ \ \ \ \ 0x8001\ \ \ \ }\textcolor{comment}{//\ Standard\ Input\ Stream}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00090}00090\ \textcolor{preprocessor}{\#define\ STDOUT\ \ \ \ \ \ \ \ \ \ \ \ 0x8002\ \ \ \ }\textcolor{comment}{//\ Standard\ Output\ Stream}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00091}00091\ \textcolor{preprocessor}{\#define\ STDERR\ \ \ \ \ \ \ \ \ \ \ \ 0x8003\ \ \ \ }\textcolor{comment}{//\ Standard\ Error\ Stream}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00092}00092\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00093}00093\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00094}00094\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00095}00095\ \textcolor{comment}{*\ \ \ \ \ \ \ Public\ const}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00096}00096\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00097}00097\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00098}00098\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00099}00099\ \textcolor{preprocessor}{\#if\ \_\_ARMCC\_VERSION\ <\ 5000000}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00100}00100\ \textcolor{comment}{//const\ char\ \_\_stdin\_name[]\ \ =\ "{}STDIN"{};}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00101}00101\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ \_\_stdout\_name[]\ =\ \textcolor{stringliteral}{"{}STDOUT"{}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00102}00102\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ \_\_stderr\_name[]\ =\ \textcolor{stringliteral}{"{}STDERR"{}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00103}00103\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00104}00104\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00105}00105\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00106}00106\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00107}00107\ \textcolor{comment}{*\ \ \ \ \ \ \ Public\ code}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00108}00108\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00109}00109\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00110}00110\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00111}00111\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00112}00112\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00113}00113\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00114}00114\ \textcolor{comment}{*\ \ \ \ \ \ \ \_ttywrch}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00115}00115\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00116}00116\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00117}00117\ \textcolor{comment}{*\ \ \ \ Outputs\ a\ character\ to\ the\ console}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00118}00118\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00119}00119\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00120}00120\ \textcolor{comment}{*\ \ \ \ c\ \ \ \ -\/\ character\ to\ output}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00121}00121\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00122}00122\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00123}00123\ \textcolor{keywordtype}{void}\ \_ttywrch(\textcolor{keywordtype}{int}\ c)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00124}00124\ \ \ fputc(c,\ stdout);\ \textcolor{comment}{//\ stdout}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00125}00125\ \ \ fflush(stdout);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00126}00126\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00127}00127\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00128}00128\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00129}00129\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00130}00130\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00131}00131\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00132}00132\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00133}00133\ \textcolor{comment}{*\ \ \ \ Opens\ the\ device/file\ in\ order\ to\ do\ read/write\ operations}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00134}00134\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00135}00135\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00136}00136\ \textcolor{comment}{*\ \ \ \ sName\ \ \ \ \ \ \ \ -\/\ sName\ of\ the\ device/file\ to\ open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00137}00137\ \textcolor{comment}{*\ \ \ \ OpenMode\ \ \ \ -\/\ This\ parameter\ is\ currently\ ignored}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00138}00138\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00139}00139\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00140}00140\ \textcolor{comment}{*\ \ \ \ !=\ 0\ \ \ \ \ -\/\ Handle\ to\ the\ object\ to\ open,\ otherwise\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00141}00141\ \textcolor{comment}{*\ \ \ \ ==\ 0\ \ \ \ \ -\/"{}device"{}\ is\ not\ handled\ by\ this\ module}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00142}00142\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00143}00143\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00144}00144\ FILEHANDLE\ \_sys\_open(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *\ sName,\ \textcolor{keywordtype}{int}\ OpenMode)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00145}00145\ \ \ (void)OpenMode;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00146}00146\ \ \ \textcolor{comment}{//\ Register\ standard\ Input\ Output\ devices.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00147}00147\ \ \ \textcolor{keywordflow}{if}\ (strcmp(sName,\ \_\_stdout\_name)\ ==\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00148}00148\ \ \ \ \ \textcolor{keywordflow}{return}\ (STDOUT);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00149}00149\ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (strcmp(sName,\ \_\_stderr\_name)\ ==\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00150}00150\ \ \ \ \ \textcolor{keywordflow}{return}\ (STDERR);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00151}00151\ \ \ \}\ \textcolor{keywordflow}{else}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00152}00152\ \ \ \textcolor{keywordflow}{return}\ (0);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00153}00153\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00154}00154\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00155}00155\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00156}00156\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00157}00157\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_close}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00158}00158\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00159}00159\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00160}00160\ \textcolor{comment}{*\ \ \ \ Closes\ the\ handle\ to\ the\ open\ device/file}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00161}00161\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00162}00162\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00163}00163\ \textcolor{comment}{*\ \ \ \ hFile\ \ \ \ -\/\ Handle\ to\ a\ file\ opened\ via\ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00164}00164\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00165}00165\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00166}00166\ \textcolor{comment}{*\ \ \ \ 0\ \ \ \ \ -\/\ device/file\ closed}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00167}00167\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00168}00168\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00169}00169\ \textcolor{keywordtype}{int}\ \_sys\_close(FILEHANDLE\ hFile)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00170}00170\ \ \ (void)hFile;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00171}00171\ \ \ \textcolor{keywordflow}{return}\ 0;\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00172}00172\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00173}00173\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00174}00174\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00175}00175\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00176}00176\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_write}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00177}00177\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00178}00178\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00179}00179\ \textcolor{comment}{*\ \ \ \ Writes\ the\ data\ to\ an\ open\ handle.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00180}00180\ \textcolor{comment}{*\ \ \ \ Currently\ this\ function\ only\ outputs\ data\ to\ the\ console}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00181}00181\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00182}00182\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00183}00183\ \textcolor{comment}{*\ \ \ \ hFile\ \ \ \ -\/\ Handle\ to\ a\ file\ opened\ via\ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00184}00184\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ -\/\ Pointer\ to\ the\ data\ that\ shall\ be\ written}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00185}00185\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ \ -\/\ Number\ of\ bytes\ to\ write}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00186}00186\ \textcolor{comment}{*\ \ \ \ Mode\ \ \ \ \ -\/\ The\ Mode\ that\ shall\ be\ used}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00187}00187\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00188}00188\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00189}00189\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ *not*\ written\ to\ the\ file/device}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00190}00190\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00191}00191\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00192}00192\ \textcolor{keywordtype}{int}\ \_sys\_write(FILEHANDLE\ hFile,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ *\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes,\ \textcolor{keywordtype}{int}\ Mode)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00193}00193\ \ \ \textcolor{keywordtype}{int}\ r\ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00194}00194\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00195}00195\ \ \ (void)Mode;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00196}00196\ \ \ \textcolor{keywordflow}{if}\ (hFile\ ==\ STDOUT)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00197}00197\ \ \ \ \ SEGGER\_RTT\_Write(0,\ (\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*)pBuffer,\ NumBytes);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00198}00198\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00199}00199\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00200}00200\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00201}00201\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00202}00202\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00203}00203\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00204}00204\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00205}00205\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_read}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00206}00206\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00207}00207\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00208}00208\ \textcolor{comment}{*\ \ \ \ Reads\ data\ from\ an\ open\ handle.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00209}00209\ \textcolor{comment}{*\ \ \ \ Currently\ this\ modules\ does\ nothing.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00210}00210\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00211}00211\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00212}00212\ \textcolor{comment}{*\ \ \ \ hFile\ \ \ \ -\/\ Handle\ to\ a\ file\ opened\ via\ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00213}00213\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ -\/\ Pointer\ to\ buffer\ to\ store\ the\ read\ data}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00214}00214\ \textcolor{comment}{*\ \ \ \ NumBytes\ \ \ \ \ \ -\/\ Number\ of\ bytes\ to\ read}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00215}00215\ \textcolor{comment}{*\ \ \ \ Mode\ \ \ \ \ -\/\ The\ Mode\ that\ shall\ be\ used}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00216}00216\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00217}00217\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00218}00218\ \textcolor{comment}{*\ \ \ \ Number\ of\ bytes\ read\ from\ the\ file/device}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00219}00219\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00220}00220\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00221}00221\ \textcolor{keywordtype}{int}\ \_sys\_read(FILEHANDLE\ hFile,\ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{char}\ *\ pBuffer,\ \textcolor{keywordtype}{unsigned}\ NumBytes,\ \textcolor{keywordtype}{int}\ Mode)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00222}00222\ \ \ (void)hFile;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00223}00223\ \ \ (void)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00224}00224\ \ \ (void)NumBytes;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00225}00225\ \ \ (void)Mode;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00226}00226\ \ \ \textcolor{keywordflow}{return}\ (0);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00227}00227\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00228}00228\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00229}00229\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00230}00230\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00231}00231\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_istty}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00232}00232\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00233}00233\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00234}00234\ \textcolor{comment}{*\ \ \ \ This\ function\ shall\ return\ whether\ the\ opened\ file\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00235}00235\ \textcolor{comment}{*\ \ \ \ is\ a\ console\ device\ or\ not.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00236}00236\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00237}00237\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00238}00238\ \textcolor{comment}{*\ \ \ \ hFile\ \ \ \ -\/\ Handle\ to\ a\ file\ opened\ via\ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00239}00239\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00240}00240\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00241}00241\ \textcolor{comment}{*\ \ \ \ 1\ \ \ \ \ \ \ -\/\ Device\ is\ \ \ \ \ a\ console}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00242}00242\ \textcolor{comment}{*\ \ \ \ 0\ \ \ \ \ \ \ -\/\ Device\ is\ not\ a\ console}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00243}00243\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00244}00244\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00245}00245\ \textcolor{keywordtype}{int}\ \_sys\_istty(FILEHANDLE\ hFile)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00246}00246\ \ \ \textcolor{keywordflow}{if}\ (hFile\ >\ 0x8000)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00247}00247\ \ \ \ \ \textcolor{keywordflow}{return}\ (1);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00248}00248\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00249}00249\ \ \ \textcolor{keywordflow}{return}\ (0);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00250}00250\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00251}00251\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00252}00252\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00253}00253\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00254}00254\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_seek}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00255}00255\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00256}00256\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00257}00257\ \textcolor{comment}{*\ \ \ \ Seeks\ via\ the\ file\ to\ a\ specific\ position}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00258}00258\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00259}00259\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00260}00260\ \textcolor{comment}{*\ \ \ \ hFile\ \ -\/\ Handle\ to\ a\ file\ opened\ via\ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00261}00261\ \textcolor{comment}{*\ \ \ \ Pos\ \ \ \ -\/\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00262}00262\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00263}00263\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00264}00264\ \textcolor{comment}{*\ \ \ \ int\ \ \ \ \ \ \ -\/\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00265}00265\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00266}00266\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00267}00267\ \textcolor{keywordtype}{int}\ \_sys\_seek(FILEHANDLE\ hFile,\ \textcolor{keywordtype}{long}\ Pos)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00268}00268\ \ \ (void)hFile;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00269}00269\ \ \ (void)Pos;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00270}00270\ \ \ \textcolor{keywordflow}{return}\ (0);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00271}00271\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00272}00272\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00273}00273\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00274}00274\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00275}00275\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_ensure}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00276}00276\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00277}00277\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00278}00278\ \textcolor{comment}{*\ \ \ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00279}00279\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00280}00280\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00281}00281\ \textcolor{comment}{*\ \ \ \ hFile\ \ \ \ -\/\ Handle\ to\ a\ file\ opened\ via\ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00282}00282\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00283}00283\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00284}00284\ \textcolor{comment}{*\ \ \ \ int\ \ \ \ \ \ \ -\/\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00285}00285\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00286}00286\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00287}00287\ \textcolor{keywordtype}{int}\ \_sys\_ensure(FILEHANDLE\ hFile)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00288}00288\ \ \ (void)hFile;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00289}00289\ \ \ \textcolor{keywordflow}{return}\ (-\/1);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00290}00290\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00291}00291\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00292}00292\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00293}00293\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00294}00294\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_flen}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00295}00295\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00296}00296\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00297}00297\ \textcolor{comment}{*\ \ \ \ Returns\ the\ length\ of\ the\ opened\ file\ handle}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00298}00298\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00299}00299\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00300}00300\ \textcolor{comment}{*\ \ \ \ hFile\ \ \ \ -\/\ Handle\ to\ a\ file\ opened\ via\ \_sys\_open}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00301}00301\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00302}00302\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00303}00303\ \textcolor{comment}{*\ \ \ \ Length\ of\ the\ file}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00304}00304\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00305}00305\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00306}00306\ \textcolor{keywordtype}{long}\ \_sys\_flen(FILEHANDLE\ hFile)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00307}00307\ \ \ (void)hFile;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00308}00308\ \ \ \textcolor{keywordflow}{return}\ (0);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00309}00309\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00310}00310\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00311}00311\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00312}00312\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00313}00313\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_tmpnam}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00314}00314\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00315}00315\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00316}00316\ \textcolor{comment}{*\ \ \ \ This\ function\ converts\ the\ file\ number\ fileno\ for\ a\ temporary\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00317}00317\ \textcolor{comment}{*\ \ \ \ file\ to\ a\ unique\ filename,\ for\ example,\ tmp0001.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00318}00318\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00319}00319\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00320}00320\ \textcolor{comment}{*\ \ \ \ pBuffer\ \ \ \ -\/\ Pointer\ to\ a\ buffer\ to\ store\ the\ name}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00321}00321\ \textcolor{comment}{*\ \ \ \ FileNum\ \ \ \ -\/\ file\ number\ to\ convert}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00322}00322\ \textcolor{comment}{*\ \ \ \ MaxLen\ \ \ \ \ -\/\ Size\ of\ the\ buffer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00323}00323\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00324}00324\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00325}00325\ \textcolor{comment}{*\ \ \ \ \ 1\ -\/\ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00326}00326\ \textcolor{comment}{*\ \ \ \ \ 0\ -\/\ Success\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00327}00327\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00328}00328\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00329}00329\ \textcolor{keywordtype}{int}\ \_sys\_tmpnam2(\textcolor{keywordtype}{char}\ *\ pBuffer,\ \textcolor{keywordtype}{int}\ FileNum,\ \textcolor{keywordtype}{unsigned}\ MaxLen)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00330}00330\ \ \ (void)pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00331}00331\ \ \ (void)FileNum;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00332}00332\ \ \ (void)MaxLen;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00333}00333\ \ \ \textcolor{keywordflow}{return}\ (1);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00334}00334\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00335}00335\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00336}00336\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00337}00337\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00338}00338\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_command\_string}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00339}00339\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00340}00340\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00341}00341\ \textcolor{comment}{*\ \ \ \ This\ function\ shall\ execute\ a\ system\ command.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00342}00342\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00343}00343\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00344}00344\ \textcolor{comment}{*\ \ \ \ cmd\ \ \ \ -\/\ Pointer\ to\ the\ command\ string}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00345}00345\ \textcolor{comment}{*\ \ \ \ len\ \ \ \ -\/\ Length\ of\ the\ string}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00346}00346\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00347}00347\ \textcolor{comment}{*\ \ Return\ value:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00348}00348\ \textcolor{comment}{*\ \ \ \ ==\ NULL\ -\/\ Command\ was\ not\ successfully\ executed}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00349}00349\ \textcolor{comment}{*\ \ \ \ ==\ sCmd\ -\/\ Command\ was\ passed\ successfully}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00350}00350\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00351}00351\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00352}00352\ \textcolor{keywordtype}{char}\ *\ \_sys\_command\_string(\textcolor{keywordtype}{char}\ *\ cmd,\ \textcolor{keywordtype}{int}\ len)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00353}00353\ \ \ (void)len;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00354}00354\ \ \ \textcolor{keywordflow}{return}\ cmd;\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00355}00355\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00356}00356\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00357}00357\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00358}00358\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00359}00359\ \textcolor{comment}{*\ \ \ \ \ \ \ \_sys\_exit}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00360}00360\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00361}00361\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00362}00362\ \textcolor{comment}{*\ \ \ \ This\ function\ is\ called\ when\ the\ application\ returns\ from\ main}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00363}00363\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00364}00364\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00365}00365\ \textcolor{comment}{*\ \ \ \ ReturnCode\ \ \ \ -\/\ Return\ code\ from\ the\ main\ function}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00366}00366\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00367}00367\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00368}00368\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00369}00369\ \textcolor{keywordtype}{void}\ \_sys\_exit(\textcolor{keywordtype}{int}\ ReturnCode)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00370}00370\ \ \ (void)ReturnCode;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00371}00371\ \ \ \textcolor{keywordflow}{while}\ (1);\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00372}00372\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00373}00373\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00374}00374\ \textcolor{preprocessor}{\#if\ \_\_ARMCC\_VERSION\ >=\ 5000000}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00375}00375\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00376}00376\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00377}00377\ \textcolor{comment}{*\ \ \ \ \ \ \ stdout\_putchar}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00378}00378\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00379}00379\ \textcolor{comment}{*\ \ Function\ description:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00380}00380\ \textcolor{comment}{*\ \ \ \ Put\ a\ character\ to\ the\ stdout}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00381}00381\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00382}00382\ \textcolor{comment}{*\ \ Parameters:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00383}00383\ \textcolor{comment}{*\ \ \ \ ch\ \ \ \ -\/\ Character\ to\ output}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00384}00384\ \textcolor{comment}{*\ \ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00385}00385\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00386}00386\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00387}00387\ \textcolor{keywordtype}{int}\ stdout\_putchar(\textcolor{keywordtype}{int}\ ch)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00388}00388\ \ \ (void)ch;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00389}00389\ \ \ \textcolor{keywordflow}{return}\ ch;\ \ \textcolor{comment}{//\ Not\ implemented}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00390}00390\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00391}00391\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00392}00392\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00393}00393\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source_l00394}00394\ \textcolor{comment}{/***************************\ End\ of\ file\ ****************************/}} + +\end{DoxyCode} diff --git a/Doc/latex/_s_e_g_g_e_r___r_t_t__printf_8c_source.tex b/Doc/latex/_s_e_g_g_e_r___r_t_t__printf_8c_source.tex new file mode 100644 index 0000000..e39dd74 --- /dev/null +++ b/Doc/latex/_s_e_g_g_e_r___r_t_t__printf_8c_source.tex @@ -0,0 +1,514 @@ +\doxysection{SEGGER\+\_\+\+RTT\+\_\+printf.\+c} +\hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source}{}\label{_s_e_g_g_e_r___r_t_t__printf_8c_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT\_printf.c@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/RTT/SEGGER\_RTT\_printf.c}} + +\begin{DoxyCode}{0} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00001}00001\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00002}00002\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00003}00003\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ The\ Embedded\ Experts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00004}00004\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00005}00005\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00006}00006\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ (c)\ 1995\ -\/\ 2021\ SEGGER\ Microcontroller\ GmbH\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00007}00007\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00008}00008\ \textcolor{comment}{*\ \ \ \ \ \ \ www.segger.com\ \ \ \ \ Support:\ support@segger.com\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00009}00009\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00010}00010\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00011}00011\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00012}00012\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\ RTT\ *\ Real\ Time\ Transfer\ for\ embedded\ targets\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00013}00013\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00014}00014\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00015}00015\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00016}00016\ \textcolor{comment}{*\ All\ rights\ reserved.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00017}00017\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00018}00018\ \textcolor{comment}{*\ SEGGER\ strongly\ recommends\ to\ not\ make\ any\ changes\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00019}00019\ \textcolor{comment}{*\ to\ or\ modify\ the\ source\ code\ of\ this\ software\ in\ order\ to\ stay\ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00020}00020\ \textcolor{comment}{*\ compatible\ with\ the\ RTT\ protocol\ and\ J-\/Link.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00021}00021\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00022}00022\ \textcolor{comment}{*\ Redistribution\ and\ use\ in\ source\ and\ binary\ forms,\ with\ or\ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00023}00023\ \textcolor{comment}{*\ without\ modification,\ are\ permitted\ provided\ that\ the\ following\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00024}00024\ \textcolor{comment}{*\ condition\ is\ met:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00025}00025\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00026}00026\ \textcolor{comment}{*\ o\ Redistributions\ of\ source\ code\ must\ retain\ the\ above\ copyright\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00027}00027\ \textcolor{comment}{*\ \ \ notice,\ this\ condition\ and\ the\ following\ disclaimer.\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00028}00028\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00029}00029\ \textcolor{comment}{*\ THIS\ SOFTWARE\ IS\ PROVIDED\ BY\ THE\ COPYRIGHT\ HOLDERS\ AND\ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00030}00030\ \textcolor{comment}{*\ CONTRIBUTORS\ "{}AS\ IS"{}\ AND\ ANY\ EXPRESS\ OR\ IMPLIED\ WARRANTIES,\ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00031}00031\ \textcolor{comment}{*\ INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ THE\ IMPLIED\ WARRANTIES\ OF\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00032}00032\ \textcolor{comment}{*\ MERCHANTABILITY\ AND\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE\ ARE\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00033}00033\ \textcolor{comment}{*\ DISCLAIMED.\ IN\ NO\ EVENT\ SHALL\ SEGGER\ Microcontroller\ BE\ LIABLE\ FOR\ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00034}00034\ \textcolor{comment}{*\ ANY\ DIRECT,\ INDIRECT,\ INCIDENTAL,\ SPECIAL,\ EXEMPLARY,\ OR\ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00035}00035\ \textcolor{comment}{*\ CONSEQUENTIAL\ DAMAGES\ (INCLUDING,\ BUT\ NOT\ LIMITED\ TO,\ PROCUREMENT\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00036}00036\ \textcolor{comment}{*\ OF\ SUBSTITUTE\ GOODS\ OR\ SERVICES;\ LOSS\ OF\ USE,\ DATA,\ OR\ PROFITS;\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00037}00037\ \textcolor{comment}{*\ OR\ BUSINESS\ INTERRUPTION)\ HOWEVER\ CAUSED\ AND\ ON\ ANY\ THEORY\ OF\ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00038}00038\ \textcolor{comment}{*\ LIABILITY,\ WHETHER\ IN\ CONTRACT,\ STRICT\ LIABILITY,\ OR\ TORT\ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00039}00039\ \textcolor{comment}{*\ (INCLUDING\ NEGLIGENCE\ OR\ OTHERWISE)\ ARISING\ IN\ ANY\ WAY\ OUT\ OF\ THE\ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00040}00040\ \textcolor{comment}{*\ USE\ OF\ THIS\ SOFTWARE,\ EVEN\ IF\ ADVISED\ OF\ THE\ POSSIBILITY\ OF\ SUCH\ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00041}00041\ \textcolor{comment}{*\ DAMAGE.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00042}00042\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00043}00043\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00044}00044\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00045}00045\ \textcolor{comment}{*\ \ \ \ \ \ \ RTT\ version:\ 8.10g\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00046}00046\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00047}00047\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00048}00048\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00049}00049\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/END-\/OF-\/HEADER-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00050}00050\ \textcolor{comment}{File\ \ \ \ :\ SEGGER\_RTT\_printf.c}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00051}00051\ \textcolor{comment}{Purpose\ :\ Replacement\ for\ printf\ to\ write\ formatted\ data\ via\ RTT}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00052}00052\ \textcolor{comment}{Revision:\ \$Rev:\ 17697\ \$}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00053}00053\ \textcolor{comment}{-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00054}00054\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00055}00055\ \textcolor{preprocessor}{\#include\ "{}SEGGER\_RTT.h"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00056}00056\ \textcolor{preprocessor}{\#include\ "{}SEGGER\_RTT\_Conf.h"{}}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00057}00057\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00058}00058\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00059}00059\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00060}00060\ \textcolor{comment}{*\ \ \ \ \ \ \ Defines,\ configurable}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00061}00061\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00062}00062\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00063}00063\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00064}00064\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00065}00065\ \textcolor{preprocessor}{\#ifndef\ SEGGER\_RTT\_PRINTF\_BUFFER\_SIZE}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00066}00066\ \textcolor{preprocessor}{\ \ \#define\ SEGGER\_RTT\_PRINTF\_BUFFER\_SIZE\ (64)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00067}00067\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00068}00068\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00069}00069\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00070}00070\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00071}00071\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00072}00072\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00073}00073\ \textcolor{preprocessor}{\#define\ FORMAT\_FLAG\_LEFT\_JUSTIFY\ \ \ (1u\ <<\ 0)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00074}00074\ \textcolor{preprocessor}{\#define\ FORMAT\_FLAG\_PAD\_ZERO\ \ \ \ \ \ \ (1u\ <<\ 1)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00075}00075\ \textcolor{preprocessor}{\#define\ FORMAT\_FLAG\_PRINT\_SIGN\ \ \ \ \ (1u\ <<\ 2)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00076}00076\ \textcolor{preprocessor}{\#define\ FORMAT\_FLAG\_ALTERNATE\ \ \ \ \ \ (1u\ <<\ 3)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00077}00077\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00078}00078\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00079}00079\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00080}00080\ \textcolor{comment}{*\ \ \ \ \ \ \ Types}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00081}00081\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00082}00082\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00083}00083\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00084}00084\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00085}\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{00085}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00086}00086\ \ \ \textcolor{keywordtype}{char}*\ \ \ \ \ pBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00087}00087\ \ \ \textcolor{keywordtype}{unsigned}\ \ BufferSize;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00088}00088\ \ \ \textcolor{keywordtype}{unsigned}\ \ Cnt;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00089}00089\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00090}00090\ \ \ \textcolor{keywordtype}{int}\ \ \ ReturnValue;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00091}00091\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00092}00092\ \ \ \textcolor{keywordtype}{unsigned}\ RTTBufferIndex;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00093}00093\ \}\ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{SEGGER\_RTT\_PRINTF\_DESC}};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00094}00094\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00095}00095\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00096}00096\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00097}00097\ \textcolor{comment}{*\ \ \ \ \ \ \ Function\ prototypes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00098}00098\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00099}00099\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00100}00100\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00101}00101\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00102}00102\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00103}00103\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00104}00104\ \textcolor{comment}{*\ \ \ \ \ \ \ Static\ code}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00105}00105\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00106}00106\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00107}00107\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00108}00108\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00109}00109\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00110}00110\ \textcolor{comment}{*\ \ \ \ \ \ \ \_StoreChar}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00111}00111\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00112}00112\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ \_StoreChar(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{SEGGER\_RTT\_PRINTF\_DESC}}\ *\ p,\ \textcolor{keywordtype}{char}\ c)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00113}00113\ \ \ \textcolor{keywordtype}{unsigned}\ Cnt;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00114}00114\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00115}00115\ \ \ Cnt\ =\ p-\/>Cnt;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00116}00116\ \ \ \textcolor{keywordflow}{if}\ ((Cnt\ +\ 1u)\ <=\ p-\/>BufferSize)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00117}00117\ \ \ \ \ *(p-\/>pBuffer\ +\ Cnt)\ =\ c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00118}00118\ \ \ \ \ p-\/>Cnt\ =\ Cnt\ +\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00119}00119\ \ \ \ \ p-\/>ReturnValue++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00120}00120\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00121}00121\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00122}00122\ \ \ \textcolor{comment}{//\ Write\ part\ of\ string,\ when\ the\ buffer\ is\ full}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00123}00123\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00124}00124\ \ \ \textcolor{keywordflow}{if}\ (p-\/>Cnt\ ==\ p-\/>BufferSize)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00125}00125\ \ \ \ \ \textcolor{keywordflow}{if}\ (SEGGER\_RTT\_Write(p-\/>RTTBufferIndex,\ p-\/>pBuffer,\ p-\/>Cnt)\ !=\ p-\/>Cnt)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00126}00126\ \ \ \ \ \ \ p-\/>ReturnValue\ =\ -\/1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00127}00127\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00128}00128\ \ \ \ \ \ \ p-\/>Cnt\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00129}00129\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00130}00130\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00131}00131\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00132}00132\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00133}00133\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00134}00134\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00135}00135\ \textcolor{comment}{*\ \ \ \ \ \ \ \_PrintUnsigned}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00136}00136\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00137}00137\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ \_PrintUnsigned(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{SEGGER\_RTT\_PRINTF\_DESC}}\ *\ pBufferDesc,\ \textcolor{keywordtype}{unsigned}\ v,\ \textcolor{keywordtype}{unsigned}\ Base,\ \textcolor{keywordtype}{unsigned}\ NumDigits,\ \textcolor{keywordtype}{unsigned}\ FieldWidth,\ \textcolor{keywordtype}{unsigned}\ FormatFlags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00138}00138\ \ \ \textcolor{keyword}{static}\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ \_aV2C[16]\ =\ \{\textcolor{charliteral}{'0'},\ \textcolor{charliteral}{'1'},\ \textcolor{charliteral}{'2'},\ \textcolor{charliteral}{'3'},\ \textcolor{charliteral}{'4'},\ \textcolor{charliteral}{'5'},\ \textcolor{charliteral}{'6'},\ \textcolor{charliteral}{'7'},\ \textcolor{charliteral}{'8'},\ \textcolor{charliteral}{'9'},\ \textcolor{charliteral}{'A'},\ \textcolor{charliteral}{'B'},\ \textcolor{charliteral}{'C'},\ \textcolor{charliteral}{'D'},\ \textcolor{charliteral}{'E'},\ \textcolor{charliteral}{'F'}\ \};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00139}00139\ \ \ \textcolor{keywordtype}{unsigned}\ Div;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00140}00140\ \ \ \textcolor{keywordtype}{unsigned}\ Digit;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00141}00141\ \ \ \textcolor{keywordtype}{unsigned}\ Number;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00142}00142\ \ \ \textcolor{keywordtype}{unsigned}\ Width;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00143}00143\ \ \ \textcolor{keywordtype}{char}\ c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00144}00144\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00145}00145\ \ \ Number\ =\ v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00146}00146\ \ \ Digit\ =\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00147}00147\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00148}00148\ \ \ \textcolor{comment}{//\ Get\ actual\ field\ width}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00149}00149\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00150}00150\ \ \ Width\ =\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00151}00151\ \ \ \textcolor{keywordflow}{while}\ (Number\ >=\ Base)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00152}00152\ \ \ \ \ Number\ =\ (Number\ /\ Base);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00153}00153\ \ \ \ \ Width++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00154}00154\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00155}00155\ \ \ \textcolor{keywordflow}{if}\ (NumDigits\ >\ Width)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00156}00156\ \ \ \ \ Width\ =\ NumDigits;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00157}00157\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00158}00158\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00159}00159\ \ \ \textcolor{comment}{//\ Print\ leading\ chars\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00160}00160\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00161}00161\ \ \ \textcolor{keywordflow}{if}\ ((FormatFlags\ \&\ FORMAT\_FLAG\_LEFT\_JUSTIFY)\ ==\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00162}00162\ \ \ \ \ \textcolor{keywordflow}{if}\ (FieldWidth\ !=\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00163}00163\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (((FormatFlags\ \&\ FORMAT\_FLAG\_PAD\_ZERO)\ ==\ FORMAT\_FLAG\_PAD\_ZERO)\ \&\&\ (NumDigits\ ==\ 0u))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00164}00164\ \ \ \ \ \ \ \ \ c\ =\ \textcolor{charliteral}{'0'};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00165}00165\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00166}00166\ \ \ \ \ \ \ \ \ c\ =\ \textcolor{charliteral}{'\ '};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00167}00167\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00168}00168\ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ ((FieldWidth\ !=\ 0u)\ \&\&\ (Width\ <\ FieldWidth))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00169}00169\ \ \ \ \ \ \ \ \ FieldWidth-\/-\/;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00170}00170\ \ \ \ \ \ \ \ \ \_StoreChar(pBufferDesc,\ c);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00171}00171\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ <\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00172}00172\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00173}00173\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00174}00174\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00175}00175\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00176}00176\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00177}00177\ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ >=\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00178}00178\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00179}00179\ \ \ \ \ \textcolor{comment}{//\ Compute\ Digit.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00180}00180\ \ \ \ \ \textcolor{comment}{//\ Loop\ until\ Digit\ has\ the\ value\ of\ the\ highest\ digit\ required.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00181}00181\ \ \ \ \ \textcolor{comment}{//\ Example:\ If\ the\ output\ is\ 345\ (Base\ 10),\ loop\ 2\ times\ until\ Digit\ is\ 100.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00182}00182\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00183}00183\ \ \ \ \ \textcolor{keywordflow}{while}\ (1)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00184}00184\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (NumDigits\ >\ 1u)\ \{\ \ \ \ \ \ \ \textcolor{comment}{//\ User\ specified\ a\ min\ number\ of\ digits\ to\ print?\ =>\ Make\ sure\ we\ loop\ at\ least\ that\ often,\ before\ checking\ anything\ else\ (>\ 1\ check\ avoids\ problems\ with\ NumDigits\ being\ signed\ /\ unsigned)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00185}00185\ \ \ \ \ \ \ \ \ NumDigits-\/-\/;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00186}00186\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00187}00187\ \ \ \ \ \ \ \ \ Div\ =\ v\ /\ Digit;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00188}00188\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (Div\ <\ Base)\ \{\ \ \ \ \ \ \ \ \textcolor{comment}{//\ Is\ our\ divider\ big\ enough\ to\ extract\ the\ highest\ digit\ from\ value?\ =>\ Done}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00189}00189\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00190}00190\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00191}00191\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00192}00192\ \ \ \ \ \ \ Digit\ *=\ Base;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00193}00193\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00194}00194\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00195}00195\ \ \ \ \ \textcolor{comment}{//\ Output\ digits}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00196}00196\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00197}00197\ \ \ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00198}00198\ \ \ \ \ \ \ Div\ =\ v\ /\ Digit;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00199}00199\ \ \ \ \ \ \ v\ -\/=\ Div\ *\ Digit;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00200}00200\ \ \ \ \ \ \ \_StoreChar(pBufferDesc,\ \_aV2C[Div]);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00201}00201\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ <\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00202}00202\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00203}00203\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00204}00204\ \ \ \ \ \ \ Digit\ /=\ Base;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00205}00205\ \ \ \ \ \}\ \textcolor{keywordflow}{while}\ (Digit);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00206}00206\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00207}00207\ \ \ \ \ \textcolor{comment}{//\ Print\ trailing\ spaces\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00208}00208\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00209}00209\ \ \ \ \ \textcolor{keywordflow}{if}\ ((FormatFlags\ \&\ FORMAT\_FLAG\_LEFT\_JUSTIFY)\ ==\ FORMAT\_FLAG\_LEFT\_JUSTIFY)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00210}00210\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (FieldWidth\ !=\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00211}00211\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ ((FieldWidth\ !=\ 0u)\ \&\&\ (Width\ <\ FieldWidth))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00212}00212\ \ \ \ \ \ \ \ \ \ \ FieldWidth-\/-\/;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00213}00213\ \ \ \ \ \ \ \ \ \ \ \_StoreChar(pBufferDesc,\ \textcolor{charliteral}{'\ '});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00214}00214\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ <\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00215}00215\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00216}00216\ \ \ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00217}00217\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00218}00218\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00219}00219\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00220}00220\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00221}00221\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00222}00222\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00223}00223\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00224}00224\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00225}00225\ \textcolor{comment}{*\ \ \ \ \ \ \ \_PrintInt}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00226}00226\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00227}00227\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ \_PrintInt(\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{SEGGER\_RTT\_PRINTF\_DESC}}\ *\ pBufferDesc,\ \textcolor{keywordtype}{int}\ v,\ \textcolor{keywordtype}{unsigned}\ Base,\ \textcolor{keywordtype}{unsigned}\ NumDigits,\ \textcolor{keywordtype}{unsigned}\ FieldWidth,\ \textcolor{keywordtype}{unsigned}\ FormatFlags)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00228}00228\ \ \ \textcolor{keywordtype}{unsigned}\ Width;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00229}00229\ \ \ \textcolor{keywordtype}{int}\ Number;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00230}00230\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00231}00231\ \ \ Number\ =\ (v\ <\ 0)\ ?\ -\/v\ :\ v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00232}00232\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00233}00233\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00234}00234\ \ \ \textcolor{comment}{//\ Get\ actual\ field\ width}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00235}00235\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00236}00236\ \ \ Width\ =\ 1u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00237}00237\ \ \ \textcolor{keywordflow}{while}\ (Number\ >=\ (\textcolor{keywordtype}{int})Base)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00238}00238\ \ \ \ \ Number\ =\ (Number\ /\ (int)Base);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00239}00239\ \ \ \ \ Width++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00240}00240\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00241}00241\ \ \ \textcolor{keywordflow}{if}\ (NumDigits\ >\ Width)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00242}00242\ \ \ \ \ Width\ =\ NumDigits;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00243}00243\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00244}00244\ \ \ \textcolor{keywordflow}{if}\ ((FieldWidth\ >\ 0u)\ \&\&\ ((v\ <\ 0)\ ||\ ((FormatFlags\ \&\ FORMAT\_FLAG\_PRINT\_SIGN)\ ==\ FORMAT\_FLAG\_PRINT\_SIGN)))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00245}00245\ \ \ \ \ FieldWidth-\/-\/;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00246}00246\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00247}00247\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00248}00248\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00249}00249\ \ \ \textcolor{comment}{//\ Print\ leading\ spaces\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00250}00250\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00251}00251\ \ \ \textcolor{keywordflow}{if}\ ((((FormatFlags\ \&\ FORMAT\_FLAG\_PAD\_ZERO)\ ==\ 0u)\ ||\ (NumDigits\ !=\ 0u))\ \&\&\ ((FormatFlags\ \&\ FORMAT\_FLAG\_LEFT\_JUSTIFY)\ ==\ 0u))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00252}00252\ \ \ \ \ \textcolor{keywordflow}{if}\ (FieldWidth\ !=\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00253}00253\ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ ((FieldWidth\ !=\ 0u)\ \&\&\ (Width\ <\ FieldWidth))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00254}00254\ \ \ \ \ \ \ \ \ FieldWidth-\/-\/;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00255}00255\ \ \ \ \ \ \ \ \ \_StoreChar(pBufferDesc,\ \textcolor{charliteral}{'\ '});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00256}00256\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ <\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00257}00257\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00258}00258\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00259}00259\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00260}00260\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00261}00261\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00262}00262\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00263}00263\ \ \ \textcolor{comment}{//\ Print\ sign\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00264}00264\ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00265}00265\ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ >=\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00266}00266\ \ \ \ \ \textcolor{keywordflow}{if}\ (v\ <\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00267}00267\ \ \ \ \ \ \ v\ =\ -\/v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00268}00268\ \ \ \ \ \ \ \_StoreChar(pBufferDesc,\ \textcolor{charliteral}{'-\/'});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00269}00269\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ ((FormatFlags\ \&\ FORMAT\_FLAG\_PRINT\_SIGN)\ ==\ FORMAT\_FLAG\_PRINT\_SIGN)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00270}00270\ \ \ \ \ \ \ \_StoreChar(pBufferDesc,\ \textcolor{charliteral}{'+'});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00271}00271\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00272}00272\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00273}00273\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00274}00274\ \ \ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ >=\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00275}00275\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00276}00276\ \ \ \ \ \ \ \textcolor{comment}{//\ Print\ leading\ zeros\ if\ necessary}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00277}00277\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00278}00278\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (((FormatFlags\ \&\ FORMAT\_FLAG\_PAD\_ZERO)\ ==\ FORMAT\_FLAG\_PAD\_ZERO)\ \&\&\ ((FormatFlags\ \&\ FORMAT\_FLAG\_LEFT\_JUSTIFY)\ ==\ 0u)\ \&\&\ (NumDigits\ ==\ 0u))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00279}00279\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (FieldWidth\ !=\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00280}00280\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ ((FieldWidth\ !=\ 0u)\ \&\&\ (Width\ <\ FieldWidth))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00281}00281\ \ \ \ \ \ \ \ \ \ \ \ \ FieldWidth-\/-\/;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00282}00282\ \ \ \ \ \ \ \ \ \ \ \ \ \_StoreChar(pBufferDesc,\ \textcolor{charliteral}{'0'});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00283}00283\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ <\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00284}00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00285}00285\ \ \ \ \ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00286}00286\ \ \ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00287}00287\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00288}00288\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00289}00289\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (pBufferDesc-\/>ReturnValue\ >=\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00290}00290\ \ \ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00291}00291\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Print\ number\ without\ sign}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00292}00292\ \ \ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00293}00293\ \ \ \ \ \ \ \ \ \_PrintUnsigned(pBufferDesc,\ (\textcolor{keywordtype}{unsigned})v,\ Base,\ NumDigits,\ FieldWidth,\ FormatFlags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00294}00294\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00295}00295\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00296}00296\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00297}00297\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00298}00298\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00299}00299\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00300}00300\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00301}00301\ \textcolor{comment}{*\ \ \ \ \ \ \ Public\ code}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00302}00302\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00303}00303\ \textcolor{comment}{**********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00304}00304\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00305}00305\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00306}00306\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00307}00307\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_vprintf}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00308}00308\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00309}00309\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00310}00310\ \textcolor{comment}{*\ \ \ \ Stores\ a\ formatted\ string\ in\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00311}00311\ \textcolor{comment}{*\ \ \ \ This\ data\ is\ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00312}00312\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00313}00313\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00314}00314\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used.\ (e.g.\ 0\ for\ "{}Terminal"{})}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00315}00315\ \textcolor{comment}{*\ \ \ \ sFormat\ \ \ \ \ \ Pointer\ to\ format\ string}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00316}00316\ \textcolor{comment}{*\ \ \ \ pParamList\ \ \ Pointer\ to\ the\ list\ of\ arguments\ for\ the\ format\ string}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00317}00317\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00318}00318\ \textcolor{comment}{*\ \ Return\ values}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00319}00319\ \textcolor{comment}{*\ \ \ \ >=\ 0:\ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00320}00320\ \textcolor{comment}{*\ \ \ \ \ <\ 0:\ \ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00321}00321\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00322}00322\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_vprintf(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *\ sFormat,\ va\_list\ *\ pParamList)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00323}00323\ \ \ \textcolor{keywordtype}{char}\ c;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00324}00324\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{SEGGER\_RTT\_PRINTF\_DESC}}\ BufferDesc;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00325}00325\ \ \ \textcolor{keywordtype}{int}\ v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00326}00326\ \ \ \textcolor{keywordtype}{unsigned}\ NumDigits;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00327}00327\ \ \ \textcolor{keywordtype}{unsigned}\ FormatFlags;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00328}00328\ \ \ \textcolor{keywordtype}{unsigned}\ FieldWidth;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00329}00329\ \ \ \textcolor{keywordtype}{char}\ acBuffer[SEGGER\_RTT\_PRINTF\_BUFFER\_SIZE];} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00330}00330\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00331}00331\ \ \ BufferDesc.pBuffer\ \ \ \ \ \ \ \ =\ acBuffer;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00332}00332\ \ \ BufferDesc.BufferSize\ \ \ \ \ =\ SEGGER\_RTT\_PRINTF\_BUFFER\_SIZE;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00333}00333\ \ \ BufferDesc.Cnt\ \ \ \ \ \ \ \ \ \ \ \ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00334}00334\ \ \ BufferDesc.RTTBufferIndex\ =\ BufferIndex;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00335}00335\ \ \ BufferDesc.ReturnValue\ \ \ \ =\ 0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00336}00336\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00337}00337\ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00338}00338\ \ \ \ \ c\ =\ *sFormat;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00339}00339\ \ \ \ \ sFormat++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00340}00340\ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ ==\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00341}00341\ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00342}00342\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00343}00343\ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ ==\ \textcolor{charliteral}{'\%'})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00344}00344\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00345}00345\ \ \ \ \ \ \ \textcolor{comment}{//\ Filter\ out\ flags}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00346}00346\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00347}00347\ \ \ \ \ \ \ FormatFlags\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00348}00348\ \ \ \ \ \ \ v\ =\ 1;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00349}00349\ \ \ \ \ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00350}00350\ \ \ \ \ \ \ \ \ c\ =\ *sFormat;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00351}00351\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{switch}\ (c)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00352}00352\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'-\/'}:\ FormatFlags\ |=\ FORMAT\_FLAG\_LEFT\_JUSTIFY;\ sFormat++;\ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00353}00353\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'0'}:\ FormatFlags\ |=\ FORMAT\_FLAG\_PAD\_ZERO;\ \ \ \ \ sFormat++;\ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00354}00354\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'+'}:\ FormatFlags\ |=\ FORMAT\_FLAG\_PRINT\_SIGN;\ \ \ sFormat++;\ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00355}00355\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'\#'}:\ FormatFlags\ |=\ FORMAT\_FLAG\_ALTERNATE;\ \ \ \ sFormat++;\ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00356}00356\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{default}:\ \ v\ =\ 0;\ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00357}00357\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00358}00358\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{while}\ (v);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00359}00359\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00360}00360\ \ \ \ \ \ \ \textcolor{comment}{//\ filter\ out\ field\ with}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00361}00361\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00362}00362\ \ \ \ \ \ \ FieldWidth\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00363}00363\ \ \ \ \ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00364}00364\ \ \ \ \ \ \ \ \ c\ =\ *sFormat;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00365}00365\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ ((c\ <\ \textcolor{charliteral}{'0'})\ ||\ (c\ >\ \textcolor{charliteral}{'9'}))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00366}00366\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00367}00367\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00368}00368\ \ \ \ \ \ \ \ \ sFormat++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00369}00369\ \ \ \ \ \ \ \ \ FieldWidth\ =\ (FieldWidth\ *\ 10u)\ +\ ((\textcolor{keywordtype}{unsigned})c\ -\/\ \textcolor{charliteral}{'0'});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00370}00370\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{while}\ (1);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00371}00371\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00372}00372\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00373}00373\ \ \ \ \ \ \ \textcolor{comment}{//\ Filter\ out\ precision\ (number\ of\ digits\ to\ display)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00374}00374\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00375}00375\ \ \ \ \ \ \ NumDigits\ =\ 0u;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00376}00376\ \ \ \ \ \ \ c\ =\ *sFormat;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00377}00377\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ ==\ \textcolor{charliteral}{'.'})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00378}00378\ \ \ \ \ \ \ \ \ sFormat++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00379}00379\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00380}00380\ \ \ \ \ \ \ \ \ \ \ c\ =\ *sFormat;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00381}00381\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ ((c\ <\ \textcolor{charliteral}{'0'})\ ||\ (c\ >\ \textcolor{charliteral}{'9'}))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00382}00382\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00383}00383\ \ \ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00384}00384\ \ \ \ \ \ \ \ \ \ \ sFormat++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00385}00385\ \ \ \ \ \ \ \ \ \ \ NumDigits\ =\ NumDigits\ *\ 10u\ +\ ((unsigned)c\ -\/\ \textcolor{charliteral}{'0'});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00386}00386\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{while}\ (1);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00387}00387\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00388}00388\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00389}00389\ \ \ \ \ \ \ \textcolor{comment}{//\ Filter\ out\ length\ modifier}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00390}00390\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00391}00391\ \ \ \ \ \ \ c\ =\ *sFormat;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00392}00392\ \ \ \ \ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00393}00393\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ ((c\ ==\ \textcolor{charliteral}{'l'})\ ||\ (c\ ==\ \textcolor{charliteral}{'h'}))\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00394}00394\ \ \ \ \ \ \ \ \ \ \ sFormat++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00395}00395\ \ \ \ \ \ \ \ \ \ \ c\ =\ *sFormat;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00396}00396\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00397}00397\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00398}00398\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00399}00399\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{while}\ (1);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00400}00400\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00401}00401\ \ \ \ \ \ \ \textcolor{comment}{//\ Handle\ specifiers}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00402}00402\ \ \ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00403}00403\ \ \ \ \ \ \ \textcolor{keywordflow}{switch}\ (c)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00404}00404\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'c'}:\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00405}00405\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{char}\ c0;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00406}00406\ \ \ \ \ \ \ \ \ v\ =\ va\_arg(*pParamList,\ \textcolor{keywordtype}{int});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00407}00407\ \ \ \ \ \ \ \ \ c0\ =\ (char)v;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00408}00408\ \ \ \ \ \ \ \ \ \_StoreChar(\&BufferDesc,\ c0);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00409}00409\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00410}00410\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00411}00411\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'d'}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00412}00412\ \ \ \ \ \ \ \ \ v\ =\ va\_arg(*pParamList,\ \textcolor{keywordtype}{int});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00413}00413\ \ \ \ \ \ \ \ \ \_PrintInt(\&BufferDesc,\ v,\ 10u,\ NumDigits,\ FieldWidth,\ FormatFlags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00414}00414\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00415}00415\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'u'}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00416}00416\ \ \ \ \ \ \ \ \ v\ =\ va\_arg(*pParamList,\ \textcolor{keywordtype}{int});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00417}00417\ \ \ \ \ \ \ \ \ \_PrintUnsigned(\&BufferDesc,\ (\textcolor{keywordtype}{unsigned})v,\ 10u,\ NumDigits,\ FieldWidth,\ FormatFlags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00418}00418\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00419}00419\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'x'}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00420}00420\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'X'}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00421}00421\ \ \ \ \ \ \ \ \ v\ =\ va\_arg(*pParamList,\ \textcolor{keywordtype}{int});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00422}00422\ \ \ \ \ \ \ \ \ \_PrintUnsigned(\&BufferDesc,\ (\textcolor{keywordtype}{unsigned})v,\ 16u,\ NumDigits,\ FieldWidth,\ FormatFlags);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00423}00423\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00424}00424\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'s'}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00425}00425\ \ \ \ \ \ \ \ \ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00426}00426\ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *\ s\ =\ va\_arg(*pParamList,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00427}00427\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (s\ ==\ NULL)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00428}00428\ \ \ \ \ \ \ \ \ \ \ \ \ s\ =\ \textcolor{stringliteral}{"{}(NULL)"{}};\ \ \textcolor{comment}{//\ Print\ (NULL)\ instead\ of\ crashing\ or\ breaking,\ as\ it\ is\ more\ informative\ to\ the\ user.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00429}00429\ \ \ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00430}00430\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{do}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00431}00431\ \ \ \ \ \ \ \ \ \ \ \ \ c\ =\ *s;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00432}00432\ \ \ \ \ \ \ \ \ \ \ \ \ s++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00433}00433\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ ==\ \textcolor{charliteral}{'\(\backslash\)0'})\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00434}00434\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00435}00435\ \ \ \ \ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00436}00436\ \ \ \ \ \ \ \ \ \ \ \ \_StoreChar(\&BufferDesc,\ c);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00437}00437\ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{while}\ (BufferDesc.ReturnValue\ >=\ 0);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00438}00438\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00439}00439\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00440}00440\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'p'}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00441}00441\ \ \ \ \ \ \ \ \ v\ =\ va\_arg(*pParamList,\ \textcolor{keywordtype}{int});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00442}00442\ \ \ \ \ \ \ \ \ \_PrintUnsigned(\&BufferDesc,\ (\textcolor{keywordtype}{unsigned})v,\ 16u,\ 8u,\ 8u,\ 0u);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00443}00443\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00444}00444\ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \textcolor{charliteral}{'\%'}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00445}00445\ \ \ \ \ \ \ \ \ \_StoreChar(\&BufferDesc,\ \textcolor{charliteral}{'\%'});} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00446}00446\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00447}00447\ \ \ \ \ \ \ \textcolor{keywordflow}{default}:} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00448}00448\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00449}00449\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00450}00450\ \ \ \ \ \ \ sFormat++;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00451}00451\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00452}00452\ \ \ \ \ \ \ \_StoreChar(\&BufferDesc,\ c);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00453}00453\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00454}00454\ \ \ \}\ \textcolor{keywordflow}{while}\ (BufferDesc.ReturnValue\ >=\ 0);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00455}00455\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00456}00456\ \ \ \textcolor{keywordflow}{if}\ (BufferDesc.ReturnValue\ >\ 0)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00457}00457\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00458}00458\ \ \ \ \ \textcolor{comment}{//\ Write\ remaining\ data,\ if\ any}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00459}00459\ \ \ \ \ \textcolor{comment}{//}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00460}00460\ \ \ \ \ \textcolor{keywordflow}{if}\ (BufferDesc.Cnt\ !=\ 0u)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00461}00461\ \ \ \ \ \ \ SEGGER\_RTT\_Write(BufferIndex,\ acBuffer,\ BufferDesc.Cnt);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00462}00462\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00463}00463\ \ \ \ \ BufferDesc.ReturnValue\ +=\ (int)BufferDesc.Cnt;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00464}00464\ \ \ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00465}00465\ \ \ \textcolor{keywordflow}{return}\ BufferDesc.ReturnValue;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00466}00466\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00467}00467\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00468}00468\ \textcolor{comment}{/*********************************************************************}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00469}00469\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00470}00470\ \textcolor{comment}{*\ \ \ \ \ \ \ SEGGER\_RTT\_printf}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00471}00471\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00472}00472\ \textcolor{comment}{*\ \ Function\ description}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00473}00473\ \textcolor{comment}{*\ \ \ \ Stores\ a\ formatted\ string\ in\ SEGGER\ RTT\ control\ block.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00474}00474\ \textcolor{comment}{*\ \ \ \ This\ data\ is\ read\ by\ the\ host.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00475}00475\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00476}00476\ \textcolor{comment}{*\ \ Parameters}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00477}00477\ \textcolor{comment}{*\ \ \ \ BufferIndex\ \ Index\ of\ "{}Up"{}-\/buffer\ to\ be\ used.\ (e.g.\ 0\ for\ "{}Terminal"{})}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00478}00478\ \textcolor{comment}{*\ \ \ \ sFormat\ \ \ \ \ \ Pointer\ to\ format\ string,\ followed\ by\ the\ arguments\ for\ conversion}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00479}00479\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00480}00480\ \textcolor{comment}{*\ \ Return\ values}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00481}00481\ \textcolor{comment}{*\ \ \ \ >=\ 0:\ \ Number\ of\ bytes\ which\ have\ been\ stored\ in\ the\ "{}Up"{}-\/buffer.}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00482}00482\ \textcolor{comment}{*\ \ \ \ \ <\ 0:\ \ Error}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00483}00483\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00484}00484\ \textcolor{comment}{*\ \ Notes}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00485}00485\ \textcolor{comment}{*\ \ \ \ (1)\ Conversion\ specifications\ have\ following\ syntax:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00486}00486\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ \%[flags][FieldWidth][.Precision]ConversionSpecifier}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00487}00487\ \textcolor{comment}{*\ \ \ \ (2)\ Supported\ flags:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00488}00488\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ -\/:\ Left\ justify\ within\ the\ field\ width}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00489}00489\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ +:\ Always\ print\ sign\ extension\ for\ signed\ conversions}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00490}00490\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ 0:\ Pad\ with\ 0\ instead\ of\ spaces.\ Ignored\ when\ using\ '-\/'-\/flag\ or\ precision}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00491}00491\ \textcolor{comment}{*\ \ \ \ \ \ \ \ Supported\ conversion\ specifiers:}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00492}00492\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ c:\ Print\ the\ argument\ as\ one\ char}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00493}00493\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ d:\ Print\ the\ argument\ as\ a\ signed\ integer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00494}00494\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ u:\ Print\ the\ argument\ as\ an\ unsigned\ integer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00495}00495\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ x:\ Print\ the\ argument\ as\ an\ hexadecimal\ integer}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00496}00496\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ s:\ Print\ the\ string\ pointed\ to\ by\ the\ argument}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00497}00497\ \textcolor{comment}{*\ \ \ \ \ \ \ \ \ \ p:\ Print\ the\ argument\ as\ an\ 8-\/digit\ hexadecimal\ integer.\ (Argument\ shall\ be\ a\ pointer\ to\ void.)}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00498}00498\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00499}00499\ \textcolor{keywordtype}{int}\ SEGGER\_RTT\_printf(\textcolor{keywordtype}{unsigned}\ BufferIndex,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *\ sFormat,\ ...)\ \{} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00500}00500\ \ \ \textcolor{keywordtype}{int}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00501}00501\ \ \ va\_list\ ParamList;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00502}00502\ } +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00503}00503\ \ \ va\_start(ParamList,\ sFormat);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00504}00504\ \ \ r\ =\ SEGGER\_RTT\_vprintf(BufferIndex,\ sFormat,\ \&ParamList);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00505}00505\ \ \ va\_end(ParamList);} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00506}00506\ \ \ \textcolor{keywordflow}{return}\ r;} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00507}00507\ \}} +\DoxyCodeLine{\Hypertarget{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00508}00508\ \textcolor{comment}{/***************************\ End\ of\ file\ ****************************/}} + +\end{DoxyCode} diff --git a/Doc/latex/annotated.tex b/Doc/latex/annotated.tex index 428a296..e25cf63 100644 --- a/Doc/latex/annotated.tex +++ b/Doc/latex/annotated.tex @@ -4,14 +4,12 @@ Here are the classes, structs, unions and interfaces with brief descriptions\+:\ \item\contentsline{section}{\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} \\*Структура канала измерения }{\pageref{struct_bench_time_channel__t}}{} \item\contentsline{section}{\mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} \\*Структура статистики измерений }{\pageref{struct_bench_time_stats__t}}{} \item\contentsline{section}{\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \\*Структура эволюционного оптимизатора }{\pageref{struct_gen_optimizer__t}}{} -\item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \\*Структура светодиода }{\pageref{struct_g_p_i_o___l_e_d_type_def}}{} -\item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \\*Структура кнопки }{\pageref{struct_g_p_i_o___switch_type_def}}{} \item\contentsline{section}{\mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \\*Контекст стек-\/фрейма процессора при Hard\+Fault }{\pageref{struct_h_f___stack_frame__t}}{} \item\contentsline{section}{\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\+\_\+\+Flash\+Header\+\_\+t}} \\*Структура RTT, которая будет положена в Flash }{\pageref{struct_r_t_t___flash_header__t}}{} -\item\contentsline{section}{\mbox{\hyperlink{struct_s_p_i___settings_type_def}{SPI\+\_\+\+Settings\+Type\+Def}} \\*Структура настроек SPI }{\pageref{struct_s_p_i___settings_type_def}}{} -\item\contentsline{section}{\mbox{\hyperlink{struct_t_i_m___encoder_type_def}{TIM\+\_\+\+Encoder\+Type\+Def}} \\*Структура инициализации енкодера }{\pageref{struct_t_i_m___encoder_type_def}}{} -\item\contentsline{section}{\mbox{\hyperlink{struct_t_i_m___settings_type_def}{TIM\+\_\+\+Settings\+Type\+Def}} \\*Структура инициализации таймера }{\pageref{struct_t_i_m___settings_type_def}}{} -\item\contentsline{section}{\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\+\_\+\+Settings\+Type\+Def}} \\*Структура настроек UART }{\pageref{struct_u_a_r_t___settings_type_def}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN}} }{\pageref{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP}} }{\pageref{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b}{SEGGER\+\_\+\+RTT\+\_\+\+CB}} }{\pageref{struct_s_e_g_g_e_r___r_t_t___c_b}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{SEGGER\+\_\+\+RTT\+\_\+\+PRINTF\+\_\+\+DESC}} }{\pageref{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}}{} \item\contentsline{section}{\mbox{\hyperlink{unionuint16___bit_type_def}{uint16\+\_\+\+Bit\+Type\+Def}} }{\pageref{unionuint16___bit_type_def}}{} \item\contentsline{section}{\mbox{\hyperlink{unionuint32___bit_type_def}{uint32\+\_\+\+Bit\+Type\+Def}} }{\pageref{unionuint32___bit_type_def}}{} \item\contentsline{section}{\mbox{\hyperlink{unionuint64___bit_type_def}{uint64\+\_\+\+Bit\+Type\+Def}} }{\pageref{unionuint64___bit_type_def}}{} diff --git a/Doc/latex/bench__time_8h.tex b/Doc/latex/bench__time_8h.tex index db1c3db..060e44e 100644 --- a/Doc/latex/bench__time_8h.tex +++ b/Doc/latex/bench__time_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/bench\+\_\+time.h File Reference} -\hypertarget{bench__time_8h}{}\label{bench__time_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/bench\+\_\+time.h File Reference} +\hypertarget{bench__time_8h}{}\label{bench__time_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}} Заголовочный файл для измерения времени между событиями @@ -7,12 +7,11 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline {\ttfamily \#include $<$stdint.\+h$>$}\newline -Include dependency graph for bench\+\_\+time.\+h\+: -\nopagebreak +Include dependency graph for bench\+\_\+time.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=230pt]{bench__time_8h__incl} +\includegraphics[width=233pt]{bench__time_8h__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} diff --git a/Doc/latex/bench__time_8h__incl.md5 b/Doc/latex/bench__time_8h__incl.md5 index 1ed4101..a89d29f 100644 --- a/Doc/latex/bench__time_8h__incl.md5 +++ b/Doc/latex/bench__time_8h__incl.md5 @@ -1 +1 @@ -122aa7271e7507ca099dc86bd8c9c747 \ No newline at end of file +0973ca287455c599a939b3aa21c17abd \ No newline at end of file diff --git a/Doc/latex/bench__time_8h__incl.pdf b/Doc/latex/bench__time_8h__incl.pdf index 1bd577f..83e7198 100644 Binary files a/Doc/latex/bench__time_8h__incl.pdf and b/Doc/latex/bench__time_8h__incl.pdf differ diff --git a/Doc/latex/bench__time_8h_source.tex b/Doc/latex/bench__time_8h_source.tex index 7f76067..d108fd3 100644 --- a/Doc/latex/bench__time_8h_source.tex +++ b/Doc/latex/bench__time_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{bench\+\_\+time.\+h} -\hypertarget{bench__time_8h_source}{}\label{bench__time_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}} +\hypertarget{bench__time_8h_source}{}\label{bench__time_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}} \mbox{\hyperlink{bench__time_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00001}00001\ \textcolor{comment}{/**}} @@ -8,257 +8,256 @@ \DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ измерения\ времени\ между\ событиями}} \DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}} \DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ BENCH\_TIME\ \ \ \ Time\ measurement}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ измерения\ времени/тиков\ между\ событиями}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Многоканальные\ измерения\ (несколько\ независимых\ таймеров)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Платформонезависимый\ интерфейс}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Измерение\ в\ тиках\ или\ временных\ единицах}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Статистику\ измерений\ (мин/макс/среднее)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00015}00015\ \textcolor{comment}{-\/\ Настраиваемый\ размер\ тиков\ для\ каждого\ канала}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00016}00016\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_ENABLE\ -\/\ Включить\ бенч\ времени}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00019}00019\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_MAX\_CHANNELS\ -\/\ Максимальное\ количество\ каналов\ измерения\ (по\ умолчанию\ 8)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00020}00020\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00021}00021\ \textcolor{comment}{@par\ Пример\ использования:}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00022}00022\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00023}00023\ \textcolor{comment}{\#include\ "{}bench\_time.h"{}}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00024}00024\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00025}00025\ \textcolor{comment}{//\ Инициализация}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00026}00026\ \textcolor{comment}{BenchTime\_Init();}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00027}00027\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00028}00028\ \textcolor{comment}{//\ Измерение\ с\ SysTick}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00029}00029\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 0xFFFFFFFF);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00030}00030\ \textcolor{comment}{some\_function();}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00031}00031\ \textcolor{comment}{uint32\_t\ time\ =\ BenchTime\_End(0,\ HAL\_GetTick);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00032}00032\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00033}00033\ \textcolor{comment}{//\ Измерение\ с\ TIM2\ (16-\/бит)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00034}00034\ \textcolor{comment}{BenchTime\_Start(1,\ TIM2-\/>CNT,\ 0xFFFF);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00035}00035\ \textcolor{comment}{fast\_function();\ }} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00036}00036\ \textcolor{comment}{uint32\_t\ time2\ =\ BenchTime\_End(1,\ TIM2-\/>CNT);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00037}00037\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00038}00038\ \textcolor{comment}{//\ Измерение\ с\ DWT\ цикловым\ счетчиком}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00039}00039\ \textcolor{comment}{BenchTime\_Start(2,\ DWT-\/>CYCCNT,\ 0xFFFFFFFF);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00040}00040\ \textcolor{comment}{critical\_function();}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00041}00041\ \textcolor{comment}{uint32\_t\ cycles\ =\ BenchTime\_End(2,\ DWT-\/>CYCCNT);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00042}00042\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00043}00043\ \textcolor{comment}{//\ Многоканальное\ измерение}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00044}00044\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 1000);\ \ \ \ \ \ \ \ //\ общее\ время}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00045}00045\ \textcolor{comment}{BenchTime\_Start(1,\ TIM3-\/>CNT,\ 500);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 1}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00046}00046\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00047}00047\ \textcolor{comment}{//\ ...\ код\ 1}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00048}00048\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00049}00049\ \textcolor{comment}{uint32\_t\ part1\ =\ BenchTime\_End(1,\ TIM3-\/>CNT);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00050}00050\ \textcolor{comment}{BenchTime\_Start(2,\ TIM4-\/>CNT,\ 200);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 2\ \ }} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00051}00051\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00052}00052\ \textcolor{comment}{//\ ...\ код\ 2}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00053}00053\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00054}00054\ \textcolor{comment}{uint32\_t\ part2\ =\ BenchTime\_End(2,\ TIM4-\/>CNT);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00055}00055\ \textcolor{comment}{uint32\_t\ total\ =\ BenchTime\_End(0,\ HAL\_GetTick);\ //\ общее\ время}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00056}00056\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00057}00057\ \textcolor{comment}{//\ Статистика}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00058}00058\ \textcolor{comment}{uint32\_t\ min\_time\ =\ BenchTime\_GetMin(0);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00059}00059\ \textcolor{comment}{uint32\_t\ max\_time\ =\ BenchTime\_GetMax(0);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00060}00060\ \textcolor{comment}{uint32\_t\ avg\_time\ =\ BenchTime\_GetAverage(0);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00061}00061\ \textcolor{comment}{uint32\_t\ count\ =\ BenchTime\_GetCount(0);}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00062}00062\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00063}00063\ \textcolor{comment}{*\ @\{\ \ }} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00064}00064\ \textcolor{comment}{*****************************************************************************/}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00065}00065\ \textcolor{preprocessor}{\#ifndef\ \_\_BENCH\_TIME\_H\_}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00066}00066\ \textcolor{preprocessor}{\#define\ \_\_BENCH\_TIME\_H\_}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00067}00067\ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00068}00068\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00069}00069\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00070}00070\ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00071}00071\ \textcolor{preprocessor}{\#ifdef\ BENCH\_TIME\_ENABLE}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00072}00072\ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00073}00073\ \textcolor{comment}{//\ Конфигурация\ библиотеки}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00074}00074\ \textcolor{preprocessor}{\#ifndef\ BENCH\_TIME\_MAX\_CHANNELS}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00075}00075\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_MAX\_CHANNELS\ \ 8\ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ каналов\ измерения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00076}00076\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00077}00077\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00078}00078\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ @brief\ Структура\ статистики\ измерений}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00080}00080\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00081}\mbox{\hyperlink{struct_bench_time_stats__t}{00081}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00082}\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{00082}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Минимальное\ время\ в\ тиках}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00083}\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{00083}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Максимальное\ время\ в\ тиках\ \ }} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00084}\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{00084}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}};\ \ \ \ \textcolor{comment}{///<\ Суммарное\ время\ в\ тиках}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00085}\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{00085}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};\ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ измерений}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00086}\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{00086}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}};\ \ \ \ \ \textcolor{comment}{///<\ Последнее\ измеренное\ время}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00087}00087\ \}\ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}};} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00088}00088\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00089}00089\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ @brief\ Структура\ канала\ измерения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00091}00091\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00092}\mbox{\hyperlink{struct_bench_time_channel__t}{00092}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00093}\mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{00093}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{start\_tick}};\ \ \ \ \ \textcolor{comment}{///<\ Время\ старта\ в\ тиках}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00094}\mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{00094}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{tick\_period}};\ \ \ \ \textcolor{comment}{///<\ Период\ тиков\ для\ переполнения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00095}\mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{00095}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{is\_running}};\ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Флаг\ активного\ измерения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00096}\mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{00096}}\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}\ \mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{stats}};\ \ \textcolor{comment}{///<\ Статистика\ измерений}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00097}00097\ \}\ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}};} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00098}00098\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00099}00099\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Основная\ структура\ менеджера\ измерений}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00102}\mbox{\hyperlink{struct_bench_time__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00103}\mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{00103}}\ \ \ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}}\ \mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{channels}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}}];\ \textcolor{comment}{///<\ Каналы\ измерения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00104}00104\ \}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}};} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00105}00105\ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00106}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{00106}}\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}\ =\ \{0\};\ \textcolor{comment}{///<\ Внутренний\ экземпляр}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00107}00107\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00108}00108\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00109}00109\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ системы\ измерения\ времени}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00110}00110\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00111}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{00111}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{BenchTime\_Init}}(\textcolor{keywordtype}{void})\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00112}00112\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}};\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00113}00113\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].start\_tick\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00114}00114\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].tick\_period\ =\ 0xFFFFFFFF;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00115}00115\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].is\_running\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00116}00116\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.min\_ticks\ =\ 0xFFFFFFFF;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00117}00117\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.max\_ticks\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00118}00118\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.total\_ticks\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00119}00119\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.count\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00120}00120\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.last\_ticks\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00121}00121\ \ \ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00122}00122\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00123}00123\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00124}00124\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00125}00125\ \textcolor{comment}{\ \ *\ @brief\ Начало\ измерения\ на\ указанном\ канале}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00127}00127\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (например:\ HAL\_GetTick(),\ TIM2-\/>CNT,\ DWT-\/>CYCCNT)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00128}00128\ \textcolor{comment}{\ \ *\ @param\ tick\_period\ Период\ тиков\ для\ переполнения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00129}00129\ \textcolor{comment}{\ \ *\ @return\ 1\ -\/\ успех,\ 0\ -\/\ ошибка}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00130}00130\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00131}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{00131}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(uint8\_t\ channel,\ uint32\_t\ ticks,\ uint32\_t\ tick\_period)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00133}00133\ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00134}00134\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00135}00135\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick\ =\ ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00136}00136\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period\ =\ tick\_period;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00137}00137\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 1;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00138}00138\ \ \ \textcolor{keywordflow}{return}\ 1;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00139}00139\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00140}00140\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00141}00141\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @brief\ Окончание\ измерения\ на\ указанном\ канале}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (должен\ быть\ тот\ же\ что\ в\ Start)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @return\ Измеренное\ время\ в\ тиках,\ 0\ -\/\ в\ случае\ ошибки}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00146}00146\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00147}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{00147}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(uint8\_t\ channel,\ uint32\_t\ ticks)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00148}00148\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00149}00149\ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00150}00150\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00151}00151\ \ \ uint32\_t\ end\_tick\ =\ ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00152}00152\ \ \ uint32\_t\ start\_tick\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00153}00153\ \ \ uint32\_t\ tick\_period\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00154}00154\ \ \ uint32\_t\ elapsed\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00155}00155\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00156}00156\ \ \ \textcolor{keywordflow}{if}\ (end\_tick\ >=\ start\_tick)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00157}00157\ \ \ \ \ elapsed\_ticks\ =\ end\_tick\ -\/\ start\_tick;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00158}00158\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00159}00159\ \ \ \ \ elapsed\_ticks\ =\ (tick\_period\ -\/\ start\_tick)\ +\ end\_tick\ +\ 1;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00160}00160\ \ \ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00161}00161\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ tick\_period)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00163}00163\ \ \ \ \ elapsed\_ticks\ =\ tick\_period;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00164}00164\ \ \ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00165}00165\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00166}00166\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00167}00167\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00168}00168\ \ \ \textcolor{comment}{//\ Обновление\ статистики}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00169}00169\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00170}00170\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ elapsed\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00171}00171\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00172}00172\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ <\ stats-\/>min\_ticks)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00173}00173\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ elapsed\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00174}00174\ \ \ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00175}00175\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00176}00176\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}})\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00177}00177\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ elapsed\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00178}00178\ \ \ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00179}00179\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00180}00180\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ +=\ elapsed\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00181}00181\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}++;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00182}00182\ \ \ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00183}00183\ \ \ \textcolor{keywordflow}{return}\ elapsed\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00184}00184\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00185}00185\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00186}00186\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00187}00187\ \textcolor{comment}{\ \ *\ @brief\ Получение\ минимального\ времени\ измерения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00188}00188\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00189}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{00189}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{BenchTime\_GetMin}}(uint8\_t\ channel)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00191}00191\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.min\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00192}00192\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00193}00193\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00194}00194\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00195}00195\ \textcolor{comment}{\ \ *\ @brief\ Получение\ максимального\ времени\ измерения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00196}00196\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00197}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{00197}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{BenchTime\_GetMax}}(uint8\_t\ channel)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00198}00198\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00199}00199\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.max\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00200}00200\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00201}00201\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00202}00202\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00203}00203\ \textcolor{comment}{\ \ *\ @brief\ Получение\ среднего\ времени\ измерения}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00204}00204\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00205}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{00205}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{BenchTime\_GetAverage}}(uint8\_t\ channel)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00206}00206\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00207}00207\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00208}00208\ \ \ \textcolor{keywordflow}{if}\ (stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ ==\ 0)\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00209}00209\ \ \ \textcolor{keywordflow}{return}\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ /\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00210}00210\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00211}00211\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00212}00212\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @brief\ Получение\ количества\ измерений}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00214}00214\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00215}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{00215}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{BenchTime\_GetCount}}(uint8\_t\ channel)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00216}00216\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00217}00217\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.count;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00218}00218\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00219}00219\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00220}00220\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ @brief\ Получение\ последнего\ измеренного\ времени}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00222}00222\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00223}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{00223}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{BenchTime\_GetLast}}(uint8\_t\ channel)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00224}00224\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00225}00225\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.last\_ticks;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00226}00226\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00227}00227\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00228}00228\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00229}00229\ \textcolor{comment}{\ \ *\ @brief\ Сброс\ статистики\ для\ канала}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00230}00230\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00231}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{00231}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{BenchTime\_ResetStats}}(uint8\_t\ channel)\ \{} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00232}00232\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return};} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00233}00233\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00234}00234\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ 0xFFFFFFFF;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00235}00235\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00236}00236\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00237}00237\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00238}00238\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00239}00239\ \}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00240}00240\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00241}00241\ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00242}00242\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00243}00243\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00244}00244\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00245}00245\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00246}00246\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00247}00247\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00248}00248\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00249}00249\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00250}00250\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00251}00251\ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00252}00252\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00253}00253\ } -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00254}00254\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_BENCH\_TIME\_H\_}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00255}00255\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00256}00256\ \textcolor{comment}{/**\ BENCH\_TIME}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00257}00257\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00258}00258\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00007}00007\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ измерения\ времени/тиков\ между\ событиями}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00008}00008\ \textcolor{comment}{*\ @details}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00009}00009\ \textcolor{comment}{Поддерживает:}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00010}00010\ \textcolor{comment}{-\/\ Многоканальные\ измерения\ (несколько\ независимых\ таймеров)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Платформонезависимый\ интерфейс}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Измерение\ в\ тиках\ или\ временных\ единицах}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Статистику\ измерений\ (мин/макс/среднее)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Настраиваемый\ размер\ тиков\ для\ каждого\ канала}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00015}00015\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00016}00016\ \textcolor{comment}{Параметры\ для\ конфигурации:}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00017}00017\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_ENABLE\ -\/\ Включить\ бенч\ времени}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_MAX\_CHANNELS\ -\/\ Максимальное\ количество\ каналов\ измерения\ (по\ умолчанию\ 8)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00019}00019\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00020}00020\ \textcolor{comment}{@par\ Пример\ использования:}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00021}00021\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00022}00022\ \textcolor{comment}{\#include\ "{}bench\_time.h"{}}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00023}00023\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00024}00024\ \textcolor{comment}{//\ Инициализация}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00025}00025\ \textcolor{comment}{BenchTime\_Init();}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00026}00026\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00027}00027\ \textcolor{comment}{//\ Измерение\ с\ SysTick}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00028}00028\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 0xFFFFFFFF);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00029}00029\ \textcolor{comment}{some\_function();}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00030}00030\ \textcolor{comment}{uint32\_t\ time\ =\ BenchTime\_End(0,\ HAL\_GetTick);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00031}00031\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00032}00032\ \textcolor{comment}{//\ Измерение\ с\ TIM2\ (16-\/бит)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00033}00033\ \textcolor{comment}{BenchTime\_Start(1,\ TIM2-\/>CNT,\ 0xFFFF);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00034}00034\ \textcolor{comment}{fast\_function();\ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00035}00035\ \textcolor{comment}{uint32\_t\ time2\ =\ BenchTime\_End(1,\ TIM2-\/>CNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00036}00036\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00037}00037\ \textcolor{comment}{//\ Измерение\ с\ DWT\ цикловым\ счетчиком}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00038}00038\ \textcolor{comment}{BenchTime\_Start(2,\ DWT-\/>CYCCNT,\ 0xFFFFFFFF);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00039}00039\ \textcolor{comment}{critical\_function();}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00040}00040\ \textcolor{comment}{uint32\_t\ cycles\ =\ BenchTime\_End(2,\ DWT-\/>CYCCNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00041}00041\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00042}00042\ \textcolor{comment}{//\ Многоканальное\ измерение}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00043}00043\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 1000);\ \ \ \ \ \ \ \ //\ общее\ время}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00044}00044\ \textcolor{comment}{BenchTime\_Start(1,\ TIM3-\/>CNT,\ 500);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 1}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00045}00045\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00046}00046\ \textcolor{comment}{//\ ...\ код\ 1}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00047}00047\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00048}00048\ \textcolor{comment}{uint32\_t\ part1\ =\ BenchTime\_End(1,\ TIM3-\/>CNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00049}00049\ \textcolor{comment}{BenchTime\_Start(2,\ TIM4-\/>CNT,\ 200);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 2\ \ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00050}00050\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00051}00051\ \textcolor{comment}{//\ ...\ код\ 2}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00052}00052\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00053}00053\ \textcolor{comment}{uint32\_t\ part2\ =\ BenchTime\_End(2,\ TIM4-\/>CNT);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00054}00054\ \textcolor{comment}{uint32\_t\ total\ =\ BenchTime\_End(0,\ HAL\_GetTick);\ //\ общее\ время}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00055}00055\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00056}00056\ \textcolor{comment}{//\ Статистика}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00057}00057\ \textcolor{comment}{uint32\_t\ min\_time\ =\ BenchTime\_GetMin(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00058}00058\ \textcolor{comment}{uint32\_t\ max\_time\ =\ BenchTime\_GetMax(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00059}00059\ \textcolor{comment}{uint32\_t\ avg\_time\ =\ BenchTime\_GetAverage(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00060}00060\ \textcolor{comment}{uint32\_t\ count\ =\ BenchTime\_GetCount(0);}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00061}00061\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00062}00062\ \textcolor{comment}{*\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00063}00063\ \textcolor{comment}{*****************************************************************************/}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00064}00064\ \textcolor{preprocessor}{\#ifndef\ \_\_BENCH\_TIME\_H\_}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00065}00065\ \textcolor{preprocessor}{\#define\ \_\_BENCH\_TIME\_H\_}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00066}00066\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00067}00067\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00068}00068\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00069}00069\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00070}00070\ \textcolor{preprocessor}{\#ifdef\ BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00071}00071\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00072}00072\ \textcolor{comment}{//\ Конфигурация\ библиотеки}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00073}00073\ \textcolor{preprocessor}{\#ifndef\ BENCH\_TIME\_MAX\_CHANNELS}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00074}00074\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_MAX\_CHANNELS\ \ 8\ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ каналов\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00075}00075\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00076}00076\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00077}00077\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00078}00078\ \textcolor{comment}{\ \ *\ @brief\ Структура\ статистики\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00079}00079\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00080}\mbox{\hyperlink{struct_bench_time_stats__t}{00080}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00081}\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{00081}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Минимальное\ время\ в\ тиках}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00082}\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{00082}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Максимальное\ время\ в\ тиках\ \ }} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00083}\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{00083}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}};\ \ \ \ \textcolor{comment}{///<\ Суммарное\ время\ в\ тиках}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00084}\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{00084}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};\ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00085}\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{00085}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}};\ \ \ \ \ \textcolor{comment}{///<\ Последнее\ измеренное\ время}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00086}00086\ \}\ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00087}00087\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00088}00088\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00089}00089\ \textcolor{comment}{\ \ *\ @brief\ Структура\ канала\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00090}00090\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00091}\mbox{\hyperlink{struct_bench_time_channel__t}{00091}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00092}\mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{00092}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{start\_tick}};\ \ \ \ \ \textcolor{comment}{///<\ Время\ старта\ в\ тиках}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00093}\mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{00093}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{tick\_period}};\ \ \ \ \textcolor{comment}{///<\ Период\ тиков\ для\ переполнения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00094}\mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{00094}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{is\_running}};\ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Флаг\ активного\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00095}\mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{00095}}\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}\ \mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{stats}};\ \ \textcolor{comment}{///<\ Статистика\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00096}00096\ \}\ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00097}00097\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00098}00098\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00099}00099\ \textcolor{comment}{\ \ *\ @brief\ Основная\ структура\ менеджера\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00100}00100\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00101}\mbox{\hyperlink{struct_bench_time__t}{00101}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00102}\mbox{\hyperlink{struct_bench_time__t_a51376c064bdcffba23cf65d0733e3d34}{00102}}\ \ \ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}}\ \mbox{\hyperlink{struct_bench_time__t_a51376c064bdcffba23cf65d0733e3d34}{channels}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}}];\ \textcolor{comment}{///<\ Каналы\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00103}00103\ \}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00104}00104\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00105}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{00105}}\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}\ =\ \{0\};\ \textcolor{comment}{///<\ Внутренний\ экземпляр}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00106}00106\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00107}00107\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00108}00108\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ системы\ измерения\ времени}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00109}00109\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00110}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{00110}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{BenchTime\_Init}}(\textcolor{keywordtype}{void})\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00111}00111\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}};\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00112}00112\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].start\_tick\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00113}00113\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].tick\_period\ =\ 0xFFFFFFFF;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00114}00114\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].is\_running\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00115}00115\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.min\_ticks\ =\ 0xFFFFFFFF;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00116}00116\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.max\_ticks\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00117}00117\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.total\_ticks\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00118}00118\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.count\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00119}00119\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.last\_ticks\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00120}00120\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00121}00121\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00122}00122\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00123}00123\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00124}00124\ \textcolor{comment}{\ \ *\ @brief\ Начало\ измерения\ на\ указанном\ канале}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00125}00125\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (например:\ HAL\_GetTick(),\ TIM2-\/>CNT,\ DWT-\/>CYCCNT)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00127}00127\ \textcolor{comment}{\ \ *\ @param\ tick\_period\ Период\ тиков\ для\ переполнения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00128}00128\ \textcolor{comment}{\ \ *\ @return\ 1\ -\/\ успех,\ 0\ -\/\ ошибка}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00129}00129\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00130}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{00130}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(uint8\_t\ channel,\ uint32\_t\ ticks,\ uint32\_t\ tick\_period)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00131}00131\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00133}00133\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00134}00134\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick\ =\ ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00135}00135\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period\ =\ tick\_period;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00136}00136\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 1;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00137}00137\ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00138}00138\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00139}00139\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00140}00140\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00141}00141\ \textcolor{comment}{\ \ *\ @brief\ Окончание\ измерения\ на\ указанном\ канале}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (должен\ быть\ тот\ же\ что\ в\ Start)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @return\ Измеренное\ время\ в\ тиках,\ 0\ -\/\ в\ случае\ ошибки}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00145}00145\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00146}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{00146}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(uint8\_t\ channel,\ uint32\_t\ ticks)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00147}00147\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00148}00148\ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00149}00149\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00150}00150\ \ \ uint32\_t\ end\_tick\ =\ ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00151}00151\ \ \ uint32\_t\ start\_tick\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00152}00152\ \ \ uint32\_t\ tick\_period\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00153}00153\ \ \ uint32\_t\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00154}00154\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00155}00155\ \ \ \textcolor{keywordflow}{if}\ (end\_tick\ >=\ start\_tick)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00156}00156\ \ \ \ \ elapsed\_ticks\ =\ end\_tick\ -\/\ start\_tick;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00157}00157\ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00158}00158\ \ \ \ \ elapsed\_ticks\ =\ (tick\_period\ -\/\ start\_tick)\ +\ end\_tick\ +\ 1;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00159}00159\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00160}00160\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00161}00161\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ tick\_period)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00162}00162\ \ \ \ \ elapsed\_ticks\ =\ tick\_period;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00163}00163\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00164}00164\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00165}00165\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00166}00166\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00167}00167\ \ \ \textcolor{comment}{//\ Обновление\ статистики}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00168}00168\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00169}00169\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00170}00170\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00171}00171\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ <\ stats-\/>min\_ticks)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00172}00172\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00173}00173\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00174}00174\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00175}00175\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}})\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00176}00176\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00177}00177\ \ \ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00178}00178\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00179}00179\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ +=\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00180}00180\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}++;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00181}00181\ \ \ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00182}00182\ \ \ \textcolor{keywordflow}{return}\ elapsed\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00183}00183\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00184}00184\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00185}00185\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00186}00186\ \textcolor{comment}{\ \ *\ @brief\ Получение\ минимального\ времени\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00187}00187\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00188}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{00188}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{BenchTime\_GetMin}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00189}00189\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.min\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00191}00191\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00192}00192\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00193}00193\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00194}00194\ \textcolor{comment}{\ \ *\ @brief\ Получение\ максимального\ времени\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00195}00195\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00196}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{00196}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{BenchTime\_GetMax}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00197}00197\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00198}00198\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.max\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00199}00199\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00200}00200\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00201}00201\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00202}00202\ \textcolor{comment}{\ \ *\ @brief\ Получение\ среднего\ времени\ измерения}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00203}00203\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00204}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{00204}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{BenchTime\_GetAverage}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00205}00205\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00206}00206\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00207}00207\ \ \ \textcolor{keywordflow}{if}\ (stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ ==\ 0)\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00208}00208\ \ \ \textcolor{keywordflow}{return}\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ /\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00209}00209\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00210}00210\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00211}00211\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @brief\ Получение\ количества\ измерений}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00213}00213\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00214}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{00214}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{BenchTime\_GetCount}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00215}00215\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00216}00216\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.count;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00217}00217\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00218}00218\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00219}00219\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00220}00220\ \textcolor{comment}{\ \ *\ @brief\ Получение\ последнего\ измеренного\ времени}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00221}00221\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00222}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{00222}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{BenchTime\_GetLast}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00223}00223\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00224}00224\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.last\_ticks;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00225}00225\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00226}00226\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00227}00227\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00228}00228\ \textcolor{comment}{\ \ *\ @brief\ Сброс\ статистики\ для\ канала}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00229}00229\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00230}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{00230}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{BenchTime\_ResetStats}}(uint8\_t\ channel)\ \{} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00231}00231\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return};} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00232}00232\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00233}00233\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ 0xFFFFFFFF;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00234}00234\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00235}00235\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00236}00236\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00237}00237\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00238}00238\ \}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00239}00239\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00240}00240\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00241}00241\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00242}00242\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00243}00243\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00244}00244\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00245}00245\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00246}00246\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00247}00247\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00248}00248\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00249}00249\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00250}00250\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00251}00251\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00252}00252\ } +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00253}00253\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_BENCH\_TIME\_H\_}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00254}00254\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00255}00255\ \textcolor{comment}{/**\ BENCH\_TIME}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00256}00256\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00257}00257\ \textcolor{comment}{\ \ */}} \end{DoxyCode} diff --git a/Doc/latex/bit__access_8h.tex b/Doc/latex/bit__access_8h.tex index 4f37e4d..d1f8e81 100644 --- a/Doc/latex/bit__access_8h.tex +++ b/Doc/latex/bit__access_8h.tex @@ -1,25 +1,23 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/bit\+\_\+access.h File Reference} -\hypertarget{bit__access_8h}{}\label{bit__access_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/bit\+\_\+access.h File Reference} +\hypertarget{bit__access_8h}{}\label{bit__access_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h}} Заголочный файл для дефайнов битового доступа. {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline -Include dependency graph for bit\+\_\+access.\+h\+: -\nopagebreak +Include dependency graph for bit\+\_\+access.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{bit__access_8h__incl} +\includegraphics[width=218pt]{bit__access_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{bit__access_8h__dep__incl} +\includegraphics[width=223pt]{bit__access_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} diff --git a/Doc/latex/bit__access_8h__dep__incl.md5 b/Doc/latex/bit__access_8h__dep__incl.md5 index cbb050e..7054e1d 100644 --- a/Doc/latex/bit__access_8h__dep__incl.md5 +++ b/Doc/latex/bit__access_8h__dep__incl.md5 @@ -1 +1 @@ -4dab8ce789924da2e24a48609f62737b \ No newline at end of file +f89078e44c77b1c105e61efb2f8dc2dc \ No newline at end of file diff --git a/Doc/latex/bit__access_8h__dep__incl.pdf b/Doc/latex/bit__access_8h__dep__incl.pdf index f3819bf..c12e60b 100644 Binary files a/Doc/latex/bit__access_8h__dep__incl.pdf and b/Doc/latex/bit__access_8h__dep__incl.pdf differ diff --git a/Doc/latex/bit__access_8h__incl.md5 b/Doc/latex/bit__access_8h__incl.md5 index a6ca79d..6a384f9 100644 --- a/Doc/latex/bit__access_8h__incl.md5 +++ b/Doc/latex/bit__access_8h__incl.md5 @@ -1 +1 @@ -b0cf5f4a55e63cfdea9bf78e53ce63ec \ No newline at end of file +436553fd212e6508c6668ae510bd9715 \ No newline at end of file diff --git a/Doc/latex/bit__access_8h__incl.pdf b/Doc/latex/bit__access_8h__incl.pdf index ed1e926..713ade8 100644 Binary files a/Doc/latex/bit__access_8h__incl.pdf and b/Doc/latex/bit__access_8h__incl.pdf differ diff --git a/Doc/latex/bit__access_8h_source.tex b/Doc/latex/bit__access_8h_source.tex index 6db1955..101b72a 100644 --- a/Doc/latex/bit__access_8h_source.tex +++ b/Doc/latex/bit__access_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{bit\+\_\+access.\+h} -\hypertarget{bit__access_8h_source}{}\label{bit__access_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h}} +\hypertarget{bit__access_8h_source}{}\label{bit__access_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/bit\_access.h}} \mbox{\hyperlink{bit__access_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -8,7 +8,7 @@ \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголочный\ файл\ для\ дефайнов\ битового\ доступа.}} \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00005}00005\ \textcolor{comment}{**************************************************************************}} \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00006}00006\ \textcolor{comment}{*\ @defgroup\ BIT\_ACCESS\_DEFINES\ \ \ \ Bit\ access\ defines}} -\DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ MYLIBS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ MYLIBS\_TOOLS\ }} \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ Макросы\ и\ typedef'ы\ для\ работы\ с\ битами\ в\ unsigned\ типах.}} \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}} \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00010}00010\ \textcolor{comment}{В\ этом\ файле\ определены\ макросы\ для\ получения\ значения\ конкретного\ бита\string^}} diff --git a/Doc/latex/files.tex b/Doc/latex/files.tex index 87d066a..e61d203 100644 --- a/Doc/latex/files.tex +++ b/Doc/latex/files.tex @@ -1,22 +1,17 @@ \doxysection{File List} Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}} \\*Заголовочный файл для измерения времени между событиями }{\pageref{bench__time_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{gen__optimizer_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__defs_8h}{mylibs\+\_\+defs.\+h}} \\*Заголочный файл для дефайнов библиотеки My\+Libs\+General }{\pageref{mylibs__defs_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__include_8h}{mylibs\+\_\+include.\+h}} \\*Заголочный файл для всех библиотек }{\pageref{mylibs__include_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}} \\*Заголочный файл для работы с трассировкой }{\pageref{trace_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trackers_8h}{trackers.\+h}} \\*Заголочный файл для работы с трекерами \doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} }{\pageref{trackers_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Inc/\mbox{\hyperlink{____general__flash_8h_source}{\+\_\+\+\_\+general\+\_\+flash.\+h}} }{\pageref{____general__flash_8h_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Inc/\mbox{\hyperlink{general__gpio_8h}{general\+\_\+gpio.\+h}} \\*Заголовочный файл для модуля инициализации портов и работы с ними }{\pageref{general__gpio_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Inc/\mbox{\hyperlink{general__spi_8h}{general\+\_\+spi.\+h}} \\*Заголовочный файл для модуля инициализации SPI }{\pageref{general__spi_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Inc/\mbox{\hyperlink{general__tim_8h}{general\+\_\+tim.\+h}} \\*Заголовочный файл для модуля инициализации таймеров и работы с ними }{\pageref{general__tim_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Inc/\mbox{\hyperlink{general__uart_8h}{general\+\_\+uart.\+h}} \\*Заголовочный файл для модуля инициализации UART }{\pageref{general__uart_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Src/\mbox{\hyperlink{____general__flash_8c_source}{\+\_\+\+\_\+general\+\_\+flash.\+c}} }{\pageref{____general__flash_8c_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Src/\mbox{\hyperlink{general__gpio_8c}{general\+\_\+gpio.\+c}} \\*Модуль для инициализации портов и работы с ними }{\pageref{general__gpio_8c}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Src/\mbox{\hyperlink{general__spi_8c}{general\+\_\+spi.\+c}} \\*Модуль для инициализации SPI }{\pageref{general__spi_8c}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Src/\mbox{\hyperlink{general__tim_8c}{general\+\_\+tim.\+c}} \\*Модуль для инициализации таймеров и работы с ними }{\pageref{general__tim_8c}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+STM32\+\_\+\+General/\+Src/\mbox{\hyperlink{general__uart_8c}{general\+\_\+uart.\+c}} \\*Модуль для инициализации UART }{\pageref{general__uart_8c}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}} \\*Заголовочный файл для измерения времени между событиями }{\pageref{bench__time_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{gen__optimizer_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__defs_8h}{mylibs\+\_\+defs.\+h}} \\*Заголочный файл для дефайнов библиотеки My\+Libs\+General }{\pageref{mylibs__defs_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__include_8h}{mylibs\+\_\+include.\+h}} \\*Заголочный файл для всех библиотек }{\pageref{mylibs__include_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}} \\*Заголочный файл для работы с трассировкой }{\pageref{trace_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trackers_8h}{trackers.\+h}} \\*Заголочный файл для работы с трекерами \doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} }{\pageref{trackers_8h}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/\mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8c_source}{SEGGER\+\_\+\+RTT.\+c}} }{\pageref{_s_e_g_g_e_r___r_t_t_8c_source}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/\mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}} }{\pageref{_s_e_g_g_e_r___r_t_t_8h_source}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/\mbox{\hyperlink{_s_e_g_g_e_r___r_t_t___conf_8h_source}{SEGGER\+\_\+\+RTT\+\_\+\+Conf.\+h}} }{\pageref{_s_e_g_g_e_r___r_t_t___conf_8h_source}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/\mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source}{SEGGER\+\_\+\+RTT\+\_\+printf.\+c}} }{\pageref{_s_e_g_g_e_r___r_t_t__printf_8c_source}}{} +\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/\mbox{\hyperlink{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source}{SEGGER\+\_\+\+RTT\+\_\+\+Syscalls\+\_\+\+KEIL.\+c}} }{\pageref{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source}}{} \end{DoxyCompactList} diff --git a/Doc/latex/gen__optimizer_8h.tex b/Doc/latex/gen__optimizer_8h.tex index 9639f6c..a48eb99 100644 --- a/Doc/latex/gen__optimizer_8h.tex +++ b/Doc/latex/gen__optimizer_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/gen\+\_\+optimizer.h File Reference} -\hypertarget{gen__optimizer_8h}{}\label{gen__optimizer_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/gen\+\_\+optimizer.h File Reference} +\hypertarget{gen__optimizer_8h}{}\label{gen__optimizer_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}} Заголовочный файл для адаптивного подбора параметров @@ -8,20 +8,18 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline {\ttfamily \#include $<$stdint.\+h$>$}\newline {\ttfamily \#include $<$stdlib.\+h$>$}\newline -Include dependency graph for gen\+\_\+optimizer.\+h\+: -\nopagebreak +Include dependency graph for gen\+\_\+optimizer.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=295pt]{gen__optimizer_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{gen__optimizer_8h__dep__incl} +\includegraphics[width=223pt]{gen__optimizer_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} diff --git a/Doc/latex/gen__optimizer_8h__dep__incl.md5 b/Doc/latex/gen__optimizer_8h__dep__incl.md5 index d842556..3efea19 100644 --- a/Doc/latex/gen__optimizer_8h__dep__incl.md5 +++ b/Doc/latex/gen__optimizer_8h__dep__incl.md5 @@ -1 +1 @@ -f620087f87f5ce223eef2578f5c74e74 \ No newline at end of file +0edaf92a63ea1a4519c63edb0b8e1595 \ No newline at end of file diff --git a/Doc/latex/gen__optimizer_8h__dep__incl.pdf b/Doc/latex/gen__optimizer_8h__dep__incl.pdf index be1ec98..54ccfd5 100644 Binary files a/Doc/latex/gen__optimizer_8h__dep__incl.pdf and b/Doc/latex/gen__optimizer_8h__dep__incl.pdf differ diff --git a/Doc/latex/gen__optimizer_8h__incl.md5 b/Doc/latex/gen__optimizer_8h__incl.md5 index ad8b4c6..512908a 100644 --- a/Doc/latex/gen__optimizer_8h__incl.md5 +++ b/Doc/latex/gen__optimizer_8h__incl.md5 @@ -1 +1 @@ -d8ba80e222b124652de74ea26c9b5a44 \ No newline at end of file +50299f96b72f01414661d3bccbaa5bc9 \ No newline at end of file diff --git a/Doc/latex/gen__optimizer_8h__incl.pdf b/Doc/latex/gen__optimizer_8h__incl.pdf index 1e5a8ac..69be534 100644 Binary files a/Doc/latex/gen__optimizer_8h__incl.pdf and b/Doc/latex/gen__optimizer_8h__incl.pdf differ diff --git a/Doc/latex/gen__optimizer_8h_source.tex b/Doc/latex/gen__optimizer_8h_source.tex index a7832c0..a42d6a5 100644 --- a/Doc/latex/gen__optimizer_8h_source.tex +++ b/Doc/latex/gen__optimizer_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{gen\+\_\+optimizer.\+h} -\hypertarget{gen__optimizer_8h_source}{}\label{gen__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}} +\hypertarget{gen__optimizer_8h_source}{}\label{gen__optimizer_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}} \mbox{\hyperlink{gen__optimizer_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00001}00001\ \textcolor{comment}{/**}} @@ -8,337 +8,336 @@ \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ адаптивного\ подбора\ параметров}} \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}} \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ GEN\_OPTIMIZER\ \ \ \ Genetic\ optimizer}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ эволюционного\ подбора\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Любое\ количество\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Генерацию\ новых\ параметров\ на\ основе\ лучших\ кандидатов}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Мутацию\ для\ поиска\ оптимальных\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Несколько\ независимых\ оптимизаторов\ в\ одной\ программе}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00007}00007\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ эволюционного\ подбора\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00008}00008\ \textcolor{comment}{*\ @details}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00009}00009\ \textcolor{comment}{Поддерживает:}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00010}00010\ \textcolor{comment}{-\/\ Любое\ количество\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Генерацию\ новых\ параметров\ на\ основе\ лучших\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Мутацию\ для\ поиска\ оптимальных\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Несколько\ независимых\ оптимизаторов\ в\ одной\ программе}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00014}00014\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00015}00015\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00016}00016\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ GEN\_OPTIMIZATION\_ENABLE\ -\/\ Включить\ оптимизацию\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00019}00019\ \textcolor{comment}{\ \ Если\ библиотека\ отключена\ @ref\ GEN\_OPTIMIZATION\_ENABLE,\ то\ вставляются\ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00020}00020\ \textcolor{comment}{\ \ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00021}00021\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_PARAMS\ \ \ \ \ \ \ \ \ \ -\/\ Максимальное\ количество\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00022}00022\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_CANDIDATES\ \ \ \ \ \ -\/\ Максимальное\ количество\ кандидатов\ для\ обучения}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00023}00023\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MIN\_PCT\ \ \ \ \ \ \ -\/\ Минимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 10\%)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00024}00024\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MAX\_PCT\ \ \ \ \ \ \ -\/\ Максимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 100\%)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00025}00025\ \textcolor{comment}{-\/\ (опционально)\ @ref\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ \ -\/\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00026}00026\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00027}00027\ \textcolor{comment}{@par\ Пример\ использования:}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00028}00028\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#include\ "{}gen\_optimizer.h"{}}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00032}00032\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00033}00033\ \textcolor{comment}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00034}00034\ \textcolor{comment}{float\ params[N\_PARAMS];}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00035}00035\ \textcolor{comment}{GenOptimizer\_t\ optimizer;}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00036}00036\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00037}00037\ \textcolor{comment}{//\ Формирование\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00038}00038\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00039}00039\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00040}00040\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00041}00041\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE(param\_f,\ \ \ \ 0.001f,\ 0.1f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00044}00044\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00045}00045\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE(param\_i16,\ \ 500.0f,\ 5000.0f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00046}00046\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00047}00047\ \textcolor{comment}{//\ Инициалиазция}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00048}00048\ \textcolor{comment}{GenOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00049}00049\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00050}00050\ \textcolor{comment}{//\ Шаг\ эволюции}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00051}00051\ \textcolor{comment}{float\ loss\ =\ calc\_loss();\ //\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00052}00052\ \textcolor{comment}{GenOptimizer\_Step(\&optimizer,\ params,\ loss);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00053}00053\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00054}00054\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE(params[0],\ \ 0.0f,\ \ \ 1000.0f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE(params[1],\ \ 0.001f,\ 0.1f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00057}00057\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE(params[2],\ \ 10.0f,\ \ 100.0f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00058}00058\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE(params[3],\ \ 500.0f,\ 5000.0f);}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00059}00059\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00060}00060\ \textcolor{comment}{*\ @\{\ \ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00061}00061\ \textcolor{comment}{*****************************************************************************/}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00062}00062\ \textcolor{preprocessor}{\#ifndef\ \_\_GEN\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ \_\_GEN\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00064}00064\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00066}00066\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00067}00067\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00068}00068\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{\#ifdef\ GEN\_OPTIMIZATION\_ENABLE}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00070}00070\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ диапазон\ [0,\ 1)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00073}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{00073}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00074}00074\ \textcolor{preprocessor}{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00075}00075\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00076}00076\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ значения\ из\ [0,\ 1)\ в\ диапазон\ [min\_val,\ max\_val]}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00079}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{00079}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00080}00080\ \textcolor{preprocessor}{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00081}00081\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifndef\ local\_time}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00083}00083\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00084}00084\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00016}00016\ \textcolor{comment}{Параметры\ для\ конфигурации:}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00017}00017\ \textcolor{comment}{-\/\ @ref\ GEN\_OPTIMIZATION\_ENABLE\ -\/\ Включить\ оптимизацию\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00018}00018\ \textcolor{comment}{\ \ Если\ библиотека\ отключена\ @ref\ GEN\_OPTIMIZATION\_ENABLE,\ то\ вставляются\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00019}00019\ \textcolor{comment}{\ \ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00020}00020\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_PARAMS\ \ \ \ \ \ \ \ \ \ -\/\ Максимальное\ количество\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00021}00021\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_CANDIDATES\ \ \ \ \ \ -\/\ Максимальное\ количество\ кандидатов\ для\ обучения}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00022}00022\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MIN\_PCT\ \ \ \ \ \ \ -\/\ Минимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 10\%)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00023}00023\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MAX\_PCT\ \ \ \ \ \ \ -\/\ Максимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 100\%)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00024}00024\ \textcolor{comment}{-\/\ (опционально)\ @ref\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ \ -\/\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00025}00025\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00026}00026\ \textcolor{comment}{@par\ Пример\ использования:}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00027}00027\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00028}00028\ \textcolor{comment}{\#include\ "{}gen\_optimizer.h"{}}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00032}00032\ \textcolor{comment}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00033}00033\ \textcolor{comment}{float\ params[N\_PARAMS];}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00034}00034\ \textcolor{comment}{GenOptimizer\_t\ optimizer;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00035}00035\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00036}00036\ \textcolor{comment}{//\ Формирование\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00037}00037\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00038}00038\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00039}00039\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00040}00040\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00041}00041\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE(param\_f,\ \ \ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00044}00044\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE(param\_i16,\ \ 500.0f,\ 5000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00045}00045\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00046}00046\ \textcolor{comment}{//\ Инициалиазция}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00047}00047\ \textcolor{comment}{GenOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00048}00048\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00049}00049\ \textcolor{comment}{//\ Шаг\ эволюции}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00050}00050\ \textcolor{comment}{float\ loss\ =\ calc\_loss();\ //\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00051}00051\ \textcolor{comment}{GenOptimizer\_Step(\&optimizer,\ params,\ loss);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00052}00052\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00053}00053\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00054}00054\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE(params[0],\ \ 0.0f,\ \ \ 1000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE(params[1],\ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE(params[2],\ \ 10.0f,\ \ 100.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00057}00057\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE(params[3],\ \ 500.0f,\ 5000.0f);}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00058}00058\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00059}00059\ \textcolor{comment}{*\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00060}00060\ \textcolor{comment}{*****************************************************************************/}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00061}00061\ \textcolor{preprocessor}{\#ifndef\ \_\_GEN\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00062}00062\ \textcolor{preprocessor}{\#define\ \_\_GEN\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00063}00063\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00064}00064\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00066}00066\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00067}00067\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00068}00068\ \textcolor{preprocessor}{\#ifdef\ GEN\_OPTIMIZATION\_ENABLE}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00069}00069\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00070}00070\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ диапазон\ [0,\ 1)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00071}00071\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00072}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{00072}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00073}00073\ \textcolor{preprocessor}{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00074}00074\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00075}00075\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ значения\ из\ [0,\ 1)\ в\ диапазон\ [min\_val,\ max\_val]}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00077}00077\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00078}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{00078}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00079}00079\ \textcolor{preprocessor}{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00080}00080\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00081}00081\ \textcolor{preprocessor}{\#ifndef\ local\_time}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00083}00083\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00084}00084\ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00085}00085\ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00086}00086\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00087}00087\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00088}00088\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MIN\_PCT}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00089}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{00089}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MIN\_PCT\ \ \ 10\ \ \ \ }\textcolor{comment}{///<\ Минимальная\ мутация\ (в\ процентах\ от\ Loss)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00090}00090\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00091}00091\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MAX\_PCT}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00092}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{00092}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MAX\_PCT\ \ \ 100\ \ \ }\textcolor{comment}{///<\ Максимальная\ мутация\ (в\ процентах\ от\ Loss)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00093}00093\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifndef\ ELOVLE\_N\_ELITE\_CANDIDATE}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00095}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{00095}}\ \textcolor{preprocessor}{\#define\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ 2\ \ \ \ \ }\textcolor{comment}{///<\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений\ (по\ умолчанию\ 2)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00097}00097\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00098}00098\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00099}00099\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00102}\mbox{\hyperlink{struct_gen_optimizer__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00103}\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{00103}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Коэффициент\ насколько\ стабильная\ популяция\ (0..1)(@ref\ n\_cand)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00104}00104\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00105}\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{00105}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00106}\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{00106}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов\ в\ популяции}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00107}\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{00107}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00108}\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{00108}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ (0..1)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00109}00109\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00110}\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{00110}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ текущего\ кандидата}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00111}\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{00111}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ популяции\ \ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00112}00112\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00113}00113\ \ \ \textcolor{comment}{//INTERNAL}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00114}\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{00114}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ у\ текущей\ популяции\ \ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00115}00115\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00116}\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{00116}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00117}\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{00117}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}}];\ \textcolor{comment}{///<\ Параметры\ кандидатов}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00118}\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{00118}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00119}00119\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00087}00087\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MIN\_PCT}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00088}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{00088}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MIN\_PCT\ \ \ 10\ \ \ \ }\textcolor{comment}{///<\ Минимальная\ мутация\ (в\ процентах\ от\ Loss)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00089}00089\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00090}00090\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MAX\_PCT}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00091}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{00091}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MAX\_PCT\ \ \ 100\ \ \ }\textcolor{comment}{///<\ Максимальная\ мутация\ (в\ процентах\ от\ Loss)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00092}00092\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00093}00093\ \textcolor{preprocessor}{\#ifndef\ ELOVLE\_N\_ELITE\_CANDIDATE}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00094}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{00094}}\ \textcolor{preprocessor}{\#define\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ 2\ \ \ \ \ }\textcolor{comment}{///<\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений\ (по\ умолчанию\ 2)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00095}00095\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00096}00096\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00097}00097\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00098}00098\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00099}00099\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00101}\mbox{\hyperlink{struct_gen_optimizer__t}{00101}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00102}\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{00102}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Коэффициент\ насколько\ стабильная\ популяция\ (0..1)(@ref\ n\_cand)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00103}00103\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00104}\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{00104}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00105}\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{00105}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов\ в\ популяции}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00106}\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{00106}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00107}\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{00107}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ (0..1)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00108}00108\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00109}\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{00109}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00110}\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{00110}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ популяции\ \ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00111}00111\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00112}00112\ \ \ \textcolor{comment}{//INTERNAL}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00113}\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{00113}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ у\ текущей\ популяции\ \ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00114}00114\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00115}\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{00115}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00116}\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{00116}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}}];\ \textcolor{comment}{///<\ Параметры\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00117}\mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{00117}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\_idx}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00118}00118\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00119}00119\ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00120}00120\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00121}00121\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00122}00122\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00123}00123\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00124}00124\ \textcolor{comment}{\ *\ @cond\ GEN\_INTERNAL}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00125}00125\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00126}00126\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00127}00127\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00128}00128\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00129}00129\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00130}00130\ \textcolor{comment}{//\ функция\ условия\ сортировки}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00131}00131\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00133}00133\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00134}00134\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00135}00135\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00136}00136\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00137}00137\ \}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00138}00138\ \textcolor{comment}{/**\ @endcond\ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00121}00121\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00122}00122\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00123}00123\ \textcolor{comment}{\ *\ @cond\ GEN\_INTERNAL}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00124}00124\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00125}00125\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00126}00126\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00127}00127\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00128}00128\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00129}00129\ \textcolor{comment}{//\ функция\ условия\ сортировки}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00130}00130\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00131}00131\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00132}00132\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00133}00133\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00134}00134\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00135}00135\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00136}00136\ \}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00137}00137\ \textcolor{comment}{/**\ @endcond\ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00138}00138\ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00139}00139\ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00140}00140\ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00141}00141\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00142}00142\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00143}00143\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00144}00144\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00148}00148\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00149}00149\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00150}00150\ \textcolor{comment}{\ \ *\ @param\ mutation\_amp\ Амплитуда\ мутации\ (в\ диапазоне\ 0.0–1.0)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00151}00151\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (в\ диапазоне\ 0.0–1.0)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00152}00152\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00153}00153\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00154}00154\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00155}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{00155}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{GenOptimizer\_Init}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00156}00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ mutation\_amp,} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ start\_params)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00161}00161\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (start\_params\ ==\ NULL))} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00163}00163\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00164}00164\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00165}00165\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00166}00166\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00167}00167\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}}\ \ \ \ \ =\ n\_params;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00168}00168\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00169}00169\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00170}00170\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00171}00171\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00172}00172\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00173}00173\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00174}00174\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00175}00175\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00142}00142\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00143}00143\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00148}00148\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00149}00149\ \textcolor{comment}{\ \ *\ @param\ mutation\_amp\ Амплитуда\ мутации\ (в\ диапазоне\ 0.0–1.0)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00150}00150\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (в\ диапазоне\ 0.0–1.0)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00151}00151\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00152}00152\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00153}00153\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00154}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{00154}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{GenOptimizer\_Init}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00155}00155\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00156}00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ mutation\_amp,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ start\_params)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00160}00160\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00161}00161\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (start\_params\ ==\ NULL))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00162}00162\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00163}00163\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00164}00164\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00165}00165\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00166}00166\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}}\ \ \ \ \ =\ n\_params;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00167}00167\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00168}00168\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00169}00169\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00170}00170\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00171}00171\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00172}00172\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00173}00173\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00174}00174\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00175}00175\ \ \ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00176}00176\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00177}00177\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00178}00178\ \ \ \textcolor{keywordflow}{if}((mutation\_amp\ >\ 1)\ ||\ (mutation\_amp\ <\ 0))} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00179}00179\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00180}00180\ \ \ \textcolor{keywordflow}{if}(mutation\_amp\ <=\ 0.001f)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00181}00181\ \ \ \ \ mutation\_amp\ =\ 0.001f;\ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00182}00182\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}}\ \ =\ mutation\_amp;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00183}00183\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00184}00184\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}();} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00185}00185\ \textcolor{preprocessor}{\#ifdef\ ADC1}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00186}00186\ \ \ seed\ +=\ (ADC1-\/>DR\ \&\ 0xFF);} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00187}00187\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00188}00188\ \ \ srand(seed);} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00189}00189\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00191}00191\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00192}00192\ \ \ \ \ \ \ \textcolor{comment}{//\ Добавляем\ случайную\ мутацию\ вокруг\ стартового\ параметра}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00193}00193\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ base\ =\ start\_params[j];} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00194}00194\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00195}00195\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ mutation\_amp;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00196}00196\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ base\ +\ noise;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00197}00197\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00198}00198\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00199}00199\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00200}00200\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[i]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00201}00201\ \ \ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00202}00202\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00203}00203\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00204}00204\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00205}00205\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00206}00206\ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00207}00207\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00208}00208\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00209}00209\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00210}00210\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00211}00211\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00219}00219\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00220}00220\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00223}00223\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00224}00224\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00225}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{00225}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{GenOptimizer\_Step}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00226}00226\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ params,} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00227}00227\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ loss)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00228}00228\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00229}00229\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (params\ ==\ NULL))} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00230}00230\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00231}00231\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00232}00232\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00233}00233\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00234}00234\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00235}00235\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00236}00236\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00237}00237\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00238}00238\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00239}00239\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00240}00240\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00241}00241\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00242}00242\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00243}00243\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00244}00244\ \ \ \textcolor{keywordtype}{float}\ \ \ \ mut\ \ \ \ \ \ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00245}00245\ \ \ \textcolor{keywordflow}{if}((mut\ >\ 1)\ ||(mut\ <\ 0))} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00246}00246\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00247}00247\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00248}00248\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00249}00249\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}]\ =\ loss;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00250}00250\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}++;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00251}00251\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00252}00252\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ >=\ n\_cand)\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00253}00253\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00254}00254\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ i++)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00255}00255\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[i]\ =\ i;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00256}00256\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00257}00257\ \ \ \ \ g\_sort\_opt\ =\ opt;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00258}00258\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00259}00259\ \ \ \ \ g\_sort\_opt\ =\ NULL;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00260}00260\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00261}00261\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Адаптивная\ мутация\ в\ зависимости\ от\ Loss\ -\/-\/-\/}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00262}00262\ \ \ \ \ \textcolor{keywordtype}{float}\ best\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[0]];} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00263}00263\ \ \ \ \ \textcolor{keywordtype}{float}\ worst\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ -\/\ 1]];} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00264}00264\ \ \ \ \ \textcolor{keywordtype}{float}\ diff\ =\ worst\_loss\ -\/\ best\_loss;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00265}00265\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00266}00266\ \ \ \ \ \textcolor{keywordtype}{float}\ sum\_loss\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00267}00267\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00268}00268\ \ \ \ \ \ \ sum\_loss\ +=\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[i];} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00269}00269\ \ \ \ \ \textcolor{keywordtype}{float}\ avg\_loss\ =\ sum\_loss\ /\ (float)n\_cand;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00177}00177\ \ \ \textcolor{keywordflow}{if}((mutation\_amp\ >\ 1)\ ||\ (mutation\_amp\ <\ 0))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00178}00178\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00179}00179\ \ \ \textcolor{keywordflow}{if}(mutation\_amp\ <=\ 0.001f)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00180}00180\ \ \ \ \ mutation\_amp\ =\ 0.001f;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00181}00181\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}}\ \ =\ mutation\_amp;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00182}00182\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00183}00183\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}();} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00184}00184\ \textcolor{preprocessor}{\#ifdef\ ADC1}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00185}00185\ \ \ seed\ +=\ (ADC1-\/>DR\ \&\ 0xFF);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00186}00186\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00187}00187\ \ \ srand(seed);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00188}00188\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00189}00189\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00190}00190\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00191}00191\ \ \ \ \ \ \ \textcolor{comment}{//\ Добавляем\ случайную\ мутацию\ вокруг\ стартового\ параметра}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00192}00192\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ base\ =\ start\_params[j];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00193}00193\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00194}00194\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ mutation\_amp;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00195}00195\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[i][j]\ =\ base\ +\ noise;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00196}00196\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[i][j]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[i][j]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00197}00197\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[i][j]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[i][j]\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00198}00198\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00199}00199\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[i]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00200}00200\ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00201}00201\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00202}00202\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00203}00203\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00204}00204\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00205}00205\ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00206}00206\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00207}00207\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00208}00208\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00209}00209\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00210}00210\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00211}00211\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00219}00219\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00220}00220\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00223}00223\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00224}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{00224}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{GenOptimizer\_Step}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00225}00225\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ params,} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00226}00226\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ loss)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00227}00227\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00228}00228\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (params\ ==\ NULL))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00229}00229\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00230}00230\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00231}00231\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00232}00232\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00233}00233\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00234}00234\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00235}00235\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00236}00236\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00237}00237\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00238}00238\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00239}00239\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00240}00240\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00241}00241\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00242}00242\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00243}00243\ \ \ \textcolor{keywordtype}{float}\ \ \ \ mut\ \ \ \ \ \ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00244}00244\ \ \ \textcolor{keywordflow}{if}((mut\ >\ 1)\ ||(mut\ <\ 0))} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00245}00245\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00246}00246\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00247}00247\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00248}00248\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}]\ =\ loss;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00249}00249\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}++;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00250}00250\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00251}00251\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ >=\ n\_cand)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00252}00252\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00253}00253\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00254}00254\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\_idx}}[i]\ =\ i;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00255}00255\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00256}00256\ \ \ \ \ g\_sort\_opt\ =\ opt;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00257}00257\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00258}00258\ \ \ \ \ g\_sort\_opt\ =\ NULL;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00259}00259\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00260}00260\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Адаптивная\ мутация\ в\ зависимости\ от\ Loss\ -\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00261}00261\ \ \ \ \ \textcolor{keywordtype}{float}\ best\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\_idx}}[0]];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00262}00262\ \ \ \ \ \textcolor{keywordtype}{float}\ worst\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\_idx}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ -\/\ 1]];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00263}00263\ \ \ \ \ \textcolor{keywordtype}{float}\ diff\ =\ worst\_loss\ -\/\ best\_loss;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00264}00264\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00265}00265\ \ \ \ \ \textcolor{keywordtype}{float}\ sum\_loss\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00266}00266\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00267}00267\ \ \ \ \ \ \ sum\_loss\ +=\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[i];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00268}00268\ \ \ \ \ \textcolor{keywordtype}{float}\ avg\_loss\ =\ sum\_loss\ /\ (float)n\_cand;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00269}00269\ \ \ \ \ } \DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00270}00270\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00271}00271\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordtype}{float}\ loss\_ratio\ =\ (diff\ >\ 0.0f)\ ?\ ((avg\_loss\ -\/\ best\_loss)\ /\ diff)\ :\ 0.5f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00273}00273\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ <\ 0.0f)\ loss\_ratio\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00274}00274\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ >\ 1.0f)\ loss\_ratio\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00275}00275\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00276}00276\ \ \ \ \ \textcolor{comment}{//\ Записываем\ стабильность\ популяции\ в\ структуру}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00277}00277\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ <\ 0.0f)\ diff\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00278}00278\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ >\ 1.0f)\ diff\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00279}00279\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ (1.0f\ -\/\ worst\_loss)\ *\ (1.0f\ -\/\ (worst\_loss\ -\/\ best\_loss));} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00282}00282\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00283}00283\ \ \ \ \ \textcolor{keywordtype}{float}\ mut\_pct\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}}\ +} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00284}00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\_MUTATION\_MAX\_PCT}}\ -\/\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}})\ *\ loss\_ratio;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00285}00285\ \ \ \ \ \textcolor{keywordtype}{float}\ adaptive\_mut\ =\ mut\ *\ (mut\_pct\ /\ 100.0f);} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00286}00286\ \ \ \ \ \textcolor{keywordflow}{if}\ (adaptive\_mut\ <\ 0.0001f)\ adaptive\_mut\ =\ 0.0001f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00287}00287\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}}\ =\ adaptive\_mut;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00288}00288\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00289}00289\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00290}00290\ \ \ \ \ uint16\_t\ n\_elite\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\_N\_ELITE\_CANDIDATE}};} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00291}00291\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00292}00292\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00293}00293\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00294}00294\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[c]][i];} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00295}00295\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[c]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00296}00296\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00297}00297\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00298}00298\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00299}00299\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ adaptive\_mut;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00300}00300\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}];} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00301}00301\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[parent][i]\ +\ noise;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00302}00302\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00303}00303\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ 1.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00304}00304\ \ \ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00305}00305\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[c]\ =\ 0.0f;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00306}00306\ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00307}00307\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00308}00308\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00309}00309\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}++;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00310}00310\ \ \ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00311}00311\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00312}00312\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00313}00313\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ i++)} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00314}00314\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}][i];} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00315}00315\ \ \ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00316}00316\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00317}00317\ \}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00318}00318\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00319}00319\ \textcolor{comment}{//заглушки}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00320}00320\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00321}00321\ \ \ uint16\_t\ n\_params;\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00322}00322\ \ \ uint16\_t\ n\_cand;\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00323}00323\ \ \ uint16\_t\ n\_best;\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00324}00324\ \ \ \textcolor{keywordtype}{float}\ mutation\_amp;\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00325}00325\ \ \ \textcolor{keywordtype}{float}\ loss[0];\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00326}00326\ \ \ \textcolor{keywordtype}{float}\ candidates[0][0];\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00327}00327\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00328}00328\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ mutation\_amp,\ start\_params)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00329}00329\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Step(opt,\ params,\ LossFunc)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00330}00330\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ (x)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00331}00331\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \ \ \ \ (val)}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00332}00332\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00333}00333\ } -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00334}00334\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_GEN\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00335}00335\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00336}00336\ \textcolor{comment}{/**\ GEN\_OPTIMIZER}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00337}00337\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00338}00338\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00271}00271\ \ \ \ \ \textcolor{keywordtype}{float}\ loss\_ratio\ =\ (diff\ >\ 0.0f)\ ?\ ((avg\_loss\ -\/\ best\_loss)\ /\ diff)\ :\ 0.5f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ <\ 0.0f)\ loss\_ratio\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00273}00273\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ >\ 1.0f)\ loss\_ratio\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00274}00274\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00275}00275\ \ \ \ \ \textcolor{comment}{//\ Записываем\ стабильность\ популяции\ в\ структуру}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00276}00276\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ <\ 0.0f)\ diff\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00277}00277\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ >\ 1.0f)\ diff\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00278}00278\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ (1.0f\ -\/\ worst\_loss)\ *\ (1.0f\ -\/\ (worst\_loss\ -\/\ best\_loss));} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00279}00279\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00281}00281\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00282}00282\ \ \ \ \ \textcolor{keywordtype}{float}\ mut\_pct\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}}\ +} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00283}00283\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\_MUTATION\_MAX\_PCT}}\ -\/\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}})\ *\ loss\_ratio;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00284}00284\ \ \ \ \ \textcolor{keywordtype}{float}\ adaptive\_mut\ =\ mut\ *\ (mut\_pct\ /\ 100.0f);} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00285}00285\ \ \ \ \ \textcolor{keywordflow}{if}\ (adaptive\_mut\ <\ 0.0001f)\ adaptive\_mut\ =\ 0.0001f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00286}00286\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}}\ =\ adaptive\_mut;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00287}00287\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00288}00288\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00289}00289\ \ \ \ \ uint16\_t\ n\_elite\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\_N\_ELITE\_CANDIDATE}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00290}00290\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00291}00291\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00292}00292\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00293}00293\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\_idx}}[c]][i];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00294}00294\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[c]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00295}00295\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00296}00296\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00297}00297\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00298}00298\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ adaptive\_mut;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00299}00299\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00300}00300\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[parent][i]\ +\ noise;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00301}00301\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[c][i]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[c][i]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00302}00302\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[c][i]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[c][i]\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00303}00303\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00304}00304\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}}[c]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00305}00305\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00306}00306\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00307}00307\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00308}00308\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}++;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00309}00309\ \ \ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00310}00310\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00311}00311\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00312}00312\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ i++)} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00313}00313\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}][i];} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00314}00314\ \ \ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00315}00315\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00316}00316\ \}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00317}00317\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00318}00318\ \textcolor{comment}{//заглушки}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00319}00319\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00320}00320\ \ \ uint16\_t\ n\_params;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00321}00321\ \ \ uint16\_t\ n\_cand;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00322}00322\ \ \ uint16\_t\ n\_best;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00323}00323\ \ \ \textcolor{keywordtype}{float}\ mutation\_amp;\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00324}00324\ \ \ \textcolor{keywordtype}{float}\ loss[0];\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00325}00325\ \ \ \textcolor{keywordtype}{float}\ candidates[0][0];\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00326}00326\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00327}00327\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ mutation\_amp,\ start\_params)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00328}00328\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Step(opt,\ params,\ LossFunc)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00329}00329\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ (x)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00330}00330\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \ \ \ \ (val)}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00331}00331\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00332}00332\ } +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00333}00333\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_GEN\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00334}00334\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00335}00335\ \textcolor{comment}{/**\ GEN\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00336}00336\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00337}00337\ \textcolor{comment}{\ \ */}} \end{DoxyCode} diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 b/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 index a1ee85e..a4cef7c 100644 --- a/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 +++ b/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 @@ -1 +1 @@ -15b595630eeca30c57a018017bc540ba \ No newline at end of file +6705808550d728844cfae44f809a322b \ No newline at end of file diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf b/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf index 0cab24d..c3a600a 100644 Binary files a/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf and b/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf differ diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex b/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex index 46cb9e6..fea06f9 100644 --- a/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex +++ b/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex @@ -5,12 +5,11 @@ Библиотека для измерения времени/тиков между событиями -Collaboration diagram for Time measurement\+: -\nopagebreak +Collaboration diagram for Time measurement\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=291pt]{group___b_e_n_c_h___t_i_m_e} +\includegraphics[width=286pt]{group___b_e_n_c_h___t_i_m_e} \end{center} \end{figure} \doxysubsubsubsubsection*{Classes} @@ -112,7 +111,7 @@ static \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} \mbox{\hyperl \DoxyCodeLine{uint32\_t\ count\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{BenchTime\_GetCount}}(0);} \end{DoxyCode} - + \end{DoxyParagraph} @@ -131,7 +130,7 @@ void Bench\+Time\+\_\+\+Init (\begin{DoxyParamCaption}\item[{void}]{}{}\end{Doxy -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00111}{111}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00110}{110}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}\index{Time measurement@{Time measurement}!BenchTime\_Start@{BenchTime\_Start}} \index{BenchTime\_Start@{BenchTime\_Start}!Time measurement@{Time measurement}} @@ -157,7 +156,7 @@ uint32\+\_\+t Bench\+Time\+\_\+\+Start (\begin{DoxyParamCaption}\item[{uint8\+\_ \end{DoxyReturn} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00131}{131}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00130}{130}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}\index{Time measurement@{Time measurement}!BenchTime\_End@{BenchTime\_End}} \index{BenchTime\_End@{BenchTime\_End}!Time measurement@{Time measurement}} @@ -181,7 +180,7 @@ uint32\+\_\+t Bench\+Time\+\_\+\+End (\begin{DoxyParamCaption}\item[{uint8\+\_\+ \end{DoxyReturn} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00147}{147}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00146}{146}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}\index{Time measurement@{Time measurement}!BenchTime\_GetMin@{BenchTime\_GetMin}} \index{BenchTime\_GetMin@{BenchTime\_GetMin}!Time measurement@{Time measurement}} @@ -195,7 +194,7 @@ uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Min (\begin{DoxyParamCaption}\item[{uint8\ -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00189}{189}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00188}{188}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}\index{Time measurement@{Time measurement}!BenchTime\_GetMax@{BenchTime\_GetMax}} \index{BenchTime\_GetMax@{BenchTime\_GetMax}!Time measurement@{Time measurement}} @@ -209,7 +208,7 @@ uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Max (\begin{DoxyParamCaption}\item[{uint8\ -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00197}{197}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00196}{196}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}\index{Time measurement@{Time measurement}!BenchTime\_GetAverage@{BenchTime\_GetAverage}} \index{BenchTime\_GetAverage@{BenchTime\_GetAverage}!Time measurement@{Time measurement}} @@ -223,7 +222,7 @@ uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Average (\begin{DoxyParamCaption}\item[{ui -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00205}{205}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00204}{204}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}\index{Time measurement@{Time measurement}!BenchTime\_GetCount@{BenchTime\_GetCount}} \index{BenchTime\_GetCount@{BenchTime\_GetCount}!Time measurement@{Time measurement}} @@ -237,7 +236,7 @@ uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Count (\begin{DoxyParamCaption}\item[{uint -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00215}{215}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00214}{214}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}\index{Time measurement@{Time measurement}!BenchTime\_GetLast@{BenchTime\_GetLast}} \index{BenchTime\_GetLast@{BenchTime\_GetLast}!Time measurement@{Time measurement}} @@ -251,7 +250,7 @@ uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Last (\begin{DoxyParamCaption}\item[{uint8 -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00223}{223}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00222}{222}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}\index{Time measurement@{Time measurement}!BenchTime\_ResetStats@{BenchTime\_ResetStats}} \index{BenchTime\_ResetStats@{BenchTime\_ResetStats}!Time measurement@{Time measurement}} @@ -265,7 +264,7 @@ void Bench\+Time\+\_\+\+Reset\+Stats (\begin{DoxyParamCaption}\item[{uint8\+\_\+ -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00231}{231}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00230}{230}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. @@ -284,5 +283,5 @@ Definition at line \mbox{\hyperlink{bench__time_8h_source_l00231}{231}} of file -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00106}{106}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00105}{105}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 index d0764fb..96b7e88 100644 --- a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -56d577ae2ce4b45bacd111b61cb7554f \ No newline at end of file +b15e6059b024c1bd57db4f03c04931dd \ No newline at end of file diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf index 01802db..d8441b0 100644 Binary files a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf differ diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 index 286061b..eba3690 100644 --- a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -c52cb47284eaa7377e976a0f04f0002e \ No newline at end of file +9bb1fbf15e0d245a5219c269dfcf886b \ No newline at end of file diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf index cde6412..7da37ee 100644 Binary files a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf differ diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex index 9dd509e..c182f06 100644 --- a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex @@ -5,8 +5,7 @@ Макросы и определения для работы с задержками в миллисекундах. -Collaboration diagram for Delays defines\+: -\nopagebreak +Collaboration diagram for Delays defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -65,7 +64,7 @@ Collaboration diagram for Delays defines\+: \end{DoxyNote} -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00080}{80}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00095}{95}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}\index{Delays defines@{Delays defines}!msDelayStart@{msDelayStart}} \index{msDelayStart@{msDelayStart}!Delays defines@{Delays defines}} @@ -91,7 +90,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00080}{80}} of file Используется для реализации неблокирующих задержек. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00098}{98}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00113}{113}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}\index{Delays defines@{Delays defines}!msDelayWhileActive@{msDelayWhileActive}} \index{msDelayWhileActive@{msDelayWhileActive}!Delays defines@{Delays defines}} @@ -131,7 +130,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00098}{98}} of file \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00115}{115}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00130}{130}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}\index{Delays defines@{Delays defines}!msDelayWaitDone@{msDelayWaitDone}} \index{msDelayWaitDone@{msDelayWaitDone}!Delays defines@{Delays defines}} @@ -171,5 +170,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00115}{115}} of file \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00132}{132}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00147}{147}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 index 2db04ea..b989b0c 100644 --- a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -d5db8daac36cb4cc1a3fac830c6bfd88 \ No newline at end of file +48759eae8e94aea68fae58ca8d91b5d1 \ No newline at end of file diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf index 7ab8673..bcea605 100644 Binary files a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf differ diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex index 5d17ae3..5ede620 100644 --- a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex @@ -5,8 +5,7 @@ Дефайны для обработки ошибок -Collaboration diagram for Error Handler defines\+: -\nopagebreak +Collaboration diagram for Error Handler defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -61,7 +60,7 @@ Error\+\_\+\+Handler который будет вызыватся в библи -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00031}{31}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00046}{46}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_1@{check\_null\_ptr\_1}} \index{check\_null\_ptr\_1@{check\_null\_ptr\_1}!Error Handler defines@{Error Handler defines}} @@ -80,7 +79,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00031}{31}} of file -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00038}{38}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00053}{53}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_2@{check\_null\_ptr\_2}} \index{check\_null\_ptr\_2@{check\_null\_ptr\_2}!Error Handler defines@{Error Handler defines}} @@ -99,7 +98,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00038}{38}} of file -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00041}{41}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00056}{56}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_3@{check\_null\_ptr\_3}} \index{check\_null\_ptr\_3@{check\_null\_ptr\_3}!Error Handler defines@{Error Handler defines}} @@ -118,7 +117,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00041}{41}} of file -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00044}{44}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00059}{59}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_4@{check\_null\_ptr\_4}} \index{check\_null\_ptr\_4@{check\_null\_ptr\_4}!Error Handler defines@{Error Handler defines}} @@ -137,7 +136,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00044}{44}} of file -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00047}{47}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00062}{62}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_5@{check\_null\_ptr\_5}} \index{check\_null\_ptr\_5@{check\_null\_ptr\_5}!Error Handler defines@{Error Handler defines}} @@ -156,5 +155,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00047}{47}} of file -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00050}{50}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00065}{65}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. diff --git a/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex b/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex index dc3c7d1..5b88aa7 100644 --- a/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex +++ b/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex @@ -5,8 +5,7 @@ Конфигурация генетического алгоритма обучения -Collaboration diagram for Genetic configs\+: -\nopagebreak +Collaboration diagram for Genetic configs\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 index 63165ab..4f41ea9 100644 --- a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 +++ b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 @@ -1 +1 @@ -ec124a446898cfdeeba090736e9d2802 \ No newline at end of file +117f38e130c123102c33539947be2ce0 \ No newline at end of file diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf index 5b112d2..d7fa5b3 100644 Binary files a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf and b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf differ diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex index 7551dba..9aa2e14 100644 --- a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex +++ b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex @@ -5,12 +5,11 @@ Библиотека для эволюционного подбора параметров -Collaboration diagram for Genetic optimizer\+: -\nopagebreak +Collaboration diagram for Genetic optimizer\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=284pt]{group___g_e_n___o_p_t_i_m_i_z_e_r} +\includegraphics[width=279pt]{group___g_e_n___o_p_t_i_m_i_z_e_r} \end{center} \end{figure} \doxysubsubsubsubsection*{Classes} @@ -96,7 +95,7 @@ static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb92 \DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[3],\ \ 500.0f,\ 5000.0f);} \end{DoxyCode} - + \end{DoxyParagraph} @@ -120,7 +119,7 @@ static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb92 -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00073}{73}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00072}{72}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}\index{Genetic optimizer@{Genetic optimizer}!PARAM\_UNSCALE@{PARAM\_UNSCALE}} \index{PARAM\_UNSCALE@{PARAM\_UNSCALE}!Genetic optimizer@{Genetic optimizer}} @@ -139,7 +138,7 @@ Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00073}{73}} of fil -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00079}{79}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00078}{78}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}\index{Genetic optimizer@{Genetic optimizer}!GEN\_MUTATION\_MIN\_PCT@{GEN\_MUTATION\_MIN\_PCT}} \index{GEN\_MUTATION\_MIN\_PCT@{GEN\_MUTATION\_MIN\_PCT}!Genetic optimizer@{Genetic optimizer}} @@ -153,7 +152,7 @@ Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00079}{79}} of fil -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00089}{89}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00088}{88}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}\index{Genetic optimizer@{Genetic optimizer}!GEN\_MUTATION\_MAX\_PCT@{GEN\_MUTATION\_MAX\_PCT}} \index{GEN\_MUTATION\_MAX\_PCT@{GEN\_MUTATION\_MAX\_PCT}!Genetic optimizer@{Genetic optimizer}} @@ -167,7 +166,7 @@ Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00089}{89}} of fil -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00092}{92}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00091}{91}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}\index{Genetic optimizer@{Genetic optimizer}!ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}} \index{ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}!Genetic optimizer@{Genetic optimizer}} @@ -181,7 +180,7 @@ Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00092}{92}} of fil -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00095}{95}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00094}{94}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. @@ -218,7 +217,7 @@ int Gen\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{ \end{DoxyReturn} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00155}{155}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00154}{154}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}\index{Genetic optimizer@{Genetic optimizer}!GenOptimizer\_Step@{GenOptimizer\_Step}} \index{GenOptimizer\_Step@{GenOptimizer\_Step}!Genetic optimizer@{Genetic optimizer}} @@ -249,5 +248,5 @@ int Gen\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{ \end{DoxyNote} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00225}{225}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00224}{224}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. diff --git a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex index b1d0342..87a3004 100644 --- a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex +++ b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex @@ -5,8 +5,7 @@ Подключение различных модулей библиотеки -Collaboration diagram for Libraries configs\+: -\nopagebreak +Collaboration diagram for Libraries configs\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 b/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 index 4e0e91b..28b87e4 100644 --- a/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 +++ b/Doc/latex/group___m_y_l_i_b_s___a_l_l.md5 @@ -1 +1 @@ -52c11e57bdabafd5d7af3828f403f995 \ No newline at end of file +13c33a8645a936a94af7b6b5cac2a05a \ No newline at end of file diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf b/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf index 7a54923..ede94c6 100644 Binary files a/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf differ diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex b/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex index c36f666..c476cb0 100644 --- a/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex @@ -5,8 +5,7 @@ Все используемые My\+Libs библиотеки -Collaboration diagram for My Libs\+: -\nopagebreak +Collaboration diagram for My Libs\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -18,10 +17,10 @@ Collaboration diagram for My Libs\+: \item \mbox{\hyperlink{group___m_y_l_i_b_s___c_o_n_f_i_g}{Configs}} \begin{DoxyCompactList}\small\item\em Конфигурации для библиотек My\+Libs. \end{DoxyCompactList}\item -\mbox{\hyperlink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools}} +\mbox{\hyperlink{group___m_y_l_i_b_s___t_o_o_l_s}{General Tools}} \begin{DoxyCompactList}\small\item\em Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту \end{DoxyCompactList}\item -\mbox{\hyperlink{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l}{Peripheral}} -\begin{DoxyCompactList}\small\item\em Модули для управления периферией \end{DoxyCompactList}\end{DoxyCompactItemize} +\mbox{\hyperlink{group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s}{Debug Tools}} +\begin{DoxyCompactList}\small\item\em Утилиты для тестирования программы \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} @@ -33,9 +32,8 @@ Collaboration diagram for My Libs\+: \begin{DoxyItemize} \item Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx\+\_\+hal.\+h) \item Подключить другие заголовочные файлы которые общие для всего проекта и должны быть видны -\item -\end{DoxyItemize} \item Подключить \doxylink{mylibs__include_8h}{mylibs\+\_\+include.\+h} туда, где необходим доступ к библиотекам. +\end{DoxyItemize} \end{DoxyItemize}\input{group___m_y_l_i_b_s___c_o_n_f_i_g} -\input{group___m_y_l_i_b_s___d_e_f_i_n_e_s} -\input{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l} +\input{group___m_y_l_i_b_s___t_o_o_l_s} +\input{group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s} diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex index 35e80d3..2853381 100644 --- a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex +++ b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex @@ -5,8 +5,7 @@ Конфигурации для библиотек My\+Libs. -Collaboration diagram for Configs\+: -\nopagebreak +Collaboration diagram for Configs\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.md5 b/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.md5 new file mode 100644 index 0000000..cb91b74 --- /dev/null +++ b/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.md5 @@ -0,0 +1 @@ +e10d808e73658cbf4719fc412f2e0b91 \ No newline at end of file diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.pdf b/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.pdf new file mode 100644 index 0000000..fb44a95 Binary files /dev/null and b/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.pdf differ diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.tex b/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.tex new file mode 100644 index 0000000..cfec081 --- /dev/null +++ b/Doc/latex/group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s.tex @@ -0,0 +1,34 @@ +\doxysubsection{Debug Tools } +\hypertarget{group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s}{}\label{group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s}\index{Debug Tools@{Debug Tools}} + + +Утилиты для тестирования программы + + +Collaboration diagram for Debug Tools\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s} +\end{center} +\end{figure} +\doxysubsubsubsection*{Topics} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e}{Time measurement}} +\begin{DoxyCompactList}\small\item\em Библиотека для измерения времени/тиков между событиями \end{DoxyCompactList}\item +\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r}{Genetic optimizer}} +\begin{DoxyCompactList}\small\item\em Библиотека для эволюционного подбора параметров \end{DoxyCompactList}\item +\mbox{\hyperlink{group___t_r_a_c_e}{Trace defines}} +\begin{DoxyCompactList}\small\item\em Дефайны для работы с трассировкой \end{DoxyCompactList}\item +\mbox{\hyperlink{group___t_r_a_c_k_e_r_s}{Trackers defines}} +\begin{DoxyCompactList}\small\item\em Дефайны для работы с трекерами \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsubsection{Detailed Description} +Утилиты для тестирования программы + +\input{group___b_e_n_c_h___t_i_m_e} +\input{group___g_e_n___o_p_t_i_m_i_z_e_r} +\input{group___t_r_a_c_e} +\input{group___t_r_a_c_k_e_r_s} diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex index da314e2..e46e43e 100644 --- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex @@ -5,8 +5,7 @@ Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту -Collaboration diagram for General Tools\+: -\nopagebreak +Collaboration diagram for General Tools\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 index 2e10e09..a0f8bc3 100644 --- a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 +++ b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.md5 @@ -1 +1 @@ -1044283365b108883d0b7a448ff91792 \ No newline at end of file +01d6066aba098d16d320b5b455fdca4f \ No newline at end of file diff --git a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf index eef90f4..f3f67d2 100644 Binary files a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf differ diff --git a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex index f146bd7..987a0fe 100644 --- a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex @@ -5,31 +5,12 @@ Модули для управления периферией -Collaboration diagram for Peripheral\+: -\nopagebreak +Collaboration diagram for Peripheral\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=331pt]{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l} +\includegraphics[width=226pt]{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l} \end{center} \end{figure} -\doxysubsubsubsection*{Topics} -\begin{DoxyCompactItemize} -\item -\mbox{\hyperlink{group___m_y___l_i_b_s___g_p_i_o}{GPIO Tools}} -\begin{DoxyCompactList}\small\item\em Функции и макросы для удобной работы с GPIO. \end{DoxyCompactList}\item -\mbox{\hyperlink{group___m_y___l_i_b_s___s_p_i}{SPI Tools}} -\begin{DoxyCompactList}\small\item\em Функции и макросы для удобной работы с SPI. \end{DoxyCompactList}\item -\mbox{\hyperlink{group___m_y___l_i_b_s___t_i_m}{TIM Tools}} -\begin{DoxyCompactList}\small\item\em Функции и макросы для удобной работы с TIM. \end{DoxyCompactList}\item -\mbox{\hyperlink{group___m_y___l_i_b_s___u_a_r_t}{UART Tools}} -\begin{DoxyCompactList}\small\item\em Функции и макросы для удобной работы с UART. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsubsection{Detailed Description} Модули для управления периферией -\input{group___m_y___l_i_b_s___g_p_i_o} -\input{group___m_y___l_i_b_s___s_p_i} -\input{group___m_y___l_i_b_s___t_i_m} -\input{group___m_y___l_i_b_s___u_a_r_t} diff --git a/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.md5 b/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.md5 new file mode 100644 index 0000000..a4fbe2d --- /dev/null +++ b/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.md5 @@ -0,0 +1 @@ +78998b4170ecf65af8583f6c3acb669a \ No newline at end of file diff --git a/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.pdf b/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.pdf new file mode 100644 index 0000000..a59ea3d Binary files /dev/null and b/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.pdf differ diff --git a/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.tex b/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.tex new file mode 100644 index 0000000..2b05593 --- /dev/null +++ b/Doc/latex/group___m_y_l_i_b_s___t_o_o_l_s.tex @@ -0,0 +1,35 @@ +\doxysubsection{General Tools } +\hypertarget{group___m_y_l_i_b_s___t_o_o_l_s}{}\label{group___m_y_l_i_b_s___t_o_o_l_s}\index{General Tools@{General Tools}} + + +Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту + + +Collaboration diagram for General Tools\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{group___m_y_l_i_b_s___t_o_o_l_s} +\end{center} +\end{figure} +\doxysubsubsubsection*{Topics} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines}} +\begin{DoxyCompactList}\small\item\em Макросы и typedef\textquotesingle{}ы для работы с битами в unsigned типах. \end{DoxyCompactList}\item +\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}{Error Handler defines}} +\begin{DoxyCompactList}\small\item\em Дефайны для обработки ошибок \end{DoxyCompactList}\item +\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines}} +\begin{DoxyCompactList}\small\item\em Макросы и определения для работы с задержками в миллисекундах. \end{DoxyCompactList}\item +\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s}{Utils defines}} +\begin{DoxyCompactList}\small\item\em Общие вспомогательные макросы \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsubsection{Detailed Description} +Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту + +\input{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s} +\input{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s} +\input{group___d_e_l_a_y_s___d_e_f_i_n_e_s} +\input{group___u_t_i_l_s___d_e_f_i_n_e_s} diff --git a/Doc/latex/group___t_r_a_c_e.md5 b/Doc/latex/group___t_r_a_c_e.md5 index 940cd9f..daf1d70 100644 --- a/Doc/latex/group___t_r_a_c_e.md5 +++ b/Doc/latex/group___t_r_a_c_e.md5 @@ -1 +1 @@ -231806d9df0ebec28cd371e85eb1e78c \ No newline at end of file +d398645521a6e65c12178c326d8a6a8c \ No newline at end of file diff --git a/Doc/latex/group___t_r_a_c_e.pdf b/Doc/latex/group___t_r_a_c_e.pdf index 81dcda3..7d90a92 100644 Binary files a/Doc/latex/group___t_r_a_c_e.pdf and b/Doc/latex/group___t_r_a_c_e.pdf differ diff --git a/Doc/latex/group___t_r_a_c_e.tex b/Doc/latex/group___t_r_a_c_e.tex index f560dde..3dbdd57 100644 --- a/Doc/latex/group___t_r_a_c_e.tex +++ b/Doc/latex/group___t_r_a_c_e.tex @@ -5,8 +5,7 @@ Дефайны для работы с трассировкой -Collaboration diagram for Trace defines\+: -\nopagebreak +Collaboration diagram for Trace defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex index 56fbc09..cf8e2ac 100644 --- a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex +++ b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex @@ -5,8 +5,7 @@ Конфигурация трекеров и трассировки -Collaboration diagram for Trace configs\+: -\nopagebreak +Collaboration diagram for Trace configs\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex index ab8a01f..c212f44 100644 --- a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex +++ b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex @@ -5,8 +5,7 @@ Дефайны для работы с GPIO трассировкой -Collaboration diagram for GPIO trace defines\+: -\nopagebreak +Collaboration diagram for GPIO trace defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -63,7 +62,7 @@ Collaboration diagram for GPIO trace defines\+: \item GPIO\+\_\+\+TRACE\+\_\+\+ENABLE определён -\/ устанавливает бит сброса через BSRR (({\itshape pin})\texorpdfstring{$<$}{<}\texorpdfstring{$<$}{<}16) \end{DoxyItemize} -Definition at line \mbox{\hyperlink{trace_8h_source_l00155}{155}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00154}{154}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}\index{GPIO trace defines@{GPIO trace defines}!TRACE\_GPIO\_SET@{TRACE\_GPIO\_SET}} \index{TRACE\_GPIO\_SET@{TRACE\_GPIO\_SET}!GPIO trace defines@{GPIO trace defines}} @@ -93,5 +92,5 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00155}{155}} of file \mbox{ \item GPIO\+\_\+\+TRACE\+\_\+\+ENABLE определён -\/ устанавливает бит установки через BSRR ({\itshape pin}) \end{DoxyItemize} -Definition at line \mbox{\hyperlink{trace_8h_source_l00154}{154}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00153}{153}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex index dbb5af5..552f40f 100644 --- a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex +++ b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex @@ -5,8 +5,7 @@ Модуль трассировки Hard\+Fault с возможностью сохранения RTT буфера во Flash. -Collaboration diagram for Hardfault trace defines\+: -\nopagebreak +Collaboration diagram for Hardfault trace defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -30,7 +29,7 @@ struct \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\ \item static \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}{stack\+\_\+frame}} \item -static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}{stack\+\_\+dump}} \mbox{[}32\mbox{]} +static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga9edcd42163bfdaa30a8bb801d2668244}{stack\+\_\+dump}} \mbox{[}\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b}{HF\+\_\+\+STACK\+\_\+\+DUMP\+\_\+\+WORDS}}\mbox{]} \item static void \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}{ret\+\_\+adr}} \mbox{[}10\mbox{]} = \{0\} \end{DoxyCompactItemize} @@ -115,7 +114,7 @@ int \end{DoxyNote} -Definition at line \mbox{\hyperlink{trace_8h_source_l00499}{499}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00498}{498}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}\index{Hardfault trace defines@{Hardfault trace defines}!HF\_HandleFault@{HF\_HandleFault}} \index{HF\_HandleFault@{HF\_HandleFault}!Hardfault trace defines@{Hardfault trace defines}} @@ -142,7 +141,7 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00499}{499}} of file \mbox{ \end{DoxyNote} -Definition at line \mbox{\hyperlink{trace_8h_source_l00540}{540}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00539}{539}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. @@ -157,17 +156,17 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00540}{540}} of file \mbox{ -Definition at line \mbox{\hyperlink{trace_8h_source_l00523}{523}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00522}{522}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}\index{Hardfault trace defines@{Hardfault trace defines}!stack\_dump@{stack\_dump}} +\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga9edcd42163bfdaa30a8bb801d2668244}\index{Hardfault trace defines@{Hardfault trace defines}!stack\_dump@{stack\_dump}} \index{stack\_dump@{stack\_dump}!Hardfault trace defines@{Hardfault trace defines}} \doxysubsubsubsubsubsection{\texorpdfstring{stack\_dump}{stack\_dump}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7} -uint32\+\_\+t stack\+\_\+dump\mbox{[}32\mbox{]}\hspace{0.3cm}{\ttfamily [static]}} +{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga9edcd42163bfdaa30a8bb801d2668244} +uint32\+\_\+t stack\+\_\+dump\mbox{[}\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b}{HF\+\_\+\+STACK\+\_\+\+DUMP\+\_\+\+WORDS}}\mbox{]}\hspace{0.3cm}{\ttfamily [static]}} -Definition at line \mbox{\hyperlink{trace_8h_source_l00524}{524}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00523}{523}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}\index{Hardfault trace defines@{Hardfault trace defines}!ret\_adr@{ret\_adr}} \index{ret\_adr@{ret\_adr}!Hardfault trace defines@{Hardfault trace defines}} @@ -177,5 +176,5 @@ void\texorpdfstring{$\ast$}{*} ret\+\_\+adr\mbox{[}10\mbox{]} = \{0\}\hspace{0.3 -Definition at line \mbox{\hyperlink{trace_8h_source_l00525}{525}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00524}{524}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. diff --git a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex index 8cf34c6..d1f49f5 100644 --- a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex +++ b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex @@ -5,8 +5,7 @@ Макросы и функции для сохранения/чтения RTT буфера в Flash. -Collaboration diagram for Flash RTT Buffer\+: -\nopagebreak +Collaboration diagram for Flash RTT Buffer\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -72,7 +71,7 @@ struct \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\+\_\+\+Flash\+Header Сбрасывает ошибки Flash и ожидает готовности перед записью -Definition at line \mbox{\hyperlink{trace_8h_source_l00203}{203}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00202}{202}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_SaveToFlash@{RTT\_SaveToFlash}} \index{RTT\_SaveToFlash@{RTT\_SaveToFlash}!Flash RTT Buffer@{Flash RTT Buffer}} @@ -102,7 +101,7 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00203}{203}} of file \mbox{ \item Если конкретный (младший байт != 0) — запись выполняется только с этим тегом, иначе ошибка. \end{DoxyItemize} -Definition at line \mbox{\hyperlink{trace_8h_source_l00227}{227}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00226}{226}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_ReadFromFlash@{RTT\_ReadFromFlash}} \index{RTT\_ReadFromFlash@{RTT\_ReadFromFlash}!Flash RTT Buffer@{Flash RTT Buffer}} @@ -134,7 +133,7 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00227}{227}} of file \mbox{ \item Если конкретный (младший байт != 0) — прочитывается именно эта запись. \end{DoxyItemize} -Definition at line \mbox{\hyperlink{trace_8h_source_l00324}{324}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00323}{323}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_EraseFlash@{RTT\_EraseFlash}} \index{RTT\_EraseFlash@{RTT\_EraseFlash}!Flash RTT Buffer@{Flash RTT Buffer}} @@ -148,5 +147,5 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00324}{324}} of file \mbox{ -Definition at line \mbox{\hyperlink{trace_8h_source_l00388}{388}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00387}{387}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. diff --git a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex index 118d50c..a4491bb 100644 --- a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex +++ b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex @@ -5,8 +5,7 @@ Дефайны для работы с serial трассировкой (SWO, RTT) -Collaboration diagram for Serial trace defines\+: -\nopagebreak +Collaboration diagram for Serial trace defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -30,7 +29,7 @@ Collaboration diagram for Serial trace defines\+: \item \doxylink{group___t_r_a_c_e___c_o_n_f_i_g_ga76936505ca200d2e61226b7ba68f27c6}{SERIAL\+\_\+\+TRACE\+\_\+\+ENABLE} -\/ Если трассировка отключена, то все дефайны определяются как \textquotesingle{}ничего\textquotesingle{} и на производительность кода не влияют \item \doxylink{group___t_r_a_c_e___c_o_n_f_i_g_ga00ff2175bdc1fb11c8ec970ea3010dd8}{RTT\+\_\+\+TRACE\+\_\+\+ENABLE} -\/ для RTT это будет вызов функции SEGGER\+\_\+\+RTT\+\_\+printf() -Предварительно надо подключить библиотеку SEGGER RTT (SEGGER\+\_\+\+RTT.\+h) и вызвать функцию SEGGER\+\_\+\+RTT\+\_\+\+Init() +Предварительно надо подключить библиотеку SEGGER RTT (\doxylink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}) и вызвать функцию SEGGER\+\_\+\+RTT\+\_\+\+Init() \item \doxylink{group___t_r_a_c_e___c_o_n_f_i_g_gab8db9704b5d11858aa879689b9d36336}{SWO\+\_\+\+TRACE\+\_\+\+ENABLE} для SWO это будет просто printf() Предварительно надо подключить библиотеку STDOUT и retarget под ITM\+: @@ -80,7 +79,7 @@ Collaboration diagram for Serial trace defines\+: \item NO\+\_\+\+TRACE -\/ пустой макрос \end{DoxyItemize} -Definition at line \mbox{\hyperlink{trace_8h_source_l00080}{80}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00079}{79}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}\index{Serial trace defines@{Serial trace defines}!log\_printf@{log\_printf}} \index{log\_printf@{log\_printf}!Serial trace defines@{Serial trace defines}} @@ -88,12 +87,6 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00080}{80}} of file \mbox{\ {\footnotesize\ttfamily \label{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26} \#define log\+\_\+printf(\begin{DoxyParamCaption}\item[{}]{TAG}{, }\item[{}]{fmt}{, }\item[{}]{}...{}\end{DoxyParamCaption})} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{\mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n[\%lu]\ [\%s]\ "{}}\ fmt,\ \(\backslash\)} -\DoxyCodeLine{(\textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{long})\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}(),\ TAG,\ \#\#\_\_VA\_ARGS\_\_)} - -\end{DoxyCode} Макрос логирования с поддержкой уровней \doxylink{group___t_r_a_c_e___c_o_n_f_i_g_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}{LOG\+\_\+\+LEVEL}. @@ -124,5 +117,5 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00080}{80}} of file \mbox{\ \end{DoxyItemize} -Definition at line \mbox{\hyperlink{trace_8h_source_l00109}{109}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00106}{106}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.md5 b/Doc/latex/group___t_r_a_c_k_e_r_s.md5 index d924fcc..ad44552 100644 --- a/Doc/latex/group___t_r_a_c_k_e_r_s.md5 +++ b/Doc/latex/group___t_r_a_c_k_e_r_s.md5 @@ -1 +1 @@ -a7565b03babdeb6094e59ffacae9c523 \ No newline at end of file +5e8d7e9fe8d7afc9f2f5dd4a2692dbb0 \ No newline at end of file diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.pdf b/Doc/latex/group___t_r_a_c_k_e_r_s.pdf index 51c35dc..2584b15 100644 Binary files a/Doc/latex/group___t_r_a_c_k_e_r_s.pdf and b/Doc/latex/group___t_r_a_c_k_e_r_s.pdf differ diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.tex b/Doc/latex/group___t_r_a_c_k_e_r_s.tex index e7acd23..e4a5839 100644 --- a/Doc/latex/group___t_r_a_c_k_e_r_s.tex +++ b/Doc/latex/group___t_r_a_c_k_e_r_s.tex @@ -5,12 +5,11 @@ Дефайны для работы с трекерами -Collaboration diagram for Trackers defines\+: -\nopagebreak +Collaboration diagram for Trackers defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=280pt]{group___t_r_a_c_k_e_r_s} +\includegraphics[width=275pt]{group___t_r_a_c_k_e_r_s} \end{center} \end{figure} \doxysubsubsubsubsection*{Macros} @@ -149,7 +148,7 @@ Collaboration diagram for Trackers defines\+: Также есть возможность объявить пользовательские переменные в количестве $<$num\+\_\+user\+\_\+vars$>$ штук. -Definition at line \mbox{\hyperlink{trackers_8h_source_l00070}{70}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00069}{69}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}\index{Trackers defines@{Trackers defines}!num\_of\_usercnts@{num\_of\_usercnts}} \index{num\_of\_usercnts@{num\_of\_usercnts}!Trackers defines@{Trackers defines}} @@ -168,7 +167,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00070}{70}} of file \mbo -Definition at line \mbox{\hyperlink{trackers_8h_source_l00080}{80}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00079}{79}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}\index{Trackers defines@{Trackers defines}!assert\_usertracker@{assert\_usertracker}} \index{assert\_usertracker@{assert\_usertracker}!Trackers defines@{Trackers defines}} @@ -187,7 +186,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00080}{80}} of file \mbo -Definition at line \mbox{\hyperlink{trackers_8h_source_l00082}{82}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00081}{81}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}\index{Trackers defines@{Trackers defines}!if\_assert\_usertracker@{if\_assert\_usertracker}} \index{if\_assert\_usertracker@{if\_assert\_usertracker}!Trackers defines@{Trackers defines}} @@ -206,7 +205,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00082}{82}} of file \mbo -Definition at line \mbox{\hyperlink{trackers_8h_source_l00084}{84}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00083}{83}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}\index{Trackers defines@{Trackers defines}!tern\_assert\_usertracker@{tern\_assert\_usertracker}} \index{tern\_assert\_usertracker@{tern\_assert\_usertracker}!Trackers defines@{Trackers defines}} @@ -225,7 +224,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00084}{84}} of file \mbo -Definition at line \mbox{\hyperlink{trackers_8h_source_l00086}{86}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00085}{85}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}\index{Trackers defines@{Trackers defines}!TrackerGet\_Ok@{TrackerGet\_Ok}} \index{TrackerGet\_Ok@{TrackerGet\_Ok}!Trackers defines@{Trackers defines}} @@ -244,7 +243,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00086}{86}} of file \mbo -Definition at line \mbox{\hyperlink{trackers_8h_source_l00090}{90}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00089}{89}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}\index{Trackers defines@{Trackers defines}!TrackerGet\_Err@{TrackerGet\_Err}} \index{TrackerGet\_Err@{TrackerGet\_Err}!Trackers defines@{Trackers defines}} @@ -263,7 +262,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00090}{90}} of file \mbo -Definition at line \mbox{\hyperlink{trackers_8h_source_l00092}{92}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00091}{91}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}\index{Trackers defines@{Trackers defines}!TrackerGet\_Warn@{TrackerGet\_Warn}} \index{TrackerGet\_Warn@{TrackerGet\_Warn}!Trackers defines@{Trackers defines}} @@ -282,7 +281,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00092}{92}} of file \mbo -Definition at line \mbox{\hyperlink{trackers_8h_source_l00094}{94}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00093}{93}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}\index{Trackers defines@{Trackers defines}!TrackerGet\_User@{TrackerGet\_User}} \index{TrackerGet\_User@{TrackerGet\_User}!Trackers defines@{Trackers defines}} @@ -308,7 +307,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00094}{94}} of file \mbo \end{DoxyNote} -Definition at line \mbox{\hyperlink{trackers_8h_source_l00106}{106}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00105}{105}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}\index{Trackers defines@{Trackers defines}!TrackerCnt\_Ok@{TrackerCnt\_Ok}} \index{TrackerCnt\_Ok@{TrackerCnt\_Ok}!Trackers defines@{Trackers defines}} @@ -327,7 +326,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00106}{106}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00111}{111}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00110}{110}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}\index{Trackers defines@{Trackers defines}!TrackerCnt\_Err@{TrackerCnt\_Err}} \index{TrackerCnt\_Err@{TrackerCnt\_Err}!Trackers defines@{Trackers defines}} @@ -346,7 +345,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00111}{111}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00113}{113}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00112}{112}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}\index{Trackers defines@{Trackers defines}!TrackerCnt\_Warn@{TrackerCnt\_Warn}} \index{TrackerCnt\_Warn@{TrackerCnt\_Warn}!Trackers defines@{Trackers defines}} @@ -365,7 +364,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00113}{113}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00115}{115}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00114}{114}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}\index{Trackers defines@{Trackers defines}!TrackerCnt\_User@{TrackerCnt\_User}} \index{TrackerCnt\_User@{TrackerCnt\_User}!Trackers defines@{Trackers defines}} @@ -384,7 +383,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00115}{115}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00117}{117}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00116}{116}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}\index{Trackers defines@{Trackers defines}!TrackerWrite\_User@{TrackerWrite\_User}} \index{TrackerWrite\_User@{TrackerWrite\_User}!Trackers defines@{Trackers defines}} @@ -403,7 +402,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00117}{117}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00119}{119}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00118}{118}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}\index{Trackers defines@{Trackers defines}!TrackerClear\_All@{TrackerClear\_All}} \index{TrackerClear\_All@{TrackerClear\_All}!Trackers defines@{Trackers defines}} @@ -422,7 +421,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00119}{119}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00122}{122}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00121}{121}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}\index{Trackers defines@{Trackers defines}!TrackerClear\_Ok@{TrackerClear\_Ok}} \index{TrackerClear\_Ok@{TrackerClear\_Ok}!Trackers defines@{Trackers defines}} @@ -441,7 +440,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00122}{122}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00124}{124}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00123}{123}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}\index{Trackers defines@{Trackers defines}!TrackerClear\_Err@{TrackerClear\_Err}} \index{TrackerClear\_Err@{TrackerClear\_Err}!Trackers defines@{Trackers defines}} @@ -460,7 +459,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00124}{124}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00126}{126}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00125}{125}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}\index{Trackers defines@{Trackers defines}!TrackerClear\_Warn@{TrackerClear\_Warn}} \index{TrackerClear\_Warn@{TrackerClear\_Warn}!Trackers defines@{Trackers defines}} @@ -479,7 +478,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00126}{126}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00128}{128}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00127}{127}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}\index{Trackers defines@{Trackers defines}!TrackerClear\_User@{TrackerClear\_User}} \index{TrackerClear\_User@{TrackerClear\_User}!Trackers defines@{Trackers defines}} @@ -498,7 +497,7 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00128}{128}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00130}{130}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00129}{129}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. \Hypertarget{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}\index{Trackers defines@{Trackers defines}!TrackerClear\_UserAll@{TrackerClear\_UserAll}} \index{TrackerClear\_UserAll@{TrackerClear\_UserAll}!Trackers defines@{Trackers defines}} @@ -517,5 +516,5 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00130}{130}} of file \mb -Definition at line \mbox{\hyperlink{trackers_8h_source_l00132}{132}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. +Definition at line \mbox{\hyperlink{trackers_8h_source_l00131}{131}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 index ead6af3..26c4ecb 100644 --- a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 +++ b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.md5 @@ -1 +1 @@ -e4f09128a7c7fea7dcaa8c425861feae \ No newline at end of file +2cc6db69719569eeaf3a77181ade09ce \ No newline at end of file diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf index 6b0c886..1a265b7 100644 Binary files a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf differ diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex index 5797503..c507e80 100644 --- a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex @@ -5,8 +5,7 @@ Общие вспомогательные макросы -Collaboration diagram for Utils defines\+: -\nopagebreak +Collaboration diagram for Utils defines\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -56,7 +55,7 @@ Collaboration diagram for Utils defines\+: \end{DoxyParams} Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00169}{169}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}\index{Utils defines@{Utils defines}!Divide\_Up@{Divide\_Up}} \index{Divide\_Up@{Divide\_Up}!Utils defines@{Utils defines}} @@ -85,7 +84,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} of file \end{DoxyReturn} Если результат деления без остатка\+: он возвращается как есть Если с остатком -\/ округляется вверх -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00165}{165}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00180}{180}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}\index{Utils defines@{Utils defines}!ByteSwap16@{ByteSwap16}} \index{ByteSwap16@{ByteSwap16}!Utils defines@{Utils defines}} @@ -112,7 +111,7 @@ Swap between Little Endian and Big Endian. \end{DoxyReturn} Переключения между двумя типами хранения слова\+: HI-\/\+LO байты и LO-\/\+HI байты. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00188}{188}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. \Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}\index{Utils defines@{Utils defines}!ABS@{ABS}} \index{ABS@{ABS}!Utils defines@{Utils defines}} @@ -139,5 +138,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} of file \end{DoxyReturn} Берет число по модулю. Хз как работает библиотечный abs в stdlib.\+h, мб это быстрее, но вряд ли конечно. -Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00181}{181}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00196}{196}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. diff --git a/Doc/latex/index.tex b/Doc/latex/index.tex index ac123f4..5ab445b 100644 --- a/Doc/latex/index.tex +++ b/Doc/latex/index.tex @@ -1,90 +1,108 @@ -\chapter{My\+Libs } -\hypertarget{index}{}\label{index}\index{MyLibs@{MyLibs}} -\hypertarget{index_overview}{}\doxysection{\texorpdfstring{Обзор}{Обзор}}\label{index_overview} -My\+Libs -\/ это набор библиотек для удобной работы с STM32. +\chapter{Обзор {\ttfamily Extended\+Libs} } +\hypertarget{index}{}\label{index}\index{Обзор $<$tt$>$ExtendedLibs$<$/tt$>$@{Обзор $<$tt$>$ExtendedLibs$<$/tt$>$}} +\label{index_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}% +\Hypertarget{index_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}% -\hypertarget{index_features}{}\doxysubsection{\texorpdfstring{Основные возможности}{Основные возможности}}\label{index_features} -\hypertarget{index_utils_module}{}\doxysubsubsection{\texorpdfstring{Общие утилиты (\protect\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools})}{Общие утилиты ({General Tools})}}\label{index_utils_module} + +Extended\+Libs -\/ это набор библиотек для удобной работы с STM32. Данный субмодуль подключается напрямую из Git и содержит набор вспомогательных библиотек для работы МК, в частности STM32 и SEGGER RTT.\hypertarget{index_основные-возможности}{}\doxysection{\texorpdfstring{Основные возможности}{Основные возможности}}\label{index_основные-возможности} +\hypertarget{index_общие-утилиты-mylibs-ref-mylibs_tools}{}\doxysubsubsection{\texorpdfstring{Общие утилиты My\+Libs (\protect\doxylink{group___m_y_l_i_b_s___t_o_o_l_s}{General Tools})}{Общие утилиты My\+Libs ({General Tools})}}\label{index_общие-утилиты-mylibs-ref-mylibs_tools} \begin{DoxyItemize} -\item Макросы для задержек и утилит (\doxylink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines} и \doxylink{group___u_t_i_l_s___d_e_f_i_n_e_s}{Utils defines}) -\item Трекеры для статистики и отладки (\doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} и \doxylink{group___t_r_a_c_e}{Trace defines}) -\item Эволюционный алгоритм для оптимизации параметров (\doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r}{Genetic optimizer}) +\item Макросы для задержек (\doxylink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines}) +\item Утилиты для работы с всяким (\doxylink{group___u_t_i_l_s___d_e_f_i_n_e_s}{Utils defines}) \item Битовый доступ к регистрам через union (\doxylink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines}) -\end{DoxyItemize}\hypertarget{index_trace_module}{}\doxysubsubsection{\texorpdfstring{Трассировка \protect\doxylink{group___t_r_a_c_e}{Trace defines}}{Трассировка {Trace defines}}}\label{index_trace_module} +\end{DoxyItemize}\hypertarget{index_отладка-ref-mylibs_debug_tools}{}\doxysubsubsection{\texorpdfstring{Отладка\texorpdfstring{$\ast$}{*} (\protect\doxylink{group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s}{Debug Tools})}{Отладка\texorpdfstring{$\ast$}{*} ({Debug Tools})}}\label{index_отладка-ref-mylibs_debug_tools} \begin{DoxyItemize} -\item Serial трассировка через SWO и RTT (\doxylink{group___t_r_a_c_e___s_e_r_i_a_l}{Serial trace defines}) -\item GPIO трассировка для отладки (\doxylink{group___t_r_a_c_e___g_p_i_o}{GPIO trace defines}) -\item Сохранение логов в Flash память (\doxylink{group___t_r_a_c_e___r_t_t___f_l_a_s_h}{Flash RTT Buffer}) -\item Обработка Hard\+Fault с сохранением контекста (\doxylink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t}{Hardfault trace defines}) -\end{DoxyItemize}\hypertarget{index_gpio_module}{}\doxysubsubsection{\texorpdfstring{Модуль GPIO \protect\doxylink{group___m_y___l_i_b_s___g_p_i_o}{GPIO Tools}}{Модуль GPIO {GPIO Tools}}}\label{index_gpio_module} - -\begin{DoxyItemize} -\item Инициализация портов и тактирования (\doxylink{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l}{General tools}) -\item Управление светодиодами (включение/выключение, моргание, плавное затухание) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s}{LED tools}) -\item Работа с кнопками (чтение состояния, фильтрация дребезга) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h}{Switch tools}) -\end{DoxyItemize}\hypertarget{index_tim_module}{}\doxysubsubsection{\texorpdfstring{Модуль таймеров \protect\doxylink{group___m_y___l_i_b_s___t_i_m}{TIM Tools}}{Модуль таймеров {TIM Tools}}}\label{index_tim_module} - -\begin{DoxyItemize} -\item Базовая инициализация таймеров (\doxylink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l}{General tools}) -\item Формирование задержек (блокирующие и неблокирующие) (\doxylink{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y}{Delay tools}) -\item Работа с энкодерами (чтение положения, обработка кнопок) (\doxylink{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r}{Encoder tools}) -\item Настройка ШИМ и Output Compare (\doxylink{group___m_y_l_i_b_s___t_i_m___o_c}{PWM/\+OC Channels tools}) -\end{DoxyItemize}\hypertarget{index_uart_module}{}\doxysubsubsection{\texorpdfstring{Модуль UART \protect\doxylink{group___m_y___l_i_b_s___u_a_r_t}{UART Tools}}{Модуль UART {UART Tools}}}\label{index_uart_module} - -\begin{DoxyItemize} -\item Базовая инициализация UART и его пинов одной функцией (\doxylink{group___m_y___l_i_b_s___u_a_r_t_gab9f07396b778505c934143e89953e154}{UART\+\_\+\+Base\+\_\+\+Init}) -\end{DoxyItemize}\hypertarget{index_spi_module}{}\doxysubsubsection{\texorpdfstring{Модуль SPI \protect\doxylink{group___m_y___l_i_b_s___s_p_i}{SPI Tools}}{Модуль SPI {SPI Tools}}}\label{index_spi_module} - -\begin{DoxyItemize} -\item Базовая инициализация SPI и пинов одной функцией (\doxylink{group___m_y___l_i_b_s___s_p_i_ga0e177e3c57a8fcdc73b5602e72ec66ba}{SPI\+\_\+\+Base\+\_\+\+Init}) -\end{DoxyItemize}\hypertarget{index_structure}{}\doxysubsection{\texorpdfstring{Структура проекта}{Структура проекта}}\label{index_structure} +\item Трассировка (\doxylink{group___t_r_a_c_e}{Trace defines}) +\item Измерение временных интервалов (\doxylink{group___b_e_n_c_h___t_i_m_e}{Time measurement}) +\item Генетический алгоритм для оптимизации параметров (\doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r}{Genetic optimizer}) +\item Трекеры для статистики и отладки (\doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines}) +\end{DoxyItemize} +{\itshape \texorpdfstring{$\ast$}{*}Модули отладки независимы от My\+Libs и могут быть использованы отдельно}\hypertarget{index_структура-библиотеки}{}\doxysection{\texorpdfstring{Структура библиотеки}{Структура библиотеки}}\label{index_структура-библиотеки} +\texorpdfstring{$\ast$}{*}\+Note\+: Файлы начинающиеся с {\ttfamily \+\_\+\+\_\+} и которых нет в этом дереве являются \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}внутренними/непротестированными/недокументированными\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*} \begin{DoxyCode}{0} \DoxyCodeLine{ProjectRoot/} \DoxyCodeLine{├──\ MyLibs/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Общие\ библиотеки,\ независимые\ от\ платформы\ (или\ почти)} \DoxyCodeLine{│\ \ \ ├──\ inc/} -\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ mylibs\_include.h\ \ \ \ \ \#\ Главный\ include\ файл} -\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек} +\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ \_\_mylibs\_include.h\ \ \ \#\ Главный\ include\ файл} +\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ \_\_mylibs\_config.h\ \ \ \ \#\ Конфигурация\ библиотек} \DoxyCodeLine{│\ \ \ │\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы} \DoxyCodeLine{│\ \ \ │\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам} -\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)} +\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)} \DoxyCodeLine{│\ \ \ │\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки} \DoxyCodeLine{│\ \ \ │\ \ \ └──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование} \DoxyCodeLine{│\ \ \ └──\ src/} \DoxyCodeLine{│} -\DoxyCodeLine{├──RTT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Библиотека\ RTT} -\DoxyCodeLine{│\ \ \ ├──\ \_\_SEGGER\_RTT\_Conf.h\ \ \ \ \ \ \#\ Конфигурационный\ файл\ RTT} -\DoxyCodeLine{│\ \ \ ├──\ SEGGER\_RTT.c\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ модуль\ RTT} -\DoxyCodeLine{│\ \ \ ├──\ SEGGER\_RTT.h\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ заголовок\ RTT} -\DoxyCodeLine{│\ \ \ ├──\ SEGGER\_RTT\_ASM\_ARMv7M.S\ \ \#\ Ассемблерная\ оптимизация\ для\ ARMv7M} -\DoxyCodeLine{│\ \ \ └──\ SEGGER\_RTT\_printf.c\ \ \ \ \ \ \#\ Реализация\ printf()\ через\ RTT} -\DoxyCodeLine{│} -\DoxyCodeLine{└──\ STM32\_General\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{preprocessor}{\#\ Работа\ с\ периферией\ STM32}} -\DoxyCodeLine{\ \ \ \ ├──\ inc/} -\DoxyCodeLine{\ \ \ \ │\ \ \ ├──\ general\_gpio.h\ \ \ \ \ \ \ \#\ Работа\ с\ GPIO} -\DoxyCodeLine{\ \ \ \ │\ \ \ ├──\ general\_spi.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ SPI} -\DoxyCodeLine{\ \ \ \ │\ \ \ ├──\ general\_tim.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ таймерами} -\DoxyCodeLine{\ \ \ \ │\ \ \ └──\ general\_uart.h\ \ \ \ \ \ \ \#\ Работа\ с\ UART} -\DoxyCodeLine{\ \ \ \ └──\ src/} -\DoxyCodeLine{\ \ \ \ \ \ \ \ ├──\ general\_gpio.c\ \ \ \ \ \ \ \#\ Реализация\ GPIO} -\DoxyCodeLine{\ \ \ \ \ \ \ \ ├──\ general\_spi.c\ \ \ \ \ \ \ \ \#\ Реализация\ SPI} -\DoxyCodeLine{\ \ \ \ \ \ \ \ ├──\ general\_tim.c\ \ \ \ \ \ \ \ \#\ Реализация\ TIM} -\DoxyCodeLine{\ \ \ \ \ \ \ \ └──\ general\_uart.c\ \ \ \ \ \ \ \#\ Реализация\ UART} +\DoxyCodeLine{└──RTT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Библиотека\ RTT} +\DoxyCodeLine{\ \ \ \ ├──\ \_\_SEGGER\_RTT\_Conf.h\ \ \ \ \ \ \#\ Конфигурационный\ файл\ RTT} +\DoxyCodeLine{\ \ \ \ ├──\ SEGGER\_RTT.c\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ модуль\ RTT} +\DoxyCodeLine{\ \ \ \ ├──\ SEGGER\_RTT.h\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ заголовок\ RTT} +\DoxyCodeLine{\ \ \ \ ├──\ SEGGER\_RTT\_ASM\_ARMv7M.S\ \ \#\ Ассемблерная\ оптимизация\ для\ ARMv7M} +\DoxyCodeLine{\ \ \ \ └──\ SEGGER\_RTT\_printf.c\ \ \ \ \ \ \#\ Реализация\ printf()\ через\ RTT} \end{DoxyCode} -\hypertarget{index_usage_basic}{}\doxysubsection{\texorpdfstring{Использование}{Использование}}\label{index_usage_basic} -Инструкция по подключению\+: +\hypertarget{index_инструкция-по-подключению}{}\doxysection{\texorpdfstring{Инструкция по подключению}{Инструкция по подключению}}\label{index_инструкция-по-подключению} + +\begin{DoxyEnumerate} +\item {\bfseries{Склонируйте субмодуль}} в ваш проект\+: +\end{DoxyEnumerate} + + +\begin{DoxyCode}{0} +\DoxyCodeLine{git\ submodule\ add\ https://git.arktika.cyou/Razvalyaev/STM32\_ExtendedLibs\ path/to/ExtendedLibs} +\DoxyCodeLine{git\ submodule\ update\ -\/-\/init\ -\/-\/recursive} + +\end{DoxyCode} + \begin{DoxyEnumerate} -\item Настройте конфигурацию \doxylink{group___m_y_l_i_b_s___c_o_n_f_i_g}{Configs} в \doxylink{mylibs__config_8h}{mylibs\+\_\+config.\+h} -\item Подключите главный заголовочный файл\+: +\item {\bfseries{Скопируйте файлы конфигурации и главный include}} в отдельную папку в вашем проекте (вне субмодуля) и удалите {\ttfamily \+\_\+\+\_\+}\+: +\end{DoxyEnumerate} + + +\begin{DoxyCode}{0} +\DoxyCodeLine{ProjectRoot/} +\DoxyCodeLine{├──\ Configs/} +\DoxyCodeLine{│\ \ \ ├──\ mylibs\_include.h} +\DoxyCodeLine{│\ \ \ └──\ mylibs\_config.h} +\DoxyCodeLine{│\ \ \ └──\ SEGGER\_RTT\_Conf.h} + +\end{DoxyCode} + + + +\begin{DoxyEnumerate} +\item {\bfseries{Настройте конфигурацию}} под ваш проект\+: +\end{DoxyEnumerate} +\begin{DoxyItemize} +\item {\ttfamily \doxylink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} — задайте нужные параметры библиотек. +\item {\ttfamily \doxylink{mylibs__include_8h}{mylibs\+\_\+include.\+h}} — укажите пути к вашим заголовочным файлам и подключаемым модулям. +\item {\ttfamily \doxylink{_s_e_g_g_e_r___r_t_t___conf_8h_source}{SEGGER\+\_\+\+RTT\+\_\+\+Conf.\+h}} — настройки RTT. +\end{DoxyItemize} +\begin{DoxyEnumerate} +\item {\bfseries{Подключайте библиотеки в вашем коде}} через главный include файл\+: +\end{DoxyEnumerate} + + \begin{DoxyCode}{0} \DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__include_8h}{mylibs\_include.h}}"{}}} \end{DoxyCode} -\item Используйте нужные модули в своем коде. Примеры использования приведены в соответствующей теме -\end{DoxyEnumerate} \ No newline at end of file + + +\begin{DoxyEnumerate} +\item {\bfseries{Обновление библиотеки}}\+: +\end{DoxyEnumerate} + +После обновления субмодуля из Git, исходные файлы библиотеки будут обновлены, но ваши конфиги останутся в целевой папке и не перезапишутся\+: + + +\begin{DoxyCode}{0} +\DoxyCodeLine{git\ submodule\ update\ -\/-\/remote} + +\end{DoxyCode} + \ No newline at end of file diff --git a/Doc/latex/mainpage_8h_source.tex b/Doc/latex/mainpage_8h_source.tex index 194c8be..5877f06 100644 --- a/Doc/latex/mainpage_8h_source.tex +++ b/Doc/latex/mainpage_8h_source.tex @@ -1,7 +1,7 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/mainpage.h} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/mainpage.h} \hypertarget{mainpage_8h_source}{}\label{mainpage_8h_source} \begin{DoxyCode}{0} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00001}00001\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00001}00001\ \textcolor{comment}{/*}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00002}00002\ \textcolor{comment}{@mainpage}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00003}00003\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00004}00004\ \textcolor{comment}{\ }} @@ -14,7 +14,7 @@ \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00011}00011\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00012}00012\ \textcolor{comment}{@subsection\ features\ Основные\ возможности}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00013}00013\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00014}00014\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ (@ref\ MYLIBS\_DEFINES)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00014}00014\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ (@ref\ MYLIBS\_TOOLS)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00015}00015\ \textcolor{comment}{-\/\ Макросы\ для\ задержек\ и\ утилит\ (@ref\ DELAYS\_DEFINES\ и\ @ref\ UTILS\_DEFINES)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00016}00016\ \textcolor{comment}{-\/\ Трекеры\ для\ статистики\ и\ отладки\ \ (@ref\ TRACKERS\ и\ @ref\ TRACE)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00017}00017\ \textcolor{comment}{-\/\ Эволюционный\ алгоритм\ для\ оптимизации\ параметров\ \ (@ref\ GEN\_OPTIMIZER)}} @@ -49,51 +49,57 @@ \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00046}00046\ \textcolor{comment}{ProjectRoot/}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00047}00047\ \textcolor{comment}{├──\ MyLibs/\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Общие\ библиотеки,\ независимые\ от\ платформы\ (или\ почти)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00048}00048\ \textcolor{comment}{│\ \ \ ├──\ inc/}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00049}00049\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ mylibs\_include.h\ \ \ \ \ \#\ Главный\ include\ файл}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00050}00050\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00049}00049\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ \_\_mylibs\_include.h\ \ \ \ \ \#\ Главный\ include\ файл}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00050}00050\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ \_\_mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00051}00051\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00052}00052\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00054}00054\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00055}00055\ \textcolor{comment}{│\ \ \ │\ \ \ └──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00056}00056\ \textcolor{comment}{│\ \ \ └──\ src/}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00057}00057\ \textcolor{comment}{│}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00058}00058\ \textcolor{comment}{├──RTT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Библиотека\ RTT}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00059}00059\ \textcolor{comment}{│\ \ \ ├──\ \_\_SEGGER\_RTT\_Conf.h\ \ \ \ \ \ \#\ Конфигурационный\ файл\ RTT}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00060}00060\ \textcolor{comment}{│\ \ \ ├──\ SEGGER\_RTT.c\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ модуль\ RTT}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00061}00061\ \textcolor{comment}{│\ \ \ ├──\ SEGGER\_RTT.h\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ заголовок\ RTT}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00062}00062\ \textcolor{comment}{│\ \ \ ├──\ SEGGER\_RTT\_ASM\_ARMv7M.S\ \ \#\ Ассемблерная\ оптимизация\ для\ ARMv7M}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00063}00063\ \textcolor{comment}{│\ \ \ └──\ SEGGER\_RTT\_printf.c\ \ \ \ \ \ \#\ Реализация\ printf()\ через\ RTT}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00064}00064\ \textcolor{comment}{│}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00065}00065\ \textcolor{comment}{└──\ STM32\_General\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Работа\ с\ периферией\ STM32}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00066}00066\ \textcolor{comment}{\ \ \ \ ├──\ inc/}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00067}00067\ \textcolor{comment}{\ \ \ \ │\ \ \ ├──\ general\_gpio.h\ \ \ \ \ \ \ \#\ Работа\ с\ GPIO}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00068}00068\ \textcolor{comment}{\ \ \ \ │\ \ \ ├──\ general\_spi.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ SPI}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00069}00069\ \textcolor{comment}{\ \ \ \ │\ \ \ ├──\ general\_tim.h\ \ \ \ \ \ \ \ \#\ Работа\ с\ таймерами}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00070}00070\ \textcolor{comment}{\ \ \ \ │\ \ \ └──\ general\_uart.h\ \ \ \ \ \ \ \#\ Работа\ с\ UART}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00071}00071\ \textcolor{comment}{\ \ \ \ └──\ src/}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00072}00072\ \textcolor{comment}{\ \ \ \ \ \ \ \ ├──\ general\_gpio.c\ \ \ \ \ \ \ \#\ Реализация\ GPIO}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00073}00073\ \textcolor{comment}{\ \ \ \ \ \ \ \ ├──\ general\_spi.c\ \ \ \ \ \ \ \ \#\ Реализация\ SPI}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00074}00074\ \textcolor{comment}{\ \ \ \ \ \ \ \ ├──\ general\_tim.c\ \ \ \ \ \ \ \ \#\ Реализация\ TIM}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00075}00075\ \textcolor{comment}{\ \ \ \ \ \ \ \ └──\ general\_uart.c\ \ \ \ \ \ \ \#\ Реализация\ UART}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00076}00076\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00077}00077\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00078}00078\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00058}00058\ \textcolor{comment}{└──RTT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Библиотека\ RTT}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00059}00059\ \textcolor{comment}{\ \ \ \ ├──\ \_\_SEGGER\_RTT\_Conf.h\ \ \ \ \ \ \#\ Конфигурационный\ файл\ RTT}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00060}00060\ \textcolor{comment}{\ \ \ \ ├──\ SEGGER\_RTT.c\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ модуль\ RTT}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00061}00061\ \textcolor{comment}{\ \ \ \ ├──\ SEGGER\_RTT.h\ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Основной\ заголовок\ RTT}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00062}00062\ \textcolor{comment}{\ \ \ \ ├──\ SEGGER\_RTT\_ASM\_ARMv7M.S\ \ \#\ Ассемблерная\ оптимизация\ для\ ARMv7M}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00063}00063\ \textcolor{comment}{\ \ \ \ └──\ SEGGER\_RTT\_printf.c\ \ \ \ \ \ \#\ Реализация\ printf()\ через\ RTT}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00064}00064\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00065}00065\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00066}00066\ \textcolor{comment}{\#\#\#\#\ Модуль\ GPIO\ @ref\ MY\_LIBS\_GPIO}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00067}00067\ \textcolor{comment}{-\/\ Инициализация\ портов\ и\ тактирования\ (@ref\ MYLIBS\_GPIO\_GENERAL)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00068}00068\ \textcolor{comment}{-\/\ Управление\ светодиодами\ (включение/выключение,\ моргание,\ плавное\ затухание)\ (@ref\ MYLIBS\_GPIO\_LEDS)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00069}00069\ \textcolor{comment}{-\/\ Работа\ с\ кнопками\ (чтение\ состояния,\ фильтрация\ дребезга)\ (@ref\ MYLIBS\_GPIO\_SWITCH)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00070}00070\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00071}00071\ \textcolor{comment}{\#\#\#\#\ Модуль\ таймеров\ @ref\ MY\_LIBS\_TIM}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00072}00072\ \textcolor{comment}{-\/\ Базовая\ инициализация\ таймеров\ (@ref\ MYLIBS\_TIM\_GENERAL)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00073}00073\ \textcolor{comment}{-\/\ Формирование\ задержек\ (блокирующие\ и\ неблокирующие)\ (@ref\ MYLIBS\_TIM\_DELAY)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00074}00074\ \textcolor{comment}{-\/\ Работа\ с\ энкодерами\ (чтение\ положения,\ обработка\ кнопок)\ (@ref\ MYLIBS\_TIM\_ENCODER)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00075}00075\ \textcolor{comment}{-\/\ Настройка\ ШИМ\ и\ Output\ Compare\ (@ref\ MYLIBS\_TIM\_OC)}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00076}00076\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00077}00077\ \textcolor{comment}{\#\#\#\#\ Модуль\ UART\ @ref\ MY\_LIBS\_UART}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00078}00078\ \textcolor{comment}{-\/\ Базовая\ инициализация\ UART\ и\ его\ пинов\ одной\ функцией\ (@ref\ UART\_Base\_Init)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00079}00079\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00080}00080\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00081}00081\ \textcolor{comment}{@subsection\ usage\_basic\ Использование}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00080}00080\ \textcolor{comment}{@subsubsection\ spi\_module\ Модуль\ SPI\ @ref\ MY\_LIBS\_SPI}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00081}00081\ \textcolor{comment}{-\/\ Базовая\ инициализация\ SPI\ и\ пинов\ одной\ функцией\ (@ref\ SPI\_Base\_Init)}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00082}00082\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00083}00083\ \textcolor{comment}{Инструкция\ по\ подключению:}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00083}00083\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00084}00084\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00085}00085\ \textcolor{comment}{1.\ Настройте\ конфигурацию\ @ref\ MYLIBS\_CONFIG\ в\ @ref\ mylibs\_config.h\ }} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00085}00085\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00086}00086\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00087}00087\ \textcolor{comment}{2.\ Подключите\ главный\ заголовочный\ файл:}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00088}00088\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00089}00089\ \textcolor{comment}{\#include\ "{}mylibs\_include.h"{}}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00090}00090\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00091}00091\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00092}00092\ \textcolor{comment}{3.\ Используйте\ нужные\ модули\ в\ своем\ коде.\ Примеры\ использования\ приведены\ в\ соответствующей\ теме}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00093}00093\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00094}00094\ \textcolor{comment}{*/}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00087}00087\ \textcolor{comment}{@subsection\ usage\_basic\ Использование}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00088}00088\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00089}00089\ \textcolor{comment}{Инструкция\ по\ подключению:}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00090}00090\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00091}00091\ \textcolor{comment}{1.\ Настройте\ конфигурацию\ @ref\ MYLIBS\_CONFIG\ в\ @ref\ mylibs\_config.h\ }} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00092}00092\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00093}00093\ \textcolor{comment}{2.\ Подключите\ главный\ заголовочный\ файл:}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00094}00094\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00095}00095\ \textcolor{comment}{\#include\ "{}mylibs\_include.h"{}}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00096}00096\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00097}00097\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00098}00098\ \textcolor{comment}{3.\ Используйте\ нужные\ модули\ в\ своем\ коде.\ Примеры\ использования\ приведены\ в\ соответствующей\ теме}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00099}00099\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00100}00100\ \textcolor{comment}{*/}} \end{DoxyCode} diff --git a/Doc/latex/mylibs__config_8h.tex b/Doc/latex/mylibs__config_8h.tex index 373df53..bdfd47c 100644 --- a/Doc/latex/mylibs__config_8h.tex +++ b/Doc/latex/mylibs__config_8h.tex @@ -1,21 +1,19 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/mylibs\+\_\+config.h File Reference} -\hypertarget{mylibs__config_8h}{}\label{mylibs__config_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/mylibs\+\_\+config.h File Reference} +\hypertarget{mylibs__config_8h}{}\label{mylibs__config_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h}} Конфигурации для библиотек My\+Libs. {\ttfamily \#include "{}stm32f4xx\+\_\+hal.\+h"{}}\newline -Include dependency graph for mylibs\+\_\+config.\+h\+: -\nopagebreak +Include dependency graph for mylibs\+\_\+config.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{mylibs__config_8h__incl} +\includegraphics[width=218pt]{mylibs__config_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/mylibs__config_8h__dep__incl.md5 b/Doc/latex/mylibs__config_8h__dep__incl.md5 index 1088441..c3f1ecf 100644 --- a/Doc/latex/mylibs__config_8h__dep__incl.md5 +++ b/Doc/latex/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -26252fa1f097da1581d5603686501d37 \ No newline at end of file +7a5b1c76e74e0cbe8f5df16324c62ca4 \ No newline at end of file diff --git a/Doc/latex/mylibs__config_8h__dep__incl.pdf b/Doc/latex/mylibs__config_8h__dep__incl.pdf index c6a3764..69d264f 100644 Binary files a/Doc/latex/mylibs__config_8h__dep__incl.pdf and b/Doc/latex/mylibs__config_8h__dep__incl.pdf differ diff --git a/Doc/latex/mylibs__config_8h__incl.md5 b/Doc/latex/mylibs__config_8h__incl.md5 index 4b57b02..9d0bda2 100644 --- a/Doc/latex/mylibs__config_8h__incl.md5 +++ b/Doc/latex/mylibs__config_8h__incl.md5 @@ -1 +1 @@ -d92f2e71156ec00bf573687efd65ec85 \ No newline at end of file +ddd45146c613ec30ece73923bf565590 \ No newline at end of file diff --git a/Doc/latex/mylibs__config_8h__incl.pdf b/Doc/latex/mylibs__config_8h__incl.pdf index 8d7ea2c..ff73c7a 100644 Binary files a/Doc/latex/mylibs__config_8h__incl.pdf and b/Doc/latex/mylibs__config_8h__incl.pdf differ diff --git a/Doc/latex/mylibs__config_8h_source.tex b/Doc/latex/mylibs__config_8h_source.tex index 13d6468..bc7c809 100644 --- a/Doc/latex/mylibs__config_8h_source.tex +++ b/Doc/latex/mylibs__config_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{mylibs\+\_\+config.\+h} -\hypertarget{mylibs__config_8h_source}{}\label{mylibs__config_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h}} +\hypertarget{mylibs__config_8h_source}{}\label{mylibs__config_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_config.h}} \mbox{\hyperlink{mylibs__config_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} diff --git a/Doc/latex/mylibs__defs_8h.tex b/Doc/latex/mylibs__defs_8h.tex index 5185989..235e204 100644 --- a/Doc/latex/mylibs__defs_8h.tex +++ b/Doc/latex/mylibs__defs_8h.tex @@ -1,21 +1,19 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/mylibs\+\_\+defs.h File Reference} -\hypertarget{mylibs__defs_8h}{}\label{mylibs__defs_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/mylibs\+\_\+defs.h File Reference} +\hypertarget{mylibs__defs_8h}{}\label{mylibs__defs_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h}} Заголочный файл для дефайнов библиотеки My\+Libs\+General. {\ttfamily \#include "{}mylibs\+\_\+config.\+h"{}}\newline -Include dependency graph for mylibs\+\_\+defs.\+h\+: -\nopagebreak +Include dependency graph for mylibs\+\_\+defs.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{mylibs__defs_8h__incl} +\includegraphics[width=218pt]{mylibs__defs_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.md5 b/Doc/latex/mylibs__defs_8h__dep__incl.md5 index 186de66..8615071 100644 --- a/Doc/latex/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/latex/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -69bb9960f1fbfb4580bf7e3b97eade6b \ No newline at end of file +f4eca99d81f8e23aa571cb1dc0f41d85 \ No newline at end of file diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.pdf b/Doc/latex/mylibs__defs_8h__dep__incl.pdf index ab88f79..d8225f5 100644 Binary files a/Doc/latex/mylibs__defs_8h__dep__incl.pdf and b/Doc/latex/mylibs__defs_8h__dep__incl.pdf differ diff --git a/Doc/latex/mylibs__defs_8h__incl.md5 b/Doc/latex/mylibs__defs_8h__incl.md5 index 08549bc..fe75a0e 100644 --- a/Doc/latex/mylibs__defs_8h__incl.md5 +++ b/Doc/latex/mylibs__defs_8h__incl.md5 @@ -1 +1 @@ -4877a0c82614795dedf2fb1ec1e645aa \ No newline at end of file +bcea638b5c9ec73e096480b97d84f849 \ No newline at end of file diff --git a/Doc/latex/mylibs__defs_8h__incl.pdf b/Doc/latex/mylibs__defs_8h__incl.pdf index 9d08a7f..a45d2cf 100644 Binary files a/Doc/latex/mylibs__defs_8h__incl.pdf and b/Doc/latex/mylibs__defs_8h__incl.pdf differ diff --git a/Doc/latex/mylibs__defs_8h_source.tex b/Doc/latex/mylibs__defs_8h_source.tex index dceb954..31403ae 100644 --- a/Doc/latex/mylibs__defs_8h_source.tex +++ b/Doc/latex/mylibs__defs_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{mylibs\+\_\+defs.\+h} -\hypertarget{mylibs__defs_8h_source}{}\label{mylibs__defs_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h}} +\hypertarget{mylibs__defs_8h_source}{}\label{mylibs__defs_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_defs.h}} \mbox{\hyperlink{mylibs__defs_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -7,206 +7,221 @@ \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ mylibs\_defs.h}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголочный\ файл\ для\ дефайнов\ библиотеки\ MyLibsGeneral.}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00005}00005\ \textcolor{comment}{**************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00006}00006\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_DEFINES\ \ General\ Tools}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00006}00006\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_TOOLS\ \ General\ Tools}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ MYLIBS\_ALL}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ Общие\ макросы\ и\ typedef'ы,\ используемые\ по\ всему\ проекту}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00009}00009\ \textcolor{comment}{*}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00010}00010\ \textcolor{comment}{*************************************************************************/}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00011}00011\ \textcolor{preprocessor}{\#ifndef\ \_\_MYLIBS\_DEFINES\_H\_}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00012}00012\ \textcolor{preprocessor}{\#define\ \_\_MYLIBS\_DEFINES\_H\_}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00013}00013\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00014}00014\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__config_8h}{mylibs\_config.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00015}00015\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00016}00016\ \textcolor{comment}{/***************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00017}00017\ \textcolor{comment}{******************************ERROR\_HANDLER********************************/}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00018}00018\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00019}00019\ \textcolor{comment}{\ \ *\ @addtogroup\ ERROR\_HANDLER\_DEFINES\ \ \ Error\ Handler\ defines}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00020}00020\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00021}00021\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Дефайны\ для\ обработки\ ошибок}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00022}00022\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00023}00023\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00024}00024\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00025}00025\ \textcolor{comment}{/*\ extern\ Error\_Handler\ from\ main.h\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00026}00026\ \textcolor{keyword}{extern}\ \textcolor{keywordtype}{void}\ Error\_Handler(\textcolor{keywordtype}{void});} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00027}00027\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00028}00028\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00029}00029\ \textcolor{comment}{\ \ *\ @brief\ Error\_Handler\ который\ будет\ вызыватся\ в\ библиотеке}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00030}00030\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00031}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f}{00031}}\ \textcolor{preprocessor}{\#define\ MyLibs\_Error\_Handler(params)\ \ Error\_Handler(params)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00032}00032\ \textcolor{comment}{/*\ If\ error\ handler\ not\ defined\ -\/\ set\ void\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00033}00033\ \textcolor{preprocessor}{\#ifndef\ MyLibs\_Error\_Handler}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00034}00034\ \textcolor{preprocessor}{\#define\ MyLibs\_Error\_Handler(...)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00035}00035\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ MyLibs\_Error\_Handler}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00036}00036\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00037}00037\ \textcolor{comment}{/**\ @brief\ Проверить\ один\ указатель\ на\ NULL\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00038}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9}{00038}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_1(p1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (p1\ ==\ NULL)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00039}00039\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00040}00040\ \textcolor{comment}{/**\ @brief\ Проверить\ два\ указателя\ на\ NULL\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00041}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{00041}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_2(p1,\ p2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ p2\ ==\ NULL))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00010}00010\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_DEBUG\_TOOLS\ \ Debug\ Tools}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00011}00011\ \textcolor{comment}{*\ @ingroup\ \ MYLIBS\_ALL}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00012}00012\ \textcolor{comment}{*\ @brief\ \ \ \ Утилиты\ для\ тестирования\ программы}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00013}00013\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00014}00014\ \textcolor{comment}{*\ @addtogroup\ BENCH\_TIME}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00015}00015\ \textcolor{comment}{*\ @ingroup\ MYLIBS\_DEBUG\_TOOLS\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00016}00016\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00017}00017\ \textcolor{comment}{*\ @addtogroup\ GEN\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00018}00018\ \textcolor{comment}{*\ @ingroup\ MYLIBS\_DEBUG\_TOOLS\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00019}00019\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00020}00020\ \textcolor{comment}{*\ @addtogroup\ TRACE}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00021}00021\ \textcolor{comment}{*\ @ingroup\ MYLIBS\_DEBUG\_TOOLS\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00022}00022\ \textcolor{comment}{*}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00023}00023\ \textcolor{comment}{*\ @addtogroup\ TRACKERS}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00024}00024\ \textcolor{comment}{*\ @ingroup\ MYLIBS\_DEBUG\_TOOLS\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00025}00025\ \textcolor{comment}{*************************************************************************/}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00026}00026\ \textcolor{preprocessor}{\#ifndef\ \_\_MYLIBS\_TOOLS\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00027}00027\ \textcolor{preprocessor}{\#define\ \_\_MYLIBS\_TOOLS\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00028}00028\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00029}00029\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__config_8h}{mylibs\_config.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00030}00030\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00031}00031\ \textcolor{comment}{/***************************************************************************}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00032}00032\ \textcolor{comment}{******************************ERROR\_HANDLER********************************/}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00033}00033\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00034}00034\ \textcolor{comment}{\ \ *\ @addtogroup\ ERROR\_HANDLER\_DEFINES\ \ \ Error\ Handler\ defines}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00035}00035\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_TOOLS}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00036}00036\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Дефайны\ для\ обработки\ ошибок}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00037}00037\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00038}00038\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00039}00039\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00040}00040\ \textcolor{comment}{/*\ extern\ Error\_Handler\ from\ main.h\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00041}00041\ \textcolor{keyword}{extern}\ \textcolor{keywordtype}{void}\ Error\_Handler(\textcolor{keywordtype}{void});} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00042}00042\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00043}00043\ \textcolor{comment}{/**\ @brief\ Проверить\ три\ указателя\ на\ NULL\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00044}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2}{00044}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_3(p1,\ p2,\ p3)\ \ \ \ \ \ \ \ \ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ p3\ ==\ NULL))))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00045}00045\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00046}00046\ \textcolor{comment}{/**\ @brief\ Проверить\ четыре\ указателя\ на\ NULL\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00047}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254}{00047}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_4(p1,\ p2,\ p3,\ p4)\ \ \ \ \ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ ((p3\ ==\ NULL)\ ||\ (p3\ !=\ NULL\ \&\&\ p4\ ==\ NULL))))))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00048}00048\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00049}00049\ \textcolor{comment}{/**\ @brief\ Проверить\ пять\ указателей\ на\ NULL\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00050}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490}{00050}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_5(p1,\ p2,\ p3,\ p4,\ p5)\ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ ((p3\ ==\ NULL)\ ||\ (p3\ !=\ NULL\ \&\&\ ((p4\ ==\ NULL)\ ||\ (p4\ !=\ NULL\ \&\&\ p5\ ==\ NULL))))))))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00043}00043\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00044}00044\ \textcolor{comment}{\ \ *\ @brief\ Error\_Handler\ который\ будет\ вызыватся\ в\ библиотеке}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00045}00045\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00046}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f}{00046}}\ \textcolor{preprocessor}{\#define\ MyLibs\_Error\_Handler(params)\ \ Error\_Handler(params)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00047}00047\ \textcolor{comment}{/*\ If\ error\ handler\ not\ defined\ -\/\ set\ void\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00048}00048\ \textcolor{preprocessor}{\#ifndef\ MyLibs\_Error\_Handler}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00049}00049\ \textcolor{preprocessor}{\#define\ MyLibs\_Error\_Handler(...)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00050}00050\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ MyLibs\_Error\_Handler}} \DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00051}00051\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00052}00052\ \textcolor{comment}{/**\ ERROR\_HANDLER\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00053}00053\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00054}00054\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00055}00055\ \ \ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00056}00056\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00057}00057\ \textcolor{comment}{/***************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00058}00058\ \textcolor{comment}{******************************DELAYS\_DEFINES*******************************/}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00059}00059\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @addtogroup\ DELAYS\_DEFINES\ \ \ \ Delays\ defines}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00062}00062\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Макросы\ и\ определения\ для\ работы\ с\ задержками\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00063}00063\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ Этот\ блок\ содержит\ макросы\ для\ реализации\ задержек\ с\ использованием\ HAL\ или\ FreeRTOS:}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00065}00065\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelay\ \ \ \ \ \ \ \ \ \ \ \ \ —\ простая\ задержка\ заданной\ длительности;}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayStart\ \ \ \ \ \ \ \ —\ сохранение\ текущего\ времени\ начала\ задержки;}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00067}00067\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWhileActive\ \ —\ проверка,\ активна\ ли\ задержка;}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWaitDone\ \ \ \ \ —\ проверка,\ завершена\ ли\ задержка.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ Эти\ макросы\ удобны\ для\ реализации\ неблокирующих\ задержек.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00070}00070\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00071}00071\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00072}00072\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00073}00073\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @def\ msDelay(\_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00075}00075\ \textcolor{comment}{\ \ *\ @brief\ Блокирующая\ задержка\ на\ указанное\ количество\ миллисекунд.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @param\ \_ms\_\ Время\ задержки\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @note\ Использует\ задержку\ через\ @ref\ local\_time\ или\ osDelay\ в\ зависимости\ от\ @ref\ FREERTOS\_DELAY.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00079}00079\ \textcolor{preprocessor}{\#ifdef\ FREERTOS\_DELAY}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00080}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}{00080}}\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ osDelay(\_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00081}00081\ \textcolor{preprocessor}{\#else}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00082}00082\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00083}00083\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00084}00084\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ uint32\_t\ \_start\_\ =\ local\_time();\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00085}00085\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ while\ (local\_time()\ -\/\ \_start\_\ <\ (\_ms\_))\ \{\}\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00086}00086\ \textcolor{preprocessor}{\ \ \ \ \}\ while(0)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00087}00087\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00088}00088\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00089}00089\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00090}00090\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00091}00091\ \textcolor{comment}{\ \ *\ @brief\ Начать\ отсчет\ задержки.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ @param\ \_pvar\_\ Указатель\ на\ переменную\ типа\ uint32\_t\ для\ хранения\ времени\ старта.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00093}00093\ \textcolor{comment}{\ \ *\ @details\ После\ вызова\ этого\ макроса\ переменная\ \_pvar\_\ содержит\ текущее\ количество\ миллисекунд}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ с\ момента\ запуска\ системы\ (@ref\ local\_time).\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00095}00095\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00096}00096\ \textcolor{comment}{\ \ *\ Используется\ для\ реализации\ неблокирующих\ задержек.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00097}00097\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00098}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}{00098}}\ \textcolor{preprocessor}{\#define\ msDelayStart(\_pvar\_)\ \ \ \ \ \ \ \ \ \ \ \ *(\_pvar\_)\ =\ local\_time()}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00099}00099\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00100}00100\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00101}00101\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ активна\ ли\ задержка.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00102}00102\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00103}00103\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (@ref\ msDelayStart).}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00104}00104\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ еще\ активна.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00105}00105\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ завершена.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00106}00106\ \textcolor{comment}{\ *\ @details}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00107}00107\ \textcolor{comment}{\ *\ Возвращает\ true,\ пока\ время\ задержки\ не\ истекло.\ Используется\ в\ проверках,}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00108}00108\ \textcolor{comment}{\ *\ когда\ нужно\ **действовать,\ пока\ задержка\ выполняется**.\ Пример:}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00109}00109\ \textcolor{comment}{\ *\ @code}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00110}00110\ \textcolor{comment}{\ *\ while(msDelayWhileActive(1000,\ \&tick))\ \{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00111}00111\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ другие\ задачи,\ задержка\ не\ блокирует\ поток}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00112}00112\ \textcolor{comment}{\ *\ \}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00113}00113\ \textcolor{comment}{\ *\ @endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00114}00114\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00115}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}{00115}}\ \textcolor{preprocessor}{\#define\ msDelayWhileActive(\_ms\_,\ \_pvar\_)\ \ \ \ (local\_time()\ -\/\ *(\_pvar\_)\ <\ \_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00116}00116\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00117}00117\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00118}00118\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ завершилась\ ли\ задержка.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00119}00119\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00120}00120\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (msDelayStart).}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00121}00121\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ завершена.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00122}00122\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ еще\ активна.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00123}00123\ \textcolor{comment}{\ *\ @details}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00124}00124\ \textcolor{comment}{\ *\ Возвращает\ true,\ когда\ задержка\ уже\ завершена.\ Используется\ в\ проверках,}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00125}00125\ \textcolor{comment}{\ *\ когда\ нужно\ **выполнить\ действие\ только\ после\ окончания\ задержки**.\ Пример:}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00126}00126\ \textcolor{comment}{\ *\ @code}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00127}00127\ \textcolor{comment}{\ *\ if(msDelayWaitDone(1000,\ \&tick))\ \{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00128}00128\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ действие\ после\ завершения\ задержки}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00129}00129\ \textcolor{comment}{\ *\ \}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00130}00130\ \textcolor{comment}{\ *\ @endcode}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00131}00131\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00132}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}{00132}}\ \textcolor{preprocessor}{\#define\ msDelayWaitDone(\_ms\_,\ \_pvar\_)\ \ \ \ (local\_time()\ -\/\ *(\_pvar\_)\ >=\ \_ms\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00133}00133\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00134}00134\ \textcolor{comment}{/**\ DELAYS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00135}00135\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00136}00136\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00137}00137\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00138}00138\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00139}00139\ \textcolor{comment}{/***************************************************************************}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{*******************************UTIL\_DEFINES********************************/}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}00147\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}00151\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00154}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}00155\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}00162\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00165}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}00166\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00173}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}00174\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00181}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}00182\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \textcolor{comment}{/**\ UTILS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00185}00185\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00186}00186\ \ \ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00187}00187\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00188}00188\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00189}00189\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00190}00190\ \textcolor{comment}{\ *\ @cond\ LIBS\_INTERNAL}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00191}00191\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00192}00192\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00193}00193\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\ \textcolor{comment}{//\ переменная\ которой\ присваиваются\ значения,\ которые\ некуда\ присвоить}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00194}00194\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00195}00195\ \textcolor{comment}{/**\ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00196}00196\ \textcolor{comment}{\ \ *\ @brief\ \ Аналог\ HAL\ макроса\ для\ привязки\ DMA\ к\ UART.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00197}00197\ \textcolor{comment}{\ \ *\ @note\ \ \ @ref\ \_\_HAL\_LINKDMA.}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00198}00198\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00199}00199\ \textcolor{preprocessor}{\#define\ \_\_USER\_LINKDMA(\_\_HANDLE\_\_,\ \_\_PPP\_DMA\_FIELD\_\_,\ \_\_DMA\_HANDLE\_\_)\ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00200}00200\ \textcolor{preprocessor}{do\{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00201}00201\ \textcolor{preprocessor}{(\_\_HANDLE\_\_)-\/>\_\_PPP\_DMA\_FIELD\_\_\ =\ (\_\_DMA\_HANDLE\_\_);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00202}00202\ \textcolor{preprocessor}{(\_\_DMA\_HANDLE\_\_)-\/>Parent\ =\ (\_\_HANDLE\_\_);\}\ while(0U)}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00203}00203\ } -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00204}00204\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00205}00205\ \textcolor{comment}{/**\ @endcond\ */}} -\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00206}00206\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_DEFINES\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00052}00052\ \textcolor{comment}{/**\ @brief\ Проверить\ один\ указатель\ на\ NULL\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00053}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9}{00053}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_1(p1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (p1\ ==\ NULL)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00054}00054\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00055}00055\ \textcolor{comment}{/**\ @brief\ Проверить\ два\ указателя\ на\ NULL\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00056}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{00056}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_2(p1,\ p2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ p2\ ==\ NULL))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00057}00057\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00058}00058\ \textcolor{comment}{/**\ @brief\ Проверить\ три\ указателя\ на\ NULL\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00059}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2}{00059}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_3(p1,\ p2,\ p3)\ \ \ \ \ \ \ \ \ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ p3\ ==\ NULL))))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00060}00060\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00061}00061\ \textcolor{comment}{/**\ @brief\ Проверить\ четыре\ указателя\ на\ NULL\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00062}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254}{00062}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_4(p1,\ p2,\ p3,\ p4)\ \ \ \ \ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ ((p3\ ==\ NULL)\ ||\ (p3\ !=\ NULL\ \&\&\ p4\ ==\ NULL))))))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00063}00063\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00064}00064\ \textcolor{comment}{/**\ @brief\ Проверить\ пять\ указателей\ на\ NULL\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00065}\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490}{00065}}\ \textcolor{preprocessor}{\#define\ check\_null\_ptr\_5(p1,\ p2,\ p3,\ p4,\ p5)\ \ ((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ ((p3\ ==\ NULL)\ ||\ (p3\ !=\ NULL\ \&\&\ ((p4\ ==\ NULL)\ ||\ (p4\ !=\ NULL\ \&\&\ p5\ ==\ NULL))))))))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00066}00066\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00067}00067\ \textcolor{comment}{/**\ ERROR\_HANDLER\_DEFINES}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00069}00069\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00070}00070\ \ \ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00071}00071\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00072}00072\ \textcolor{comment}{/***************************************************************************}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00073}00073\ \textcolor{comment}{******************************DELAYS\_DEFINES*******************************/}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00074}00074\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00075}00075\ \textcolor{comment}{\ \ *\ @addtogroup\ DELAYS\_DEFINES\ \ \ \ Delays\ defines}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_TOOLS}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Макросы\ и\ определения\ для\ работы\ с\ задержками\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00078}00078\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ Этот\ блок\ содержит\ макросы\ для\ реализации\ задержек\ с\ использованием\ HAL\ или\ FreeRTOS:}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00080}00080\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelay\ \ \ \ \ \ \ \ \ \ \ \ \ —\ простая\ задержка\ заданной\ длительности;}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00081}00081\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayStart\ \ \ \ \ \ \ \ —\ сохранение\ текущего\ времени\ начала\ задержки;}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00082}00082\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWhileActive\ \ —\ проверка,\ активна\ ли\ задержка;}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00083}00083\ \textcolor{comment}{\ \ *\ -\/\ @ref\ msDelayWaitDone\ \ \ \ \ —\ проверка,\ завершена\ ли\ задержка.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00084}00084\ \textcolor{comment}{\ \ *\ Эти\ макросы\ удобны\ для\ реализации\ неблокирующих\ задержек.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00085}00085\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00086}00086\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00087}00087\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00088}00088\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00089}00089\ \textcolor{comment}{\ \ *\ @def\ msDelay(\_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ @brief\ Блокирующая\ задержка\ на\ указанное\ количество\ миллисекунд.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00091}00091\ \textcolor{comment}{\ \ *\ @param\ \_ms\_\ Время\ задержки\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ @note\ Использует\ задержку\ через\ @ref\ local\_time\ или\ osDelay\ в\ зависимости\ от\ @ref\ FREERTOS\_DELAY.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00093}00093\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifdef\ FREERTOS\_DELAY}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00095}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}{00095}}\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \ \ \ \ \ \ osDelay(\_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00096}00096\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00097}00097\ \textcolor{preprocessor}{\ \ \#define\ msDelay(\_ms\_)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00098}00098\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00099}00099\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ uint32\_t\ \_start\_\ =\ local\_time();\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00100}00100\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ while\ (local\_time()\ -\/\ \_start\_\ <\ (\_ms\_))\ \{\}\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00101}00101\ \textcolor{preprocessor}{\ \ \ \ \}\ while(0)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00102}00102\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00103}00103\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00104}00104\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00105}00105\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00106}00106\ \textcolor{comment}{\ \ *\ @brief\ Начать\ отсчет\ задержки.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00107}00107\ \textcolor{comment}{\ \ *\ @param\ \_pvar\_\ Указатель\ на\ переменную\ типа\ uint32\_t\ для\ хранения\ времени\ старта.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00108}00108\ \textcolor{comment}{\ \ *\ @details\ После\ вызова\ этого\ макроса\ переменная\ \_pvar\_\ содержит\ текущее\ количество\ миллисекунд}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00109}00109\ \textcolor{comment}{\ \ *\ с\ момента\ запуска\ системы\ (@ref\ local\_time).\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00110}00110\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00111}00111\ \textcolor{comment}{\ \ *\ Используется\ для\ реализации\ неблокирующих\ задержек.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00112}00112\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00113}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}{00113}}\ \textcolor{preprocessor}{\#define\ msDelayStart(\_pvar\_)\ \ \ \ \ \ \ \ \ \ \ \ *(\_pvar\_)\ =\ local\_time()}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00114}00114\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00115}00115\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00116}00116\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ активна\ ли\ задержка.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00117}00117\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00118}00118\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (@ref\ msDelayStart).}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00119}00119\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ еще\ активна.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00120}00120\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ завершена.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00121}00121\ \textcolor{comment}{\ *\ @details}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00122}00122\ \textcolor{comment}{\ *\ Возвращает\ true,\ пока\ время\ задержки\ не\ истекло.\ Используется\ в\ проверках,}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00123}00123\ \textcolor{comment}{\ *\ когда\ нужно\ **действовать,\ пока\ задержка\ выполняется**.\ Пример:}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00124}00124\ \textcolor{comment}{\ *\ @code}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00125}00125\ \textcolor{comment}{\ *\ while(msDelayWhileActive(1000,\ \&tick))\ \{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00126}00126\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ другие\ задачи,\ задержка\ не\ блокирует\ поток}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00127}00127\ \textcolor{comment}{\ *\ \}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00128}00128\ \textcolor{comment}{\ *\ @endcode}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00129}00129\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00130}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}{00130}}\ \textcolor{preprocessor}{\#define\ msDelayWhileActive(\_ms\_,\ \_pvar\_)\ \ \ \ (local\_time()\ -\/\ *(\_pvar\_)\ <\ \_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00131}00131\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00132}00132\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00133}00133\ \textcolor{comment}{\ *\ @brief\ Проверяет,\ завершилась\ ли\ задержка.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00134}00134\ \textcolor{comment}{\ *\ @param\ \_ms\_\ Длительность\ задержки\ в\ миллисекундах.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00135}00135\ \textcolor{comment}{\ *\ @param\ \_pvar\_\ Указатель\ на\ переменную,\ в\ которой\ сохранено\ время\ начала\ (msDelayStart).}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00136}00136\ \textcolor{comment}{\ *\ @retval\ 1\ Задержка\ завершена.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00137}00137\ \textcolor{comment}{\ *\ @retval\ 0\ Задержка\ еще\ активна.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00138}00138\ \textcolor{comment}{\ *\ @details}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00139}00139\ \textcolor{comment}{\ *\ Возвращает\ true,\ когда\ задержка\ уже\ завершена.\ Используется\ в\ проверках,}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{\ *\ когда\ нужно\ **выполнить\ действие\ только\ после\ окончания\ задержки**.\ Пример:}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{comment}{\ *\ @code}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{\ *\ if(msDelayWaitDone(1000,\ \&tick))\ \{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ *\ \ \ \ \ //\ выполняем\ действие\ после\ завершения\ задержки}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{\ *\ \}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{\ *\ @endcode}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}{00147}}\ \textcolor{preprocessor}{\#define\ msDelayWaitDone(\_ms\_,\ \_pvar\_)\ \ \ \ (local\_time()\ -\/\ *(\_pvar\_)\ >=\ \_ms\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{/**\ DELAYS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}00151\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}00154\ \textcolor{comment}{/***************************************************************************}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}00155\ \textcolor{comment}{*******************************UTIL\_DEFINES********************************/}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_TOOLS}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}00162\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}00165\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}00166\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00169}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}00170\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}00173\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}00174\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}00178\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00180}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}00181\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}00182\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00185}00185\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00186}00186\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00187}00187\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00188}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00188}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00189}00189\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00190}00190\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00191}00191\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00192}00192\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00193}00193\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00194}00194\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00195}00195\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00196}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00196}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00197}00197\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00198}00198\ \textcolor{comment}{/**\ UTILS\_DEFINES}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00199}00199\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00200}00200\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00201}00201\ \ \ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00202}00202\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00203}00203\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00204}00204\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00205}00205\ \textcolor{comment}{\ *\ @cond\ LIBS\_INTERNAL}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00206}00206\ \textcolor{comment}{\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00207}00207\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00208}00208\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\ \textcolor{comment}{//\ переменная\ которой\ присваиваются\ значения,\ которые\ некуда\ присвоить}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00209}00209\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00210}00210\ \textcolor{comment}{/**\ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00211}00211\ \textcolor{comment}{\ \ *\ @brief\ \ Аналог\ HAL\ макроса\ для\ привязки\ DMA\ к\ UART.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @note\ \ \ @ref\ \_\_HAL\_LINKDMA.}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00213}00213\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00214}00214\ \textcolor{preprocessor}{\#define\ \_\_USER\_LINKDMA(\_\_HANDLE\_\_,\ \_\_PPP\_DMA\_FIELD\_\_,\ \_\_DMA\_HANDLE\_\_)\ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00215}00215\ \textcolor{preprocessor}{do\{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00216}00216\ \textcolor{preprocessor}{(\_\_HANDLE\_\_)-\/>\_\_PPP\_DMA\_FIELD\_\_\ =\ (\_\_DMA\_HANDLE\_\_);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00217}00217\ \textcolor{preprocessor}{(\_\_DMA\_HANDLE\_\_)-\/>Parent\ =\ (\_\_HANDLE\_\_);\}\ while(0U)}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00218}00218\ } +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00219}00219\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00220}00220\ \textcolor{comment}{/**\ @endcond\ */}} +\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00221}00221\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_TOOLS\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/mylibs__include_8h.tex b/Doc/latex/mylibs__include_8h.tex index 13645be..4999f15 100644 --- a/Doc/latex/mylibs__include_8h.tex +++ b/Doc/latex/mylibs__include_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/mylibs\+\_\+include.h File Reference} -\hypertarget{mylibs__include_8h}{}\label{mylibs__include_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/mylibs\+\_\+include.h File Reference} +\hypertarget{mylibs__include_8h}{}\label{mylibs__include_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h}} Заголочный файл для всех библиотек @@ -13,8 +13,7 @@ {\ttfamily \#include "{}gen\+\_\+optimizer.\+h"{}}\newline {\ttfamily \#include "{}\+\_\+\+\_\+general\+\_\+flash.\+h"{}}\newline {\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline -Include dependency graph for mylibs\+\_\+include.\+h\+: -\nopagebreak +Include dependency graph for mylibs\+\_\+include.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -64,7 +63,7 @@ Definition in file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+inclu -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00104}{104}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00099}{99}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_a89ff6c06fc21fb2bbfbf8cbf863316f1}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_Start@{BenchTime\_Start}} \index{BenchTime\_Start@{BenchTime\_Start}!mylibs\_include.h@{mylibs\_include.h}} @@ -79,7 +78,7 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00104}{104}} of f \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00105}{105}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00100}{100}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_adddc120d43a10fad50fbdeeab8d086b5}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_End@{BenchTime\_End}} \index{BenchTime\_End@{BenchTime\_End}!mylibs\_include.h@{mylibs\_include.h}} @@ -94,7 +93,7 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00105}{105}} of f \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00106}{106}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00101}{101}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_a91e352219014c7ea5507bbbe4b15912d}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetMin@{BenchTime\_GetMin}} \index{BenchTime\_GetMin@{BenchTime\_GetMin}!mylibs\_include.h@{mylibs\_include.h}} @@ -109,7 +108,7 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00106}{106}} of f \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00107}{107}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00102}{102}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_ab8103362e89bad95d965ac668284065c}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetMax@{BenchTime\_GetMax}} \index{BenchTime\_GetMax@{BenchTime\_GetMax}!mylibs\_include.h@{mylibs\_include.h}} @@ -124,7 +123,7 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00107}{107}} of f \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00108}{108}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00103}{103}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_a9f82f5ed8cfae31292dc3dca41471dd5}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetAverage@{BenchTime\_GetAverage}} \index{BenchTime\_GetAverage@{BenchTime\_GetAverage}!mylibs\_include.h@{mylibs\_include.h}} @@ -139,7 +138,7 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00108}{108}} of f \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00109}{109}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00104}{104}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_aafbca7155cfc97b68428da2b0b1200ef}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetCount@{BenchTime\_GetCount}} \index{BenchTime\_GetCount@{BenchTime\_GetCount}!mylibs\_include.h@{mylibs\_include.h}} @@ -154,7 +153,7 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00109}{109}} of f \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00110}{110}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00105}{105}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_a9911aa13a8fa67c35a261d1cb3dc11e7}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetLast@{BenchTime\_GetLast}} \index{BenchTime\_GetLast@{BenchTime\_GetLast}!mylibs\_include.h@{mylibs\_include.h}} @@ -169,7 +168,7 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00110}{110}} of f \end{DoxyCode} -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00111}{111}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00106}{106}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. \Hypertarget{mylibs__include_8h_a09b9a6ef9b60605fc0015f6b379d8420}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_ResetStats@{BenchTime\_ResetStats}} \index{BenchTime\_ResetStats@{BenchTime\_ResetStats}!mylibs\_include.h@{mylibs\_include.h}} @@ -179,5 +178,5 @@ Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00111}{111}} of f -Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00112}{112}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. +Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00107}{107}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}. diff --git a/Doc/latex/mylibs__include_8h__incl.md5 b/Doc/latex/mylibs__include_8h__incl.md5 index 0123200..6185a6c 100644 --- a/Doc/latex/mylibs__include_8h__incl.md5 +++ b/Doc/latex/mylibs__include_8h__incl.md5 @@ -1 +1 @@ -64f981d795a52476ad96388f8545ab10 \ No newline at end of file +e67ccbddf49372db817259b2bebf33e7 \ No newline at end of file diff --git a/Doc/latex/mylibs__include_8h__incl.pdf b/Doc/latex/mylibs__include_8h__incl.pdf index f28f26d..f083965 100644 Binary files a/Doc/latex/mylibs__include_8h__incl.pdf and b/Doc/latex/mylibs__include_8h__incl.pdf differ diff --git a/Doc/latex/mylibs__include_8h_source.tex b/Doc/latex/mylibs__include_8h_source.tex index 87fb93e..a36125f 100644 --- a/Doc/latex/mylibs__include_8h_source.tex +++ b/Doc/latex/mylibs__include_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{mylibs\+\_\+include.\+h} -\hypertarget{mylibs__include_8h_source}{}\label{mylibs__include_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h}} +\hypertarget{mylibs__include_8h_source}{}\label{mylibs__include_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/mylibs\_include.h}} \mbox{\hyperlink{mylibs__include_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -18,130 +18,125 @@ \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Сконфигурировать\ mylibs\_config.h:}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00015}00015\ \textcolor{comment}{\ \ -\/\ Подключить\ заголовочный\ файл\ HAL\ библиотеки\ конкретного\ МК\ (напр.\ stm32f4xx\_hal.h)}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00016}00016\ \textcolor{comment}{\ \ -\/\ Подключить\ другие\ заголовочные\ файлы\ которые\ общие\ для\ всего\ проекта\ и\ должны\ быть\ видны}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00017}00017\ \textcolor{comment}{\ \ -\/\ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00018}00018\ \textcolor{comment}{-\/\ Подключить\ mylibs\_include.h\ туда,\ где\ необходим\ доступ\ к\ библиотекам.}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00019}00019\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00020}00020\ \textcolor{comment}{*\ @defgroup\ MYLIBS\_PERIPHERAL\ Peripheral}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00021}00021\ \textcolor{comment}{*\ @ingroup\ \ MYLIBS\_ALL}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00022}00022\ \textcolor{comment}{*\ @brief\ \ \ \ Модули\ для\ управления\ периферией}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00023}00023\ \textcolor{comment}{*}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00024}00024\ \textcolor{comment}{*************************************************************************/}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00025}00025\ \textcolor{preprocessor}{\#ifndef\ \_\_MYLIBS\_INCLUDE\_H\_}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00026}00026\ \textcolor{preprocessor}{\#define\ \_\_MYLIBS\_INCLUDE\_H\_}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00027}00027\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00028}00028\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00029}00029\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00030}00030\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00031}00031\ \textcolor{preprocessor}{\#ifdef\ ARM\_MATH\_CM4}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00032}00032\ \textcolor{preprocessor}{\ \ \#include\ "{}arm\_math.h"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00033}00033\ \textcolor{preprocessor}{\#else}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00034}00034\ \textcolor{preprocessor}{\ \ \#include\ "{}math.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00017}00017\ \textcolor{comment}{\ \ -\/\ Подключить\ mylibs\_include.h\ туда,\ где\ необходим\ доступ\ к\ библиотекам.}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00018}00018\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00019}00019\ \textcolor{comment}{*************************************************************************/}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00020}00020\ \textcolor{preprocessor}{\#ifndef\ \_\_MYLIBS\_INCLUDE\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00021}00021\ \textcolor{preprocessor}{\#define\ \_\_MYLIBS\_INCLUDE\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00022}00022\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00023}00023\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00024}00024\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00025}00025\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00026}00026\ \textcolor{preprocessor}{\#ifdef\ ARM\_MATH\_CM4}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00027}00027\ \textcolor{preprocessor}{\ \ \#include\ "{}arm\_math.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00028}00028\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00029}00029\ \textcolor{preprocessor}{\ \ \#include\ "{}math.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00030}00030\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00031}00031\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00032}00032\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00033}00033\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BIT\_ACCESS\_LIB}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00034}00034\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bit__access_8h}{bit\_access.h}}"{}}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00035}00035\ \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00036}00036\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00037}00037\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00038}00038\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BIT\_ACCESS\_LIB}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00039}00039\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bit__access_8h}{bit\_access.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00040}00040\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00041}00041\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00042}00042\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACKERS\_LIB}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00043}00043\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trackers_8h}{trackers.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00044}00044\ \textcolor{preprocessor}{\#else}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00045}00045\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00046}00046\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00047}00047\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00048}00048\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00049}00049\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00050}00050\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00051}00051\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00052}00052\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00053}00053\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00054}00054\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00055}00055\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00056}00056\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00057}00057\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00058}00058\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00059}00059\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00060}00060\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00061}00061\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00062}00062\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00063}00063\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00064}00064\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00065}00065\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00066}00066\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00067}00067\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACE\_LIB}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00068}00068\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trace_8h}{trace.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00069}00069\ \textcolor{preprocessor}{\#else}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00070}00070\ \textcolor{preprocessor}{\#define\ my\_printf(...)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00071}00071\ \textcolor{preprocessor}{\#define\ log\_printf(TAG,\ fmt,\ ...)\ \ }} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00072}00072\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00073}00073\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00074}00074\ \textcolor{preprocessor}{\#define\ RTT\_FlashPrepare(...)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00075}00075\ \textcolor{preprocessor}{\#define\ RTT\_EraseFlash(...)\ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00076}00076\ \textcolor{preprocessor}{\#define\ RTT\_SaveToFlash(...)\ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00077}00077\ \textcolor{preprocessor}{\#define\ RTT\_ReadFromFlash(...)\ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00078}00078\ \textcolor{preprocessor}{\#define\ HF\_CheckRecovered(...)\ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00079}00079\ \textcolor{preprocessor}{\#define\ HF\_HandleFault(...)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00080}00080\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00081}00081\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GEN\_OPTIMIZER}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{gen__optimizer_8h}{gen\_optimizer.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00084}00084\ \textcolor{preprocessor}{\#else}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00085}00085\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00086}00086\ \ \ uint16\_t\ n\_params;\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00087}00087\ \ \ uint16\_t\ n\_cand;\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00088}00088\ \ \ uint16\_t\ n\_best;\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00089}00089\ \ \ uint16\_t\ iq\_mutation;\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00090}00090\ \ \ int32\_t\ loss[0];\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00091}00091\ \ \ int32\_t\ candidates[0][0];\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Step(opt,\ params,\ LossFunc)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00095}00095\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00096}00096\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00097}00097\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00098}00098\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00100}00100\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BENCH\_TEST}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bench__time_8h}{bench\_time.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00116}00116\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{preprocessor}{\#include\ "{}\_\_general\_flash.h"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__spi_8h}{general\_spi.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__uart_8h}{general\_uart.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00126}00126\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00127}00127\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00128}00128\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00129}00129\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00130}00130\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00037}00037\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACKERS\_LIB}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00038}00038\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trackers_8h}{trackers.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00039}00039\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00040}00040\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00041}00041\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00042}00042\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00043}00043\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00044}00044\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00045}00045\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00046}00046\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00047}00047\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00048}00048\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00049}00049\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00050}00050\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00051}00051\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00052}00052\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00053}00053\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00054}00054\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00055}00055\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00056}00056\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00057}00057\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00058}00058\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00059}00059\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00060}00060\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00061}00061\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00062}00062\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_TRACE\_LIB}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00063}00063\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{trace_8h}{trace.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00064}00064\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00065}00065\ \textcolor{preprocessor}{\#define\ my\_printf(...)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00066}00066\ \textcolor{preprocessor}{\#define\ log\_printf(TAG,\ fmt,\ ...)\ \ }} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00067}00067\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00068}00068\ \textcolor{preprocessor}{\#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00069}00069\ \textcolor{preprocessor}{\#define\ RTT\_FlashPrepare(...)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00070}00070\ \textcolor{preprocessor}{\#define\ RTT\_EraseFlash(...)\ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00071}00071\ \textcolor{preprocessor}{\#define\ RTT\_SaveToFlash(...)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00072}00072\ \textcolor{preprocessor}{\#define\ RTT\_ReadFromFlash(...)\ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00073}00073\ \textcolor{preprocessor}{\#define\ HF\_CheckRecovered(...)\ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00074}00074\ \textcolor{preprocessor}{\#define\ HF\_HandleFault(...)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00075}00075\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00076}00076\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00077}00077\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GEN\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00078}00078\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{gen__optimizer_8h}{gen\_optimizer.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00079}00079\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00080}00080\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00081}00081\ \ \ uint16\_t\ n\_params;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \ \ uint16\_t\ n\_cand;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \ \ uint16\_t\ n\_best;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00084}00084\ \ \ uint16\_t\ iq\_mutation;\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00085}00085\ \ \ int32\_t\ loss[0];\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00086}00086\ \ \ int32\_t\ candidates[0][0];\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00087}00087\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00088}00088\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00089}00089\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Step(opt,\ params,\ LossFunc)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00090}00090\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00091}00091\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00095}00095\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00096}00096\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BENCH\_TEST}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00097}00097\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bench__time_8h}{bench\_time.h}}"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00098}00098\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00100}00100\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ \textcolor{preprocessor}{\#include\ "{}\_\_general\_flash.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{preprocessor}{\#include\ "{}general\_gpio.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ \textcolor{preprocessor}{\#include\ "{}general\_spi.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00116}00116\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{preprocessor}{\#include\ "{}general\_uart.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{preprocessor}{\#include\ "{}general\_tim.h"{}}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00126}00126\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00127}00127\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00128}00128\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00129}00129\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00130}00130\ \textcolor{comment}{//\ user\ includes}} \DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00131}00131\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00132}00132\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00133}00133\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00134}00134\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00135}00135\ \textcolor{comment}{//\ user\ includes}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00136}00136\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00137}00137\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00138}00138\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00139}00139\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00140}00140\ } -\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00141}00141\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00132}00132\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00133}00133\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00134}00134\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00135}00135\ } +\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00136}00136\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/refman.tex b/Doc/latex/refman.tex index e4588e0..958e8f5 100644 --- a/Doc/latex/refman.tex +++ b/Doc/latex/refman.tex @@ -247,14 +247,12 @@ \input{struct_bench_time_channel__t} \input{struct_bench_time_stats__t} \input{struct_gen_optimizer__t} -\input{struct_g_p_i_o___l_e_d_type_def} -\input{struct_g_p_i_o___switch_type_def} \input{struct_h_f___stack_frame__t} \input{struct_r_t_t___flash_header__t} -\input{struct_s_p_i___settings_type_def} -\input{struct_t_i_m___encoder_type_def} -\input{struct_t_i_m___settings_type_def} -\input{struct_u_a_r_t___settings_type_def} +\input{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n} +\input{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p} +\input{struct_s_e_g_g_e_r___r_t_t___c_b} +\input{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c} \input{unionuint16___bit_type_def} \input{unionuint32___bit_type_def} \input{unionuint64___bit_type_def} @@ -277,24 +275,11 @@ \input{trace_8h_source} \input{trackers_8h} \input{trackers_8h_source} -\input{____general__flash_8h_source} -\input{general__gpio_8h} -\input{general__gpio_8h_source} -\input{general__spi_8h} -\input{general__spi_8h_source} -\input{general__tim_8h} -\input{general__tim_8h_source} -\input{general__uart_8h} -\input{general__uart_8h_source} -\input{____general__flash_8c_source} -\input{general__gpio_8c} -\input{general__gpio_8c_source} -\input{general__spi_8c} -\input{general__spi_8c_source} -\input{general__tim_8c} -\input{general__tim_8c_source} -\input{general__uart_8c} -\input{general__uart_8c_source} +\input{_s_e_g_g_e_r___r_t_t_8c_source} +\input{_s_e_g_g_e_r___r_t_t_8h_source} +\input{_s_e_g_g_e_r___r_t_t___conf_8h_source} +\input{_s_e_g_g_e_r___r_t_t__printf_8c_source} +\input{_s_e_g_g_e_r___r_t_t___syscalls___k_e_i_l_8c_source} %--- End generated contents --- % Index \backmatter diff --git a/Doc/latex/struct_bench_time__t.tex b/Doc/latex/struct_bench_time__t.tex index 5d68a53..2f702b4 100644 --- a/Doc/latex/struct_bench_time__t.tex +++ b/Doc/latex/struct_bench_time__t.tex @@ -11,8 +11,7 @@ -Collaboration diagram for Bench\+Time\+\_\+t\+: -\nopagebreak +Collaboration diagram for Bench\+Time\+\_\+t\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -22,25 +21,25 @@ Collaboration diagram for Bench\+Time\+\_\+t\+: \doxysubsubsection*{Public Attributes} \begin{DoxyCompactItemize} \item -\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} \mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{channels}} \mbox{[}16\mbox{]} +\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} \mbox{\hyperlink{struct_bench_time__t_a51376c064bdcffba23cf65d0733e3d34}{channels}} \mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS}}\mbox{]} \begin{DoxyCompactList}\small\item\em Каналы измерения \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} Основная структура менеджера измерений -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00102}{102}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00101}{101}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \label{doc-variable-members} \Hypertarget{struct_bench_time__t_doc-variable-members} \doxysubsection{Member Data Documentation} -\Hypertarget{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}\index{BenchTime\_t@{BenchTime\_t}!channels@{channels}} +\Hypertarget{struct_bench_time__t_a51376c064bdcffba23cf65d0733e3d34}\index{BenchTime\_t@{BenchTime\_t}!channels@{channels}} \index{channels@{channels}!BenchTime\_t@{BenchTime\_t}} \doxysubsubsection{\texorpdfstring{channels}{channels}} -{\footnotesize\ttfamily \label{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6} -\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} Bench\+Time\+\_\+t\+::channels\mbox{[}16\mbox{]}} +{\footnotesize\ttfamily \label{struct_bench_time__t_a51376c064bdcffba23cf65d0733e3d34} +\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} Bench\+Time\+\_\+t\+::channels\mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS}}\mbox{]}} @@ -48,10 +47,10 @@ Definition at line \mbox{\hyperlink{bench__time_8h_source_l00102}{102}} of file -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00103}{103}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00102}{102}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_bench_time_channel__t.tex b/Doc/latex/struct_bench_time_channel__t.tex index 67de03b..1355c06 100644 --- a/Doc/latex/struct_bench_time_channel__t.tex +++ b/Doc/latex/struct_bench_time_channel__t.tex @@ -11,8 +11,7 @@ -Collaboration diagram for Bench\+Time\+Channel\+\_\+t\+: -\nopagebreak +Collaboration diagram for Bench\+Time\+Channel\+\_\+t\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode @@ -35,7 +34,7 @@ uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df79217 \doxysubsection{Detailed Description} Структура канала измерения -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00092}{92}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00091}{91}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. @@ -54,7 +53,7 @@ uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::start\+\_\+tick} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00093}{93}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00092}{92}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!tick\_period@{tick\_period}} \index{tick\_period@{tick\_period}!BenchTimeChannel\_t@{BenchTimeChannel\_t}} @@ -68,7 +67,7 @@ uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::tick\+\_\+period} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00094}{94}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00093}{93}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!is\_running@{is\_running}} \index{is\_running@{is\_running}!BenchTimeChannel\_t@{BenchTimeChannel\_t}} @@ -82,7 +81,7 @@ uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::is\+\_\+running} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00095}{95}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00094}{94}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!stats@{stats}} \index{stats@{stats}!BenchTimeChannel\_t@{BenchTimeChannel\_t}} @@ -96,10 +95,10 @@ Definition at line \mbox{\hyperlink{bench__time_8h_source_l00095}{95}} of file \ -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00096}{96}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00095}{95}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_bench_time_stats__t.tex b/Doc/latex/struct_bench_time_stats__t.tex index 3a6d468..a6b6bc8 100644 --- a/Doc/latex/struct_bench_time_stats__t.tex +++ b/Doc/latex/struct_bench_time_stats__t.tex @@ -27,7 +27,7 @@ uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3 \doxysubsection{Detailed Description} Структура статистики измерений -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00081}{81}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00080}{80}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. @@ -46,7 +46,7 @@ uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::min\+\_\+ticks} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00082}{82}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00081}{81}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!max\_ticks@{max\_ticks}} \index{max\_ticks@{max\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}} @@ -60,7 +60,7 @@ uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::max\+\_\+ticks} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00083}{83}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00082}{82}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!total\_ticks@{total\_ticks}} \index{total\_ticks@{total\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}} @@ -74,7 +74,7 @@ uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::total\+\_\+ticks} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00084}{84}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00083}{83}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!count@{count}} \index{count@{count}!BenchTimeStats\_t@{BenchTimeStats\_t}} @@ -88,7 +88,7 @@ uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::count} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00085}{85}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00084}{84}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. \Hypertarget{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!last\_ticks@{last\_ticks}} \index{last\_ticks@{last\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}} @@ -102,10 +102,10 @@ uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::last\+\_\+ticks} -Definition at line \mbox{\hyperlink{bench__time_8h_source_l00086}{86}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. +Definition at line \mbox{\hyperlink{bench__time_8h_source_l00085}{85}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}. The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_gen_optimizer__t.tex b/Doc/latex/struct_gen_optimizer__t.tex index 4e88d5e..9ac0a6c 100644 --- a/Doc/latex/struct_gen_optimizer__t.tex +++ b/Doc/latex/struct_gen_optimizer__t.tex @@ -28,18 +28,18 @@ uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa03 \begin{DoxyCompactList}\small\item\em Индекс популяции \end{DoxyCompactList}\item float \mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\+\_\+mut}} \begin{DoxyCompactList}\small\item\em Амплитуда мутации у текущей популяции \end{DoxyCompactList}\item -float \mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}} \mbox{[}100\mbox{]} +float \mbox{\hyperlink{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}{loss}} \mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}\mbox{]} \begin{DoxyCompactList}\small\item\em Loss для каждого кандидата \end{DoxyCompactList}\item -float \mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}} \mbox{[}100\mbox{]}\mbox{[}20\mbox{]} +float \mbox{\hyperlink{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}{candidates}} \mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}\mbox{]}\mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+MAX\+\_\+\+PARAMS}}\mbox{]} \begin{DoxyCompactList}\small\item\em Параметры кандидатов \end{DoxyCompactList}\item -uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\+\_\+idx}} \mbox{[}100\mbox{]} +uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}{sorted\+\_\+idx}} \mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}\mbox{]} \begin{DoxyCompactList}\small\item\em Индексы отсортированных кандидатов \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} Структура эволюционного оптимизатора -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00102}{102}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00101}{101}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. @@ -58,7 +58,7 @@ float Gen\+Optimizer\+\_\+t\+::stability} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00103}{103}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00102}{102}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_params@{n\_params}} \index{n\_params@{n\_params}!GenOptimizer\_t@{GenOptimizer\_t}} @@ -72,7 +72,7 @@ uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+params} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00105}{105}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00104}{104}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_cand@{n\_cand}} \index{n\_cand@{n\_cand}!GenOptimizer\_t@{GenOptimizer\_t}} @@ -86,7 +86,7 @@ uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+cand} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00106}{106}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00105}{105}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_best@{n\_best}} \index{n\_best@{n\_best}!GenOptimizer\_t@{GenOptimizer\_t}} @@ -100,7 +100,7 @@ uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+best} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00107}{107}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00106}{106}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}\index{GenOptimizer\_t@{GenOptimizer\_t}!mutation\_amp@{mutation\_amp}} \index{mutation\_amp@{mutation\_amp}!GenOptimizer\_t@{GenOptimizer\_t}} @@ -114,7 +114,7 @@ float Gen\+Optimizer\+\_\+t\+::mutation\+\_\+amp} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00108}{108}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00107}{107}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}\index{GenOptimizer\_t@{GenOptimizer\_t}!cand\_index@{cand\_index}} \index{cand\_index@{cand\_index}!GenOptimizer\_t@{GenOptimizer\_t}} @@ -128,7 +128,7 @@ uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::cand\+\_\+index} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00110}{110}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00109}{109}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}\index{GenOptimizer\_t@{GenOptimizer\_t}!gen\_index@{gen\_index}} \index{gen\_index@{gen\_index}!GenOptimizer\_t@{GenOptimizer\_t}} @@ -142,7 +142,7 @@ uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::gen\+\_\+index} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00111}{111}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00110}{110}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. \Hypertarget{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}\index{GenOptimizer\_t@{GenOptimizer\_t}!gen\_mut@{gen\_mut}} \index{gen\_mut@{gen\_mut}!GenOptimizer\_t@{GenOptimizer\_t}} @@ -156,13 +156,13 @@ float Gen\+Optimizer\+\_\+t\+::gen\+\_\+mut} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00114}{114}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00113}{113}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. -\Hypertarget{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}\index{GenOptimizer\_t@{GenOptimizer\_t}!loss@{loss}} +\Hypertarget{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa}\index{GenOptimizer\_t@{GenOptimizer\_t}!loss@{loss}} \index{loss@{loss}!GenOptimizer\_t@{GenOptimizer\_t}} \doxysubsubsection{\texorpdfstring{loss}{loss}} -{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73} -float Gen\+Optimizer\+\_\+t\+::loss\mbox{[}100\mbox{]}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_ae74a211c5ab6d58ffc147bb65e8fdafa} +float Gen\+Optimizer\+\_\+t\+::loss\mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}\mbox{]}} @@ -170,13 +170,13 @@ Loss для каждого кандидата -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00116}{116}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00115}{115}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. -\Hypertarget{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}\index{GenOptimizer\_t@{GenOptimizer\_t}!candidates@{candidates}} +\Hypertarget{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947}\index{GenOptimizer\_t@{GenOptimizer\_t}!candidates@{candidates}} \index{candidates@{candidates}!GenOptimizer\_t@{GenOptimizer\_t}} \doxysubsubsection{\texorpdfstring{candidates}{candidates}} -{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df} -float Gen\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_af0161e7c0b6ab691b8b59d522808f947} +float Gen\+Optimizer\+\_\+t\+::candidates\mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}\mbox{]}\mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+MAX\+\_\+\+PARAMS}}\mbox{]}} @@ -184,13 +184,13 @@ float Gen\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00117}{117}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00116}{116}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. -\Hypertarget{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}\index{GenOptimizer\_t@{GenOptimizer\_t}!sorted\_idx@{sorted\_idx}} +\Hypertarget{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320}\index{GenOptimizer\_t@{GenOptimizer\_t}!sorted\_idx@{sorted\_idx}} \index{sorted\_idx@{sorted\_idx}!GenOptimizer\_t@{GenOptimizer\_t}} \doxysubsubsection{\texorpdfstring{sorted\_idx}{sorted\_idx}} -{\footnotesize\ttfamily \label{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12} -uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::sorted\+\_\+idx\mbox{[}100\mbox{]}} +{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a473a62c538392b7735d660f303377320} +uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::sorted\+\_\+idx\mbox{[}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}\mbox{]}} @@ -198,10 +198,10 @@ uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::sorted\+\_\+idx\mbox{[}100\mbox{]}} -Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00118}{118}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00117}{117}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}. The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_h_f___stack_frame__t.tex b/Doc/latex/struct_h_f___stack_frame__t.tex index c74c1cd..aa6a86d 100644 --- a/Doc/latex/struct_h_f___stack_frame__t.tex +++ b/Doc/latex/struct_h_f___stack_frame__t.tex @@ -35,7 +35,7 @@ uint32\+\_\+t \mbox{\hyperlink{struct_h_f___stack_frame__t_ae47cb051ee3c94471bfd Сохраняет регистры R0-\/\+R3, R12, LR, PC, PSR для последующего анализа. -Definition at line \mbox{\hyperlink{trace_8h_source_l00476}{476}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00475}{475}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. @@ -54,7 +54,7 @@ uint32\+\_\+t HF\+\_\+\+Stack\+Frame\+\_\+t\+::r0} -Definition at line \mbox{\hyperlink{trace_8h_source_l00477}{477}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00476}{476}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_h_f___stack_frame__t_a286104d19185714940645a9df814ddea}\index{HF\_StackFrame\_t@{HF\_StackFrame\_t}!r1@{r1}} \index{r1@{r1}!HF\_StackFrame\_t@{HF\_StackFrame\_t}} @@ -68,7 +68,7 @@ uint32\+\_\+t HF\+\_\+\+Stack\+Frame\+\_\+t\+::r1} -Definition at line \mbox{\hyperlink{trace_8h_source_l00478}{478}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00477}{477}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_h_f___stack_frame__t_a5a52e5006dabcf68c0fa4cfb0e03335b}\index{HF\_StackFrame\_t@{HF\_StackFrame\_t}!r2@{r2}} \index{r2@{r2}!HF\_StackFrame\_t@{HF\_StackFrame\_t}} @@ -82,7 +82,7 @@ uint32\+\_\+t HF\+\_\+\+Stack\+Frame\+\_\+t\+::r2} -Definition at line \mbox{\hyperlink{trace_8h_source_l00479}{479}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00478}{478}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_h_f___stack_frame__t_a453c7af42b6928a693af422e17c981d3}\index{HF\_StackFrame\_t@{HF\_StackFrame\_t}!r3@{r3}} \index{r3@{r3}!HF\_StackFrame\_t@{HF\_StackFrame\_t}} @@ -96,7 +96,7 @@ uint32\+\_\+t HF\+\_\+\+Stack\+Frame\+\_\+t\+::r3} -Definition at line \mbox{\hyperlink{trace_8h_source_l00480}{480}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00479}{479}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_h_f___stack_frame__t_a819ee3bc518c460ece1b7c4079f8f80b}\index{HF\_StackFrame\_t@{HF\_StackFrame\_t}!r12@{r12}} \index{r12@{r12}!HF\_StackFrame\_t@{HF\_StackFrame\_t}} @@ -110,7 +110,7 @@ uint32\+\_\+t HF\+\_\+\+Stack\+Frame\+\_\+t\+::r12} -Definition at line \mbox{\hyperlink{trace_8h_source_l00481}{481}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00480}{480}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_h_f___stack_frame__t_a6e51904297f7725e96d5b5fb291ef577}\index{HF\_StackFrame\_t@{HF\_StackFrame\_t}!lr@{lr}} \index{lr@{lr}!HF\_StackFrame\_t@{HF\_StackFrame\_t}} @@ -124,7 +124,7 @@ Link Register. -Definition at line \mbox{\hyperlink{trace_8h_source_l00482}{482}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00481}{481}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_h_f___stack_frame__t_a16563896004751c90e41c81ae4570732}\index{HF\_StackFrame\_t@{HF\_StackFrame\_t}!pc@{pc}} \index{pc@{pc}!HF\_StackFrame\_t@{HF\_StackFrame\_t}} @@ -138,7 +138,7 @@ Program Counter. -Definition at line \mbox{\hyperlink{trace_8h_source_l00483}{483}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00482}{482}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_h_f___stack_frame__t_ae47cb051ee3c94471bfd4fe7e49c55f9}\index{HF\_StackFrame\_t@{HF\_StackFrame\_t}!psr@{psr}} \index{psr@{psr}!HF\_StackFrame\_t@{HF\_StackFrame\_t}} @@ -152,10 +152,10 @@ Program Status Register. -Definition at line \mbox{\hyperlink{trace_8h_source_l00484}{484}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00483}{483}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_r_t_t___flash_header__t.tex b/Doc/latex/struct_r_t_t___flash_header__t.tex index 7c28249..6edd31b 100644 --- a/Doc/latex/struct_r_t_t___flash_header__t.tex +++ b/Doc/latex/struct_r_t_t___flash_header__t.tex @@ -16,14 +16,14 @@ uint32\+\_\+t \mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749 \begin{DoxyCompactList}\small\item\em Уникальный идентификатор буфера \end{DoxyCompactList}\item uint32\+\_\+t \mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}} \begin{DoxyCompactList}\small\item\em Размер данных \end{DoxyCompactList}\item -char \mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{data}} \mbox{[}1024\mbox{]} +char \mbox{\hyperlink{struct_r_t_t___flash_header__t_a1100df39b0eccb835946f4c13de23b4e}{data}} \mbox{[}\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\+\_\+\+FLASH\+\_\+\+BUFFER\+\_\+\+SIZE}}\mbox{]} \begin{DoxyCompactList}\small\item\em Буфер RTT. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} Структура RTT, которая будет положена в Flash. -Definition at line \mbox{\hyperlink{trace_8h_source_l00193}{193}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00192}{192}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. @@ -42,7 +42,7 @@ uint32\+\_\+t RTT\+\_\+\+Flash\+Header\+\_\+t\+::tag} -Definition at line \mbox{\hyperlink{trace_8h_source_l00194}{194}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00193}{193}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. \Hypertarget{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}\index{RTT\_FlashHeader\_t@{RTT\_FlashHeader\_t}!size@{size}} \index{size@{size}!RTT\_FlashHeader\_t@{RTT\_FlashHeader\_t}} @@ -56,13 +56,13 @@ uint32\+\_\+t RTT\+\_\+\+Flash\+Header\+\_\+t\+::size} -Definition at line \mbox{\hyperlink{trace_8h_source_l00195}{195}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00194}{194}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}\index{RTT\_FlashHeader\_t@{RTT\_FlashHeader\_t}!data@{data}} +\Hypertarget{struct_r_t_t___flash_header__t_a1100df39b0eccb835946f4c13de23b4e}\index{RTT\_FlashHeader\_t@{RTT\_FlashHeader\_t}!data@{data}} \index{data@{data}!RTT\_FlashHeader\_t@{RTT\_FlashHeader\_t}} \doxysubsubsection{\texorpdfstring{data}{data}} -{\footnotesize\ttfamily \label{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a} -char RTT\+\_\+\+Flash\+Header\+\_\+t\+::data\mbox{[}1024\mbox{]}} +{\footnotesize\ttfamily \label{struct_r_t_t___flash_header__t_a1100df39b0eccb835946f4c13de23b4e} +char RTT\+\_\+\+Flash\+Header\+\_\+t\+::data\mbox{[}\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\+\_\+\+FLASH\+\_\+\+BUFFER\+\_\+\+SIZE}}\mbox{]}} @@ -70,10 +70,10 @@ char RTT\+\_\+\+Flash\+Header\+\_\+t\+::data\mbox{[}1024\mbox{]}} -Definition at line \mbox{\hyperlink{trace_8h_source_l00196}{196}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. +Definition at line \mbox{\hyperlink{trace_8h_source_l00195}{195}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.tex b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.tex new file mode 100644 index 0000000..fa03f0b --- /dev/null +++ b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n.tex @@ -0,0 +1,94 @@ +\doxysection{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN Struct Reference} +\hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{}\label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}\index{SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}} +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +const char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a5cca21c6a1efeb5fb1c8a4fbf9fcdf84}{s\+Name}} +\item +char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ada5ecc573d5e0ae1a0f813a1c24156f7}{p\+Buffer}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ab9162c01b40361abcfe36898c9670741}{Size\+Of\+Buffer}} +\item +volatile unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a3cb6a09b71f1910b8eb92f97f1c1ace0}{Wr\+Off}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ae16253ec1c01af1ea4da2ccdb4b2fcbc}{Rd\+Off}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a9b60add7975e43598a08d5cf528245f7}{Flags}} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00330}{330}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a5cca21c6a1efeb5fb1c8a4fbf9fcdf84}\index{SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}!sName@{sName}} +\index{sName@{sName}!SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}} +\doxysubsubsection{\texorpdfstring{sName}{sName}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a5cca21c6a1efeb5fb1c8a4fbf9fcdf84} +const char\texorpdfstring{$\ast$}{*} SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN\+::s\+Name} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00331}{331}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ada5ecc573d5e0ae1a0f813a1c24156f7}\index{SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}!pBuffer@{pBuffer}} +\index{pBuffer@{pBuffer}!SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}} +\doxysubsubsection{\texorpdfstring{pBuffer}{pBuffer}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ada5ecc573d5e0ae1a0f813a1c24156f7} +char\texorpdfstring{$\ast$}{*} SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN\+::p\+Buffer} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00332}{332}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ab9162c01b40361abcfe36898c9670741}\index{SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}!SizeOfBuffer@{SizeOfBuffer}} +\index{SizeOfBuffer@{SizeOfBuffer}!SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}} +\doxysubsubsection{\texorpdfstring{SizeOfBuffer}{SizeOfBuffer}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ab9162c01b40361abcfe36898c9670741} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN\+::\+Size\+Of\+Buffer} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00333}{333}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a3cb6a09b71f1910b8eb92f97f1c1ace0}\index{SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}!WrOff@{WrOff}} +\index{WrOff@{WrOff}!SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}} +\doxysubsubsection{\texorpdfstring{WrOff}{WrOff}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a3cb6a09b71f1910b8eb92f97f1c1ace0} +volatile unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN\+::\+Wr\+Off} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00334}{334}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ae16253ec1c01af1ea4da2ccdb4b2fcbc}\index{SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}!RdOff@{RdOff}} +\index{RdOff@{RdOff}!SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}} +\doxysubsubsection{\texorpdfstring{RdOff}{RdOff}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_ae16253ec1c01af1ea4da2ccdb4b2fcbc} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN\+::\+Rd\+Off} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00335}{335}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a9b60add7975e43598a08d5cf528245f7}\index{SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}!Flags@{Flags}} +\index{Flags@{Flags}!SEGGER\_RTT\_BUFFER\_DOWN@{SEGGER\_RTT\_BUFFER\_DOWN}} +\doxysubsubsection{\texorpdfstring{Flags}{Flags}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n_a9b60add7975e43598a08d5cf528245f7} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN\+::\+Flags} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00336}{336}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/SEGGER\+\_\+\+RTT.\+h\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.tex b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.tex new file mode 100644 index 0000000..884847d --- /dev/null +++ b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p.tex @@ -0,0 +1,94 @@ +\doxysection{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP Struct Reference} +\hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{}\label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}\index{SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}} +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +const char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a6ca6c6087f49fc73cf9c60fa249db581}{s\+Name}} +\item +char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a55af663660f355dd66148ea3a12086cb}{p\+Buffer}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a723612a58edf1812316c6d68b1a5e10a}{Size\+Of\+Buffer}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_add452c6f708e96f6bd6bf200736c2d0a}{Wr\+Off}} +\item +volatile unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a5656936cd59a5ddab55af1aa1467b67f}{Rd\+Off}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a1909346568b558be56c77e2c6e79882b}{Flags}} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00317}{317}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a6ca6c6087f49fc73cf9c60fa249db581}\index{SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}!sName@{sName}} +\index{sName@{sName}!SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}} +\doxysubsubsection{\texorpdfstring{sName}{sName}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a6ca6c6087f49fc73cf9c60fa249db581} +const char\texorpdfstring{$\ast$}{*} SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP\+::s\+Name} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00318}{318}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a55af663660f355dd66148ea3a12086cb}\index{SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}!pBuffer@{pBuffer}} +\index{pBuffer@{pBuffer}!SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}} +\doxysubsubsection{\texorpdfstring{pBuffer}{pBuffer}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a55af663660f355dd66148ea3a12086cb} +char\texorpdfstring{$\ast$}{*} SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP\+::p\+Buffer} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00319}{319}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a723612a58edf1812316c6d68b1a5e10a}\index{SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}!SizeOfBuffer@{SizeOfBuffer}} +\index{SizeOfBuffer@{SizeOfBuffer}!SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}} +\doxysubsubsection{\texorpdfstring{SizeOfBuffer}{SizeOfBuffer}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a723612a58edf1812316c6d68b1a5e10a} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP\+::\+Size\+Of\+Buffer} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00320}{320}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_add452c6f708e96f6bd6bf200736c2d0a}\index{SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}!WrOff@{WrOff}} +\index{WrOff@{WrOff}!SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}} +\doxysubsubsection{\texorpdfstring{WrOff}{WrOff}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_add452c6f708e96f6bd6bf200736c2d0a} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP\+::\+Wr\+Off} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00321}{321}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a5656936cd59a5ddab55af1aa1467b67f}\index{SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}!RdOff@{RdOff}} +\index{RdOff@{RdOff}!SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}} +\doxysubsubsection{\texorpdfstring{RdOff}{RdOff}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a5656936cd59a5ddab55af1aa1467b67f} +volatile unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP\+::\+Rd\+Off} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00322}{322}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a1909346568b558be56c77e2c6e79882b}\index{SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}!Flags@{Flags}} +\index{Flags@{Flags}!SEGGER\_RTT\_BUFFER\_UP@{SEGGER\_RTT\_BUFFER\_UP}} +\doxysubsubsection{\texorpdfstring{Flags}{Flags}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p_a1909346568b558be56c77e2c6e79882b} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP\+::\+Flags} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00323}{323}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/SEGGER\+\_\+\+RTT.\+h\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b.tex b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b.tex new file mode 100644 index 0000000..2476c4c --- /dev/null +++ b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b.tex @@ -0,0 +1,91 @@ +\doxysection{SEGGER\+\_\+\+RTT\+\_\+\+CB Struct Reference} +\hypertarget{struct_s_e_g_g_e_r___r_t_t___c_b}{}\label{struct_s_e_g_g_e_r___r_t_t___c_b}\index{SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}} + + +Collaboration diagram for SEGGER\+\_\+\+RTT\+\_\+\+CB\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph} +\end{center} +\end{figure} +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +char \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b_af91aeb3c800fed5306a57f5b688888a9}{ac\+ID}} \mbox{[}16\mbox{]} +\item +int \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b_ae8607ab235f59d17b0d471c19c294b03}{Max\+Num\+Up\+Buffers}} +\item +int \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b_a62aaabc4dcc0cb4164c5f54da753d7e9}{Max\+Num\+Down\+Buffers}} +\item +\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP}} \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b_af27ec025b21e2a8e42db0a19351cfff9}{a\+Up}} \mbox{[}SEGGER\+\_\+\+RTT\+\_\+\+MAX\+\_\+\+NUM\+\_\+\+UP\+\_\+\+BUFFERS\mbox{]} +\item +\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN}} \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___c_b_a459f2d8a20dced065dbd54afbdf434e5}{a\+Down}} \mbox{[}SEGGER\+\_\+\+RTT\+\_\+\+MAX\+\_\+\+NUM\+\_\+\+DOWN\+\_\+\+BUFFERS\mbox{]} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00344}{344}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___c_b_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___c_b_af91aeb3c800fed5306a57f5b688888a9}\index{SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}!acID@{acID}} +\index{acID@{acID}!SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}} +\doxysubsubsection{\texorpdfstring{acID}{acID}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___c_b_af91aeb3c800fed5306a57f5b688888a9} +char SEGGER\+\_\+\+RTT\+\_\+\+CB\+::ac\+ID\mbox{[}16\mbox{]}} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00345}{345}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___c_b_ae8607ab235f59d17b0d471c19c294b03}\index{SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}!MaxNumUpBuffers@{MaxNumUpBuffers}} +\index{MaxNumUpBuffers@{MaxNumUpBuffers}!SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}} +\doxysubsubsection{\texorpdfstring{MaxNumUpBuffers}{MaxNumUpBuffers}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___c_b_ae8607ab235f59d17b0d471c19c294b03} +int SEGGER\+\_\+\+RTT\+\_\+\+CB\+::\+Max\+Num\+Up\+Buffers} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00346}{346}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___c_b_a62aaabc4dcc0cb4164c5f54da753d7e9}\index{SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}!MaxNumDownBuffers@{MaxNumDownBuffers}} +\index{MaxNumDownBuffers@{MaxNumDownBuffers}!SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}} +\doxysubsubsection{\texorpdfstring{MaxNumDownBuffers}{MaxNumDownBuffers}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___c_b_a62aaabc4dcc0cb4164c5f54da753d7e9} +int SEGGER\+\_\+\+RTT\+\_\+\+CB\+::\+Max\+Num\+Down\+Buffers} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00347}{347}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___c_b_af27ec025b21e2a8e42db0a19351cfff9}\index{SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}!aUp@{aUp}} +\index{aUp@{aUp}!SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}} +\doxysubsubsection{\texorpdfstring{aUp}{aUp}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___c_b_af27ec025b21e2a8e42db0a19351cfff9} +\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+UP}} SEGGER\+\_\+\+RTT\+\_\+\+CB\+::a\+Up\mbox{[}SEGGER\+\_\+\+RTT\+\_\+\+MAX\+\_\+\+NUM\+\_\+\+UP\+\_\+\+BUFFERS\mbox{]}} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00348}{348}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___c_b_a459f2d8a20dced065dbd54afbdf434e5}\index{SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}!aDown@{aDown}} +\index{aDown@{aDown}!SEGGER\_RTT\_CB@{SEGGER\_RTT\_CB}} +\doxysubsubsection{\texorpdfstring{aDown}{aDown}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___c_b_a459f2d8a20dced065dbd54afbdf434e5} +\mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___d_o_w_n}{SEGGER\+\_\+\+RTT\+\_\+\+BUFFER\+\_\+\+DOWN}} SEGGER\+\_\+\+RTT\+\_\+\+CB\+::a\+Down\mbox{[}SEGGER\+\_\+\+RTT\+\_\+\+MAX\+\_\+\+NUM\+\_\+\+DOWN\+\_\+\+BUFFERS\mbox{]}} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source_l00349}{349}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t_8h_source}{SEGGER\+\_\+\+RTT.\+h}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/SEGGER\+\_\+\+RTT.\+h\end{DoxyCompactItemize} diff --git a/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.md5 b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.md5 new file mode 100644 index 0000000..bec81a2 --- /dev/null +++ b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.md5 @@ -0,0 +1 @@ +24224bac578793dc6abc7675d8c79818 \ No newline at end of file diff --git a/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.pdf b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.pdf new file mode 100644 index 0000000..46bb096 Binary files /dev/null and b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___c_b__coll__graph.pdf differ diff --git a/Doc/latex/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.tex b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.tex new file mode 100644 index 0000000..3d33498 --- /dev/null +++ b/Doc/latex/struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c.tex @@ -0,0 +1,82 @@ +\doxysection{SEGGER\+\_\+\+RTT\+\_\+\+PRINTF\+\_\+\+DESC Struct Reference} +\hypertarget{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}{}\label{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c}\index{SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}} +\doxysubsubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_ab8724b23ebf34566d69eb6ed4a0b374e}{p\+Buffer}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a26ff82b7970c500bb29f098cf49dd065}{Buffer\+Size}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a65faff93dba548785741e95b5bd4e5b7}{Cnt}} +\item +int \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a04a163688303b84088292b87423845ec}{Return\+Value}} +\item +unsigned \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a843108780297879b7b99e4b31fc98463}{RTTBuffer\+Index}} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00085}{85}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source}{SEGGER\+\_\+\+RTT\+\_\+printf.\+c}}. + + + +\label{doc-variable-members} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_doc-variable-members} +\doxysubsection{Member Data Documentation} +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_ab8724b23ebf34566d69eb6ed4a0b374e}\index{SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}!pBuffer@{pBuffer}} +\index{pBuffer@{pBuffer}!SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}} +\doxysubsubsection{\texorpdfstring{pBuffer}{pBuffer}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_ab8724b23ebf34566d69eb6ed4a0b374e} +char\texorpdfstring{$\ast$}{*} SEGGER\+\_\+\+RTT\+\_\+\+PRINTF\+\_\+\+DESC\+::p\+Buffer} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00086}{86}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source}{SEGGER\+\_\+\+RTT\+\_\+printf.\+c}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a26ff82b7970c500bb29f098cf49dd065}\index{SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}!BufferSize@{BufferSize}} +\index{BufferSize@{BufferSize}!SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}} +\doxysubsubsection{\texorpdfstring{BufferSize}{BufferSize}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a26ff82b7970c500bb29f098cf49dd065} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+PRINTF\+\_\+\+DESC\+::\+Buffer\+Size} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00087}{87}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source}{SEGGER\+\_\+\+RTT\+\_\+printf.\+c}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a65faff93dba548785741e95b5bd4e5b7}\index{SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}!Cnt@{Cnt}} +\index{Cnt@{Cnt}!SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}} +\doxysubsubsection{\texorpdfstring{Cnt}{Cnt}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a65faff93dba548785741e95b5bd4e5b7} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+PRINTF\+\_\+\+DESC\+::\+Cnt} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00088}{88}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source}{SEGGER\+\_\+\+RTT\+\_\+printf.\+c}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a04a163688303b84088292b87423845ec}\index{SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}!ReturnValue@{ReturnValue}} +\index{ReturnValue@{ReturnValue}!SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}} +\doxysubsubsection{\texorpdfstring{ReturnValue}{ReturnValue}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a04a163688303b84088292b87423845ec} +int SEGGER\+\_\+\+RTT\+\_\+\+PRINTF\+\_\+\+DESC\+::\+Return\+Value} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00090}{90}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source}{SEGGER\+\_\+\+RTT\+\_\+printf.\+c}}. + +\Hypertarget{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a843108780297879b7b99e4b31fc98463}\index{SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}!RTTBufferIndex@{RTTBufferIndex}} +\index{RTTBufferIndex@{RTTBufferIndex}!SEGGER\_RTT\_PRINTF\_DESC@{SEGGER\_RTT\_PRINTF\_DESC}} +\doxysubsubsection{\texorpdfstring{RTTBufferIndex}{RTTBufferIndex}} +{\footnotesize\ttfamily \label{struct_s_e_g_g_e_r___r_t_t___p_r_i_n_t_f___d_e_s_c_a843108780297879b7b99e4b31fc98463} +unsigned SEGGER\+\_\+\+RTT\+\_\+\+PRINTF\+\_\+\+DESC\+::\+RTTBuffer\+Index} + + + +Definition at line \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source_l00092}{92}} of file \mbox{\hyperlink{_s_e_g_g_e_r___r_t_t__printf_8c_source}{SEGGER\+\_\+\+RTT\+\_\+printf.\+c}}. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+RTT/SEGGER\+\_\+\+RTT\+\_\+printf.\+c\end{DoxyCompactItemize} diff --git a/Doc/latex/topics.tex b/Doc/latex/topics.tex index a81c542..1a729c0 100644 --- a/Doc/latex/topics.tex +++ b/Doc/latex/topics.tex @@ -8,14 +8,17 @@ Here is a list of all topics with brief descriptions\+:\begin{DoxyCompactList} \item \contentsline{section}{Genetic configs}{\pageref{group___g_e_n___c_o_n_f_i_g}}{} \item \contentsline{section}{Libraries configs}{\pageref{group___l_i_b_s___c_o_n_f_i_g}}{} \end{DoxyCompactList} -\item \contentsline{section}{General Tools}{\pageref{group___m_y_l_i_b_s___d_e_f_i_n_e_s}}{} +\item \contentsline{section}{General Tools}{\pageref{group___m_y_l_i_b_s___t_o_o_l_s}}{} \begin{DoxyCompactList} \item \contentsline{section}{Bit access defines}{\pageref{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}}{} -\item \contentsline{section}{Time measurement}{\pageref{group___b_e_n_c_h___t_i_m_e}}{} -\item \contentsline{section}{Genetic optimizer}{\pageref{group___g_e_n___o_p_t_i_m_i_z_e_r}}{} \item \contentsline{section}{Error Handler defines}{\pageref{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}}{} \item \contentsline{section}{Delays defines}{\pageref{group___d_e_l_a_y_s___d_e_f_i_n_e_s}}{} \item \contentsline{section}{Utils defines}{\pageref{group___u_t_i_l_s___d_e_f_i_n_e_s}}{} +\end{DoxyCompactList} +\item \contentsline{section}{Debug Tools}{\pageref{group___m_y_l_i_b_s___d_e_b_u_g___t_o_o_l_s}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{Time measurement}{\pageref{group___b_e_n_c_h___t_i_m_e}}{} +\item \contentsline{section}{Genetic optimizer}{\pageref{group___g_e_n___o_p_t_i_m_i_z_e_r}}{} \item \contentsline{section}{Trace defines}{\pageref{group___t_r_a_c_e}}{} \begin{DoxyCompactList} \item \contentsline{section}{Serial trace defines}{\pageref{group___t_r_a_c_e___s_e_r_i_a_l}}{} @@ -25,35 +28,5 @@ Here is a list of all topics with brief descriptions\+:\begin{DoxyCompactList} \end{DoxyCompactList} \item \contentsline{section}{Trackers defines}{\pageref{group___t_r_a_c_k_e_r_s}}{} \end{DoxyCompactList} -\item \contentsline{section}{Peripheral}{\pageref{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{GPIO Tools}{\pageref{group___m_y___l_i_b_s___g_p_i_o}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{General tools}{\pageref{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{Init defines}{\pageref{group___g_p_i_o___i_n_i_t}}{} -\end{DoxyCompactList} -\item \contentsline{section}{Switch tools}{\pageref{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h}}{} -\item \contentsline{section}{LED tools}{\pageref{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s}}{} -\end{DoxyCompactList} -\item \contentsline{section}{SPI Tools}{\pageref{group___m_y___l_i_b_s___s_p_i}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{Init defines}{\pageref{group___s_p_i___i_n_i_t}}{} -\end{DoxyCompactList} -\item \contentsline{section}{TIM Tools}{\pageref{group___m_y___l_i_b_s___t_i_m}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{General tools}{\pageref{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{Init defines}{\pageref{group___t_i_m___i_n_i_t}}{} -\end{DoxyCompactList} -\item \contentsline{section}{Delay tools}{\pageref{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y}}{} -\item \contentsline{section}{PWM/\+OC Channels tools}{\pageref{group___m_y_l_i_b_s___t_i_m___o_c}}{} -\item \contentsline{section}{Encoder tools}{\pageref{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r}}{} -\end{DoxyCompactList} -\item \contentsline{section}{UART Tools}{\pageref{group___m_y___l_i_b_s___u_a_r_t}}{} -\begin{DoxyCompactList} -\item \contentsline{section}{Init defines}{\pageref{group___u_a_r_t___i_n_i_t}}{} -\end{DoxyCompactList} -\end{DoxyCompactList} \end{DoxyCompactList} \end{DoxyCompactList} diff --git a/Doc/latex/trace_8h.tex b/Doc/latex/trace_8h.tex index 553c277..06f5d25 100644 --- a/Doc/latex/trace_8h.tex +++ b/Doc/latex/trace_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/trace.h File Reference} -\hypertarget{trace_8h}{}\label{trace_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trace.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trace.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/trace.h File Reference} +\hypertarget{trace_8h}{}\label{trace_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trace.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trace.h}} Заголочный файл для работы с трассировкой. @@ -8,20 +8,18 @@ {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include "{}SEGGER\+\_\+\+RTT.\+h"{}}\newline -Include dependency graph for trace.\+h\+: -\nopagebreak +Include dependency graph for trace.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=337pt]{trace_8h__incl} +\includegraphics[width=350pt]{trace_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{trace_8h__dep__incl} +\includegraphics[width=223pt]{trace_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} @@ -62,7 +60,7 @@ struct \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\ \item static \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}{stack\+\_\+frame}} \item -static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}{stack\+\_\+dump}} \mbox{[}32\mbox{]} +static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga9edcd42163bfdaa30a8bb801d2668244}{stack\+\_\+dump}} \mbox{[}\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b}{HF\+\_\+\+STACK\+\_\+\+DUMP\+\_\+\+WORDS}}\mbox{]} \item static void \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}{ret\+\_\+adr}} \mbox{[}10\mbox{]} = \{0\} \end{DoxyCompactItemize} diff --git a/Doc/latex/trace_8h__dep__incl.md5 b/Doc/latex/trace_8h__dep__incl.md5 index ad9694e..9b30b0d 100644 --- a/Doc/latex/trace_8h__dep__incl.md5 +++ b/Doc/latex/trace_8h__dep__incl.md5 @@ -1 +1 @@ -2c74215ac379983f780e4360fb24b6c0 \ No newline at end of file +2397d26b823431c0b80294b7c5229b45 \ No newline at end of file diff --git a/Doc/latex/trace_8h__dep__incl.pdf b/Doc/latex/trace_8h__dep__incl.pdf index 3f47bd3..79bef44 100644 Binary files a/Doc/latex/trace_8h__dep__incl.pdf and b/Doc/latex/trace_8h__dep__incl.pdf differ diff --git a/Doc/latex/trace_8h__incl.md5 b/Doc/latex/trace_8h__incl.md5 index faf7072..3e7c717 100644 --- a/Doc/latex/trace_8h__incl.md5 +++ b/Doc/latex/trace_8h__incl.md5 @@ -1 +1 @@ -e123b1bf7c7a85e62a16c31c7a2ae97d \ No newline at end of file +87ca750b516dc5ad3a7d7497a8dc5dbb \ No newline at end of file diff --git a/Doc/latex/trace_8h__incl.pdf b/Doc/latex/trace_8h__incl.pdf index e68b762..63785b2 100644 Binary files a/Doc/latex/trace_8h__incl.pdf and b/Doc/latex/trace_8h__incl.pdf differ diff --git a/Doc/latex/trace_8h_source.tex b/Doc/latex/trace_8h_source.tex index c0a53f0..1d536c5 100644 --- a/Doc/latex/trace_8h_source.tex +++ b/Doc/latex/trace_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{trace.\+h} -\hypertarget{trace_8h_source}{}\label{trace_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trace.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trace.h}} +\hypertarget{trace_8h_source}{}\label{trace_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trace.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trace.h}} \mbox{\hyperlink{trace_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -8,590 +8,589 @@ \DoxyCodeLine{\Hypertarget{trace_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголочный\ файл\ для\ работы\ с\ трассировкой.}} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00005}00005\ \textcolor{comment}{**************************************************************************}} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ \ \ TRACE\ \ \ \ \ \ \ \ \ \ \ Trace\ defines}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ \ \ Дефайны\ для\ работы\ с\ трассировкой}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00009}00009\ \textcolor{comment}{*************************************************************************/}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00010}00010\ \textcolor{preprocessor}{\#ifndef\ \_\_TRACE\_H\_}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00011}00011\ \textcolor{preprocessor}{\#define\ \_\_TRACE\_H\_}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00012}00012\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00013}00013\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00014}00014\ \textcolor{preprocessor}{\#include\ }\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00015}00015\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00016}00016\ \textcolor{comment}{\ \ *\ @addtogroup\ TRACE\_SERIAL\ \ \ \ Serial\ trace\ defines}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00017}00017\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ TRACE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00018}00018\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Дефайны\ для\ работы\ с\ serial\ трассировкой\ (SWO,\ RTT)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00019}00019\ \textcolor{comment}{\ \ *\ @details\ \ \ \ В\ зависимости\ от\ настроек\ определяется\ дефайн\ @ref\ my\_printf()\ и\ @ref\ log\_printf()\ для\ работы\ с\ трассировкой:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00020}00020\ \textcolor{comment}{\ \ \ \ -\/\ @ref\ SERIAL\_TRACE\_ENABLE\ -\/\ Если\ трассировка\ \ отключена,\ то\ все\ дефайны\ определяются\ как\ 'ничего'\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00021}00021\ \textcolor{comment}{\ \ \ \ \ \ и\ на\ производительность\ кода\ не\ влияют}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00022}00022\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00023}00023\ \textcolor{comment}{\ \ \ \ -\/\ @ref\ RTT\_TRACE\_ENABLE\ -\/\ для\ RTT\ это\ будет\ вызов\ функции\ SEGGER\_RTT\_printf()}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00024}00024\ \textcolor{comment}{\ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00025}00025\ \textcolor{comment}{\ \ \ \ \ \ Предварительно\ надо\ подключить\ библиотеку\ SEGGER\ RTT\ (SEGGER\_RTT.h)\ и\ вызвать\ функцию\ SEGGER\_RTT\_Init()}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00026}00026\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00027}00027\ \textcolor{comment}{\ \ \ \ -\/\ @ref\ SWO\_TRACE\_ENABLE\ для\ SWO\ это\ будет\ просто\ printf()}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00028}00028\ \textcolor{comment}{\ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00029}00029\ \textcolor{comment}{\ \ \ \ \ \ Предварительно\ надо\ подключить\ библиотеку\ STDOUT\ и\ retarget\ под\ ITM:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00030}00030\ \textcolor{comment}{\ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00031}00031\ \textcolor{comment}{\ \ \ \ \ \ @verbatim}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00032}00032\ \textcolor{comment}{\ \ \ \ \ \ \ \ Manage\ Run-\/Time\ Environment\ -\/>\ Compiler\ -\/>\ I/O\ -\/>\ STDOUT\ -\/>\ ITM}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00033}00033\ \textcolor{comment}{\ \ \ \ \ \ @endverbatim}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00034}00034\ \textcolor{comment}{\ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00035}00035\ \textcolor{comment}{\ \ \ \ \ \ Для\ SWO\ также\ надо\ включить\ трассировку:\ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00036}00036\ \textcolor{comment}{\ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00037}00037\ \textcolor{comment}{\ \ \ \ \ \ @verbatim}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00038}00038\ \textcolor{comment}{\ \ \ \ \ \ \ \ Options\ For\ Target\ -\/>\ Debug\ -\/>\ Debugger\ Settings}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00039}00039\ \textcolor{comment}{\ \ \ \ \ \ @endverbatim}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00040}00040\ \textcolor{comment}{\ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00041}00041\ \textcolor{comment}{\ \ \ \ \ \ В\ вкладке\ Debug:\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00042}00042\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ Port\ =\ SW}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00043}00043\ \textcolor{comment}{\ \ \ \ \ \ В\ вкладке\ Trace:\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00044}00044\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ Указать\ Core\ Clock}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00045}00045\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ Выставить\ Trace\ Port\ =\ SWO}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00046}00046\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ ITM\ -\/\ выбрать\ нужный\ порт\ (для\ Keil\ нулевой\ порт)\ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00047}00047\ \textcolor{comment}{\ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00048}00048\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00049}00049\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00050}00050\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00051}00051\ \textcolor{comment}{\ \ *\ @def\ my\_printf(...)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00052}00052\ \textcolor{comment}{\ \ *\ @brief\ Универсальный\ макрос\ для\ вывода\ трассировки}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00053}00053\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00054}00054\ \textcolor{comment}{\ \ *\ \ -\/\ RTT\_TRACE\_ENABLE\ \ \ \ \`{}SEGGER\_RTT\_printf(0,\ ...)`}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00055}00055\ \textcolor{comment}{\ \ *\ \ -\/\ SWO\_TRACE\_ENABLE\ -\/\ \`{}printf(...)`}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00056}00056\ \textcolor{comment}{\ \ *\ \ -\/\ NO\_TRACE\ -\/\ пустой\ макрос}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00057}00057\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00058}00058\ \textcolor{comment}{\ \ *\ @def\ log\_printf(TAG,\ fmt,\ ...)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00059}00059\ \textcolor{comment}{\ \ *\ @brief\ Макрос\ логирования\ с\ поддержкой\ уровней\ @ref\ LOG\_LEVEL}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @param\ TAG\ \ Тэг\ лога}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @param\ fmt,\ ...\ \ Форматируемая\ строка}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00062}00062\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00063}00063\ \textcolor{comment}{\ \ *\ \ -\/\ @ref\ LOG\_LEVEL\ ==\ 0\ -\/\ логирование\ отключено\ (макрос\ пустой)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ \ -\/\ @ref\ LOG\_LEVEL\ ==\ 1\ -\/\ выводится\ время\ @ref\ local\_time\ и\ TAG}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00065}00065\ \textcolor{comment}{\ \ *\ @code}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00066}00066\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [123]\ [ADC]\ Measure\ Done}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00067}00067\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [456]\ [ADC]\ Measure\ Err}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ @endcode}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ \ -\/\ @ref\ LOG\_LEVEL\ >=\ 2\ -\/\ выводится\ время,\ TAG,\ имя\ файла\ и\ номер\ строки}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00070}00070\ \textcolor{comment}{\ \ *\ @code}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00071}00071\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [123]\ [ADC]\ (../Core/Src/adc.c:75)\ Measure\ Done}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00072}00072\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [456]\ [ADC]\ (../Core/Src/adc.c:80)\ Measure\ Err}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00073}00073\ \textcolor{comment}{\ \ *\ @endcode}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00074}00074\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00075}00075\ \textcolor{preprocessor}{\#ifdef\ SERIAL\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00076}00076\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00077}00077\ \textcolor{preprocessor}{\ \ \#if\ defined(RTT\_TRACE\_ENABLE)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00078}00078\ \textcolor{preprocessor}{\ \ \ \ \#undef\ SWO\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00079}00079\ \textcolor{preprocessor}{\ \ \ \ \#include\ "{}SEGGER\_RTT.h"{}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00080}\mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{00080}}\ \textcolor{preprocessor}{\ \ \ \ \#define\ my\_printf(...)\ \ \ \ \ \ \ \ SEGGER\_RTT\_printf(0,\ \_\_VA\_ARGS\_\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00081}00081\ \textcolor{preprocessor}{\ \ \#elif\ defined(SWO\_TRACE\_ENABLE)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00082}00082\ \textcolor{preprocessor}{\ \ \ \ \#undef\ RTT\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00083}00083\ \textcolor{preprocessor}{\ \ \ \ \#define\ my\_printf(...)\ \ \ \ \ \ \ \ printf(\_\_VA\_ARGS\_\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00084}00084\ \textcolor{preprocessor}{\ \ \#else\ }\textcolor{comment}{//\ NO\_TRACE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00085}00085\ \textcolor{preprocessor}{\ \ \ \ \#define\ my\_printf(...)\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00086}00086\ \textcolor{preprocessor}{\ \ \ \ \#warning\ No\ trace\ is\ selected.\ Serial\ debug\ wont\ work.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00087}00087\ \textcolor{preprocessor}{\ \ \#endif\ }\textcolor{comment}{//\ RTT\_TRACE\_ENABLE/SWO\_TRACE\_ENABLE/NO\_TRACE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00088}00088\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//SERIAL\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00089}00089\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00090}00090\ \textcolor{preprocessor}{\ \ \#define\ my\_printf(...)\ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00091}00091\ \textcolor{preprocessor}{\ \ \#undef\ RTT\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00092}00092\ \textcolor{preprocessor}{\ \ \#undef\ SWO\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00093}00093\ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00094}00094\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//SERIAL\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00007}00007\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ \ \ Дефайны\ для\ работы\ с\ трассировкой}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00008}00008\ \textcolor{comment}{*************************************************************************/}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00009}00009\ \textcolor{preprocessor}{\#ifndef\ \_\_TRACE\_H\_}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00010}00010\ \textcolor{preprocessor}{\#define\ \_\_TRACE\_H\_}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00011}00011\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00012}00012\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00013}00013\ \textcolor{preprocessor}{\#include\ }\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00014}00014\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00015}00015\ \textcolor{comment}{\ \ *\ @addtogroup\ TRACE\_SERIAL\ \ \ \ Serial\ trace\ defines}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00016}00016\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ TRACE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00017}00017\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Дефайны\ для\ работы\ с\ serial\ трассировкой\ (SWO,\ RTT)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00018}00018\ \textcolor{comment}{\ \ *\ @details\ \ \ \ В\ зависимости\ от\ настроек\ определяется\ дефайн\ @ref\ my\_printf()\ и\ @ref\ log\_printf()\ для\ работы\ с\ трассировкой:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00019}00019\ \textcolor{comment}{\ \ \ \ -\/\ @ref\ SERIAL\_TRACE\_ENABLE\ -\/\ Если\ трассировка\ \ отключена,\ то\ все\ дефайны\ определяются\ как\ 'ничего'\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00020}00020\ \textcolor{comment}{\ \ \ \ \ \ и\ на\ производительность\ кода\ не\ влияют}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00021}00021\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00022}00022\ \textcolor{comment}{\ \ \ \ -\/\ @ref\ RTT\_TRACE\_ENABLE\ -\/\ для\ RTT\ это\ будет\ вызов\ функции\ SEGGER\_RTT\_printf()}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00023}00023\ \textcolor{comment}{\ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00024}00024\ \textcolor{comment}{\ \ \ \ \ \ Предварительно\ надо\ подключить\ библиотеку\ SEGGER\ RTT\ (SEGGER\_RTT.h)\ и\ вызвать\ функцию\ SEGGER\_RTT\_Init()}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00025}00025\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00026}00026\ \textcolor{comment}{\ \ \ \ -\/\ @ref\ SWO\_TRACE\_ENABLE\ для\ SWO\ это\ будет\ просто\ printf()}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00027}00027\ \textcolor{comment}{\ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00028}00028\ \textcolor{comment}{\ \ \ \ \ \ Предварительно\ надо\ подключить\ библиотеку\ STDOUT\ и\ retarget\ под\ ITM:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00029}00029\ \textcolor{comment}{\ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00030}00030\ \textcolor{comment}{\ \ \ \ \ \ @verbatim}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00031}00031\ \textcolor{comment}{\ \ \ \ \ \ \ \ Manage\ Run-\/Time\ Environment\ -\/>\ Compiler\ -\/>\ I/O\ -\/>\ STDOUT\ -\/>\ ITM}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00032}00032\ \textcolor{comment}{\ \ \ \ \ \ @endverbatim}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00033}00033\ \textcolor{comment}{\ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00034}00034\ \textcolor{comment}{\ \ \ \ \ \ Для\ SWO\ также\ надо\ включить\ трассировку:\ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00035}00035\ \textcolor{comment}{\ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00036}00036\ \textcolor{comment}{\ \ \ \ \ \ @verbatim}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00037}00037\ \textcolor{comment}{\ \ \ \ \ \ \ \ Options\ For\ Target\ -\/>\ Debug\ -\/>\ Debugger\ Settings}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00038}00038\ \textcolor{comment}{\ \ \ \ \ \ @endverbatim}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00039}00039\ \textcolor{comment}{\ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00040}00040\ \textcolor{comment}{\ \ \ \ \ \ В\ вкладке\ Debug:\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00041}00041\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ Port\ =\ SW}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00042}00042\ \textcolor{comment}{\ \ \ \ \ \ В\ вкладке\ Trace:\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00043}00043\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ Указать\ Core\ Clock}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00044}00044\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ Выставить\ Trace\ Port\ =\ SWO}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00045}00045\ \textcolor{comment}{\ \ \ \ \ \ \ \ -\/\ ITM\ -\/\ выбрать\ нужный\ порт\ (для\ Keil\ нулевой\ порт)\ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00046}00046\ \textcolor{comment}{\ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00047}00047\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00048}00048\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00049}00049\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00050}00050\ \textcolor{comment}{\ \ *\ @def\ my\_printf(...)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00051}00051\ \textcolor{comment}{\ \ *\ @brief\ Универсальный\ макрос\ для\ вывода\ трассировки}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00052}00052\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00053}00053\ \textcolor{comment}{\ \ *\ \ -\/\ RTT\_TRACE\_ENABLE\ \ \ \ \`{}SEGGER\_RTT\_printf(0,\ ...)`}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00054}00054\ \textcolor{comment}{\ \ *\ \ -\/\ SWO\_TRACE\_ENABLE\ -\/\ \`{}printf(...)`}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00055}00055\ \textcolor{comment}{\ \ *\ \ -\/\ NO\_TRACE\ -\/\ пустой\ макрос}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00056}00056\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00057}00057\ \textcolor{comment}{\ \ *\ @def\ log\_printf(TAG,\ fmt,\ ...)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00058}00058\ \textcolor{comment}{\ \ *\ @brief\ Макрос\ логирования\ с\ поддержкой\ уровней\ @ref\ LOG\_LEVEL}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00059}00059\ \textcolor{comment}{\ \ *\ @param\ TAG\ \ Тэг\ лога}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @param\ fmt,\ ...\ \ Форматируемая\ строка}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00062}00062\ \textcolor{comment}{\ \ *\ \ -\/\ @ref\ LOG\_LEVEL\ ==\ 0\ -\/\ логирование\ отключено\ (макрос\ пустой)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00063}00063\ \textcolor{comment}{\ \ *\ \ -\/\ @ref\ LOG\_LEVEL\ ==\ 1\ -\/\ выводится\ время\ @ref\ local\_time\ и\ TAG}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ @code}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00065}00065\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [123]\ [ADC]\ Measure\ Done}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00066}00066\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [456]\ [ADC]\ Measure\ Err}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00067}00067\ \textcolor{comment}{\ \ *\ @endcode}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00068}00068\ \textcolor{comment}{\ \ *\ \ -\/\ @ref\ LOG\_LEVEL\ >=\ 2\ -\/\ выводится\ время,\ TAG,\ имя\ файла\ и\ номер\ строки}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ @code}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00070}00070\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [123]\ [ADC]\ (../Core/Src/adc.c:75)\ Measure\ Done}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00071}00071\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ [456]\ [ADC]\ (../Core/Src/adc.c:80)\ Measure\ Err}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00072}00072\ \textcolor{comment}{\ \ *\ @endcode}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00073}00073\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00074}00074\ \textcolor{preprocessor}{\#ifdef\ SERIAL\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00075}00075\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00076}00076\ \textcolor{preprocessor}{\ \ \#if\ defined(RTT\_TRACE\_ENABLE)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00077}00077\ \textcolor{preprocessor}{\ \ \ \ \#undef\ SWO\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00078}00078\ \textcolor{preprocessor}{\ \ \ \ \#include\ "{}SEGGER\_RTT.h"{}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00079}\mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{00079}}\ \textcolor{preprocessor}{\ \ \ \ \#define\ my\_printf(...)\ \ \ \ \ \ \ \ SEGGER\_RTT\_printf(0,\ \_\_VA\_ARGS\_\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00080}00080\ \textcolor{preprocessor}{\ \ \#elif\ defined(SWO\_TRACE\_ENABLE)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00081}00081\ \textcolor{preprocessor}{\ \ \ \ \#undef\ RTT\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00082}00082\ \textcolor{preprocessor}{\ \ \ \ \#define\ my\_printf(...)\ \ \ \ \ \ \ \ printf(\_\_VA\_ARGS\_\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00083}00083\ \textcolor{preprocessor}{\ \ \#else\ }\textcolor{comment}{//\ NO\_TRACE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00084}00084\ \textcolor{preprocessor}{\ \ \ \ \#define\ my\_printf(...)\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00085}00085\ \textcolor{preprocessor}{\ \ \ \ \#warning\ No\ trace\ is\ selected.\ Serial\ debug\ wont\ work.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00086}00086\ \textcolor{preprocessor}{\ \ \#endif\ }\textcolor{comment}{//\ RTT\_TRACE\_ENABLE/SWO\_TRACE\_ENABLE/NO\_TRACE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00087}00087\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//SERIAL\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00088}00088\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00089}00089\ \textcolor{preprocessor}{\ \ \#define\ my\_printf(...)\ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00090}00090\ \textcolor{preprocessor}{\ \ \#undef\ RTT\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00091}00091\ \textcolor{preprocessor}{\ \ \#undef\ SWO\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00092}00092\ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00093}00093\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//SERIAL\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00094}00094\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00095}00095\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00096}00096\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00097}00097\ \textcolor{preprocessor}{\#ifndef\ local\_time}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00098}00098\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00099}00099\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00100}00100\ \textcolor{preprocessor}{\#ifndef\ LOG\_LEVEL}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00101}00101\ \textcolor{preprocessor}{\#define\ LOG\_LEVEL\ 1\ \ }\textcolor{comment}{///<\ @brief\ Уровень\ логирования\ (по\ умолчанию\ ==\ 1)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00102}00102\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00096}00096\ \textcolor{preprocessor}{\#ifndef\ local\_time}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00097}00097\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00098}00098\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00099}00099\ \textcolor{preprocessor}{\#ifndef\ LOG\_LEVEL}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00100}00100\ \textcolor{preprocessor}{\#define\ LOG\_LEVEL\ 1\ \ }\textcolor{comment}{///<\ @brief\ Уровень\ логирования\ (по\ умолчанию\ ==\ 1)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00101}00101\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00102}00102\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00103}00103\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00104}00104\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00105}00105\ \textcolor{preprocessor}{\#if\ LOG\_LEVEL\ ==\ 0\ }\textcolor{comment}{//\ лог\ отключен}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00106}00106\ \textcolor{preprocessor}{\ \ \ \ \#define\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00107}00107\ \textcolor{preprocessor}{log\_printf(TAG,\ fmt,\ ...)\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00108}00108\ \textcolor{preprocessor}{\#elif\ LOG\_LEVEL\ ==\ 1\ }\textcolor{comment}{//\ только\ тэг}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00109}\mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}{00109}}\ \textcolor{preprocessor}{\ \ \ \ \#define\ log\_printf(TAG,\ fmt,\ ...)\ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00110}00110\ \textcolor{preprocessor}{my\_printf("{}\(\backslash\)n[\%lu]\ [\%s]\ "{}\ fmt,\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00111}00111\ \textcolor{preprocessor}{(unsigned\ long)local\_time(),\ TAG,\ \#\#\_\_VA\_ARGS\_\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00112}00112\ \textcolor{preprocessor}{\#elif\ LOG\_LEVEL\ >=\ 2\ }\textcolor{comment}{//\ всё}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00113}00113\ \textcolor{preprocessor}{\ \ \ \ \#define\ log\_printf(TAG,\ fmt,\ ...)\ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00114}00114\ \textcolor{preprocessor}{my\_printf("{}\(\backslash\)n[\%lu]\ [\%s]\ (\%s:\%d)\ "{}\ fmt,\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00115}00115\ \textcolor{preprocessor}{(unsigned\ long)local\_time(),\ TAG,\ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \#\#\_\_VA\_ARGS\_\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00116}00116\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00117}00117\ \ \ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00118}00118\ \textcolor{comment}{/**\ TRACE\_SERIAL}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00119}00119\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00120}00120\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00121}00121\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00122}00122\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00123}00123\ \textcolor{comment}{\ \ *\ @addtogroup\ TRACE\_GPIO\ \ \ \ GPIO\ trace\ defines}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00124}00124\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ TRACE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00125}00125\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Дефайны\ для\ работы\ с\ GPIO\ трассировкой}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @details\ \ \ \ Определяется\ дефайны\ для\ работы\ с\ GPIO\ трассировкой:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00127}00127\ \textcolor{comment}{\ \ \ \ -\/\ TRACE\_GPIO\_RESET()\ -\/\ для\ сброса\ ножки\ GPIO\ (через\ BSRR)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00128}00128\ \textcolor{comment}{\ \ \ \ -\/\ TRACE\_GPIO\_SET()\ -\/\ для\ выставления\ ножки\ GPIO\ (через\ BSRR)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00129}00129\ \textcolor{comment}{\ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00130}00130\ \textcolor{comment}{\ \ \ \ -\/\ Если\ трассировка\ @ref\ GPIO\_TRACE\_ENABLE\ отключена,\ то\ все\ дефайны\ определяются\ как\ 'ничего'\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00131}00131\ \textcolor{comment}{\ \ \ \ \ \ и\ на\ производительность\ кода\ не\ влияют}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00132}00132\ \textcolor{comment}{\ \ *\ @\{\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00133}00133\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00134}00134\ \textcolor{comment}{\ \ *\ @def\ TRACE\_GPIO\_RESET(\_gpio\_,\ \_pin\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00135}00135\ \textcolor{comment}{\ \ *\ @brief\ Сбросить\ указанную\ ножку\ GPIO}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00136}00136\ \textcolor{comment}{\ \ *\ @param\ \_gpio\_\ \ Указатель\ на\ структуру\ GPIO\ (напр.\ \ GPIOA)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00137}00137\ \textcolor{comment}{\ \ *\ @param\ \_pin\_\ \ \ Номер\ ножки\ (напр.\ GPIO\_PIN\_0)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00138}00138\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00139}00139\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ не\ определён\ -\/\ макрос\ пустой}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00140}00140\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ определён\ -\/\ устанавливает\ бит\ сброса\ через\ BSRR\ ((\_pin\_)<<16)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00141}00141\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @def\ TRACE\_GPIO\_SET(\_gpio\_,\ \_pin\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @brief\ Установить\ указанную\ ножку\ GPIO}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @param\ \_gpio\_\ \ Указатель\ на\ структуру\ GPIO\ (например\ GPIOA)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @param\ \_pin\_\ \ \ Номер\ ножки\ (напр.\ GPIO\_PIN\_0)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ не\ определён\ -\/\ макрос\ пустой}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00148}00148\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ определён\ -\/\ устанавливает\ бит\ установки\ через\ BSRR\ (\_pin\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00149}00149\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00150}00150\ \textcolor{preprocessor}{\#ifndef\ GPIO\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00152}00152\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00153}00153\ \textcolor{preprocessor}{\#else}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00154}\mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}{00154}}\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)\ \ \ \ \ \ \ \ \ \ (\_gpio\_)-\/>BSRR\ =\ (((\_pin\_)))}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00155}\mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}{00155}}\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)\ \ \ \ \ \ \ \ (\_gpio\_)-\/>BSRR\ =\ ((\_pin\_)<<16)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00156}00156\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//GPIO\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00157}00157\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00158}00158\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00159}00159\ \textcolor{comment}{/**\ TRACE\_GPIO}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00161}00161\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00104}00104\ \textcolor{preprocessor}{\#if\ LOG\_LEVEL\ ==\ 0\ }\textcolor{comment}{//\ лог\ отключен}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00105}00105\ \textcolor{preprocessor}{\ \ \ \ \#define\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00106}\mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}{00106}}\ \textcolor{preprocessor}{log\_printf(TAG,\ fmt,\ ...)\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00107}00107\ \textcolor{preprocessor}{\#elif\ LOG\_LEVEL\ ==\ 1\ }\textcolor{comment}{//\ только\ тэг}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00108}00108\ \textcolor{preprocessor}{\ \ \ \ \#define\ log\_printf(TAG,\ fmt,\ ...)\ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00109}00109\ \textcolor{preprocessor}{my\_printf("{}\(\backslash\)n[\%lu]\ [\%s]\ "{}\ fmt,\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00110}00110\ \textcolor{preprocessor}{(unsigned\ long)local\_time(),\ TAG,\ \#\#\_\_VA\_ARGS\_\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00111}00111\ \textcolor{preprocessor}{\#elif\ LOG\_LEVEL\ >=\ 2\ }\textcolor{comment}{//\ всё}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00112}00112\ \textcolor{preprocessor}{\ \ \ \ \#define\ log\_printf(TAG,\ fmt,\ ...)\ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00113}00113\ \textcolor{preprocessor}{my\_printf("{}\(\backslash\)n[\%lu]\ [\%s]\ (\%s:\%d)\ "{}\ fmt,\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00114}00114\ \textcolor{preprocessor}{(unsigned\ long)local\_time(),\ TAG,\ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \#\#\_\_VA\_ARGS\_\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00115}00115\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00116}00116\ \ \ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00117}00117\ \textcolor{comment}{/**\ TRACE\_SERIAL}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00118}00118\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00119}00119\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00120}00120\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00121}00121\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00122}00122\ \textcolor{comment}{\ \ *\ @addtogroup\ TRACE\_GPIO\ \ \ \ GPIO\ trace\ defines}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00123}00123\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ TRACE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00124}00124\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Дефайны\ для\ работы\ с\ GPIO\ трассировкой}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00125}00125\ \textcolor{comment}{\ \ *\ @details\ \ \ \ Определяется\ дефайны\ для\ работы\ с\ GPIO\ трассировкой:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00126}00126\ \textcolor{comment}{\ \ \ \ -\/\ TRACE\_GPIO\_RESET()\ -\/\ для\ сброса\ ножки\ GPIO\ (через\ BSRR)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00127}00127\ \textcolor{comment}{\ \ \ \ -\/\ TRACE\_GPIO\_SET()\ -\/\ для\ выставления\ ножки\ GPIO\ (через\ BSRR)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00128}00128\ \textcolor{comment}{\ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00129}00129\ \textcolor{comment}{\ \ \ \ -\/\ Если\ трассировка\ @ref\ GPIO\_TRACE\_ENABLE\ отключена,\ то\ все\ дефайны\ определяются\ как\ 'ничего'\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00130}00130\ \textcolor{comment}{\ \ \ \ \ \ и\ на\ производительность\ кода\ не\ влияют}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00131}00131\ \textcolor{comment}{\ \ *\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00132}00132\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00133}00133\ \textcolor{comment}{\ \ *\ @def\ TRACE\_GPIO\_RESET(\_gpio\_,\ \_pin\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00134}00134\ \textcolor{comment}{\ \ *\ @brief\ Сбросить\ указанную\ ножку\ GPIO}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00135}00135\ \textcolor{comment}{\ \ *\ @param\ \_gpio\_\ \ Указатель\ на\ структуру\ GPIO\ (напр.\ \ GPIOA)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00136}00136\ \textcolor{comment}{\ \ *\ @param\ \_pin\_\ \ \ Номер\ ножки\ (напр.\ GPIO\_PIN\_0)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00137}00137\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00138}00138\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ не\ определён\ -\/\ макрос\ пустой}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00139}00139\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ определён\ -\/\ устанавливает\ бит\ сброса\ через\ BSRR\ ((\_pin\_)<<16)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00140}00140\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00141}00141\ \textcolor{comment}{\ \ *\ @def\ TRACE\_GPIO\_SET(\_gpio\_,\ \_pin\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @brief\ Установить\ указанную\ ножку\ GPIO}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @param\ \_gpio\_\ \ Указатель\ на\ структуру\ GPIO\ (например\ GPIOA)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @param\ \_pin\_\ \ \ Номер\ ножки\ (напр.\ GPIO\_PIN\_0)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @details\ Варианты\ реализации:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ не\ определён\ -\/\ макрос\ пустой}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ \ -\/\ GPIO\_TRACE\_ENABLE\ определён\ -\/\ устанавливает\ бит\ установки\ через\ BSRR\ (\_pin\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00148}00148\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00149}00149\ \textcolor{preprocessor}{\#ifndef\ GPIO\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00152}00152\ \textcolor{preprocessor}{\#else}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00153}\mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}{00153}}\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_SET(\_gpio\_,\_pin\_)\ \ \ \ \ \ \ \ \ \ (\_gpio\_)-\/>BSRR\ =\ (((\_pin\_)))}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00154}\mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}{00154}}\ \textcolor{preprocessor}{\ \ \#define\ TRACE\_GPIO\_RESET(\_gpio\_,\_pin\_)\ \ \ \ \ \ \ \ (\_gpio\_)-\/>BSRR\ =\ ((\_pin\_)<<16)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00155}00155\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//GPIO\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00156}00156\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00157}00157\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00158}00158\ \textcolor{comment}{/**\ TRACE\_GPIO}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00160}00160\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00161}00161\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00162}00162\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00163}00163\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00164}00164\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00165}00165\ \textcolor{preprocessor}{\#if\ defined(HAL\_MODULE\_ENABLED)\ \&\&\ defined(RTT\_TRACE\_ENABLE)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00166}00166\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00167}00167\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @addtogroup\ TRACE\_RTT\_FLASH\ \ \ \ Flash\ RTT\ Buffer}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ TRACE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Макросы\ и\ функции\ для\ сохранения/чтения\ RTT\ буфера\ в\ Flash}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ @details\ \ \ \ Модуль\ позволяет\ сохранять\ данные\ RTT\ буфера\ во\ Flash\ и\ читать\ их\ обратно\ по\ тегам.\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00172}00172\ \textcolor{comment}{\ \ *\ Теги\ работают\ следующим\ образом:\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00173}00173\ \textcolor{comment}{\ \ *\ \ -\/\ Базовый\ тег\ (младший\ байт\ =\ 0):\ модуль\ сам\ выбирает\ первый\ свободный\ слот\ во\ Flash;\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00174}00174\ \textcolor{comment}{\ \ *\ \ \ \ новые\ записи\ получают\ автоинкрементированный\ младший\ байт\ тега\ (от\ 0x00\ до\ 0xFF).\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00175}00175\ \textcolor{comment}{\ \ *\ \ -\/\ Конкретный\ тег\ (младший\ байт\ !=\ 0):\ запись\ или\ чтение\ происходит\ строго\ с\ указанным\ тегом;\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ \ \ \ если\ слот\ с\ таким\ тегом\ уже\ занят,\ запись\ не\ выполняется.\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ \ -\/\ Автоинкремент\ позволяет\ хранить\ несколько\ последовательных\ записей\ в\ пределах\ одного\ базового\ тега,\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ \ \ \ без\ необходимости\ вручную\ отслеживать\ адреса\ Flash\ или\ позиции\ буферов.\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00180}00180\ \textcolor{comment}{\ \ *\ Параметры:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00181}00181\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_BUFFER\_SIZE\ \ \ \ -\/\ Размер\ буфера\ RTT\ в\ Flash}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00182}00182\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_SECTOR\ \ \ \ \ \ \ \ \ -\/\ Сектор\ FLASH\ куда\ положится\ RTT\ буфер}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00183}00183\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_SECTOR\_START\ \ \ -\/\ Начало\ сектора\ RTT\_FLASH\_SECTOR}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_SECTOR\_END\ \ \ \ \ -\/\ Конец\ сектора\ RTT\_FLASH\_SECTOR}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00185}00185\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00186}00186\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00187}00187\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00188}00188\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00189}00189\ \ \ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00190}00190\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00191}00191\ \textcolor{comment}{\ \ *\ @brief\ Структура\ RTT,\ которая\ будет\ положена\ в\ Flash}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00192}00192\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00193}\mbox{\hyperlink{struct_r_t_t___flash_header__t}{00193}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00194}\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{00194}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Уникальный\ идентификатор\ буфера}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00195}\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{00195}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Размер\ данных}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00196}\mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{00196}}\ \ \ \textcolor{keywordtype}{char}\ \ \ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{data}}[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];\ \ \textcolor{comment}{///<\ Буфер\ RTT}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00197}00197\ \}\ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}};} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00198}00198\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00199}00199\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00200}00200\ \textcolor{comment}{\ \ *\ @brief\ Подготовка\ Flash\ к\ записи}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00201}00201\ \textcolor{comment}{\ \ *\ @details\ Сбрасывает\ ошибки\ Flash\ и\ ожидает\ готовности\ перед\ записью}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00202}00202\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00203}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{00203}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{RTT\_FlashPrepare}}(\textcolor{keywordtype}{void})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00204}00204\ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00205}00205\ \ \ HAL\_FLASH\_Unlock();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00206}00206\ \ \ \_\_HAL\_FLASH\_CLEAR\_FLAG(FLASH\_FLAG\_PGSERR\ |\ FLASH\_FLAG\_WRPERR\ |\ FLASH\_FLAG\_OPERR);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00207}00207\ \ \ \textcolor{keywordflow}{while}\ (\_\_HAL\_FLASH\_GET\_FLAG(FLASH\_FLAG\_BSY))\ \{\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00208}00208\ \ \ \_\_NOP();\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00209}00209\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00210}00210\ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00211}00211\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00212}00212\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @brief\ Сохраняет\ последние\ символы\ RTT-\/буфера\ в\ Flash\ по\ тегу}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ @param\ tag\ \ \ \ \ \ \ \ Базовый\ или\ конкретный\ идентификатор\ буфера.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ @param\ tail\_size\ \ Количество\ последних\ символов\ RTT\ для\ копирования}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ @param\ buf\_num\ \ \ \ Указатель\ на\ переменную\ в\ которую\ запишется\ номер\ буфера\ для\ конкретного\ тега}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ @return\ >=0\ —\ номер\ буфера\ (тег)\ для\ записи,\ <0\ —\ ошибка\ (нет\ места,\ тег\ уже\ занят,\ ошибка\ записи\ в\ флеш)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00218}00218\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00219}00219\ \textcolor{comment}{\ \ *\ @details\ \ Автоматически\ копирует\ последние\ tail\_size\ символов\ из\ RTT-\/буфера}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00220}00220\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ и\ записывает\ их\ во\ Flash.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ Тег\ может\ быть\ базовым\ или\ конкретным:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ базовый\ (младший\ байт\ ==\ 0)\ —\ будет\ выбран\ первый\ свободный\ слот\ с\ автоинкрементом.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00223}00223\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Автоинкремент\ формируется\ в\ пределах\ от\ 0x1\ до\ 0xFF}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00224}00224\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ конкретный\ (младший\ байт\ !=\ 0)\ —\ запись\ выполняется\ только\ с\ этим\ тегом,\ иначе\ ошибка.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00225}00225\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00226}00226\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00227}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}{00227}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}{RTT\_SaveToFlash}}(uint32\_t\ tag,\ uint32\_t\ tail\_size)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00228}00228\ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00229}00229\ \ \ \textcolor{keywordflow}{if}\ (tag\ ==\ 0xFFFFFFFF)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00230}00230\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Неверный\ тег}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00231}00231\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00232}00232\ \ \ SEGGER\_RTT\_BUFFER\_UP\ *up\ =\ \&\_SEGGER\_RTT.aUp[0];} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00233}00233\ \ \ \textcolor{keywordtype}{unsigned}\ buf\_size\ =\ up-\/>SizeOfBuffer;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00234}00234\ \ \ \textcolor{keywordtype}{unsigned}\ wr\ =\ up-\/>WrOff;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00235}00235\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00236}00236\ \ \ \textcolor{comment}{//\ Ограничиваем\ по\ размеру\ буфера\ RTT\ и\ RTT\_FLASH\_BUFFER\_SIZE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00237}00237\ \ \ \textcolor{keywordtype}{unsigned}\ n\ =\ (tail\_size\ >\ buf\_size)\ ?\ buf\_size\ :\ tail\_size;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00238}00238\ \ \ \textcolor{keywordflow}{if}\ (n\ >\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00239}00239\ \ \ \ \ n\ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}};} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00240}00240\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00241}00241\ \ \ uint32\_t\ addr\ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297}{RTT\_FLASH\_SECTOR\_START}};} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00242}00242\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *flash\_hdr\ =\ NULL;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00243}00243\ \ \ uint32\_t\ base\_tag\ =\ tag\ \&\ 0xFFFFFF00;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00244}00244\ \ \ uint32\_t\ next\_tag\ =\ (tag\ \&\ 0xFF)\ ==\ 0\ ?\ tag\ +\ 1\ :\ tag;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00245}00245\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00246}00246\ \ \ \textcolor{comment}{//\ Ищем\ первый\ свободный\ слот,\ параллельно\ автоинкрементируем\ тег}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00247}00247\ \ \ \textcolor{keywordflow}{while}\ ((addr\ +\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}))\ <=\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}{RTT\_FLASH\_SECTOR\_END}})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00248}00248\ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00249}00249\ \ \ \ \ flash\_hdr\ =\ (\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *)addr;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00250}00250\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00251}00251\ \ \ \ \ \textcolor{keywordflow}{if}\ (flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ 0xFFFFFFFF)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00252}00252\ \ \ \ \ \ \ \textcolor{keywordflow}{break};\ \ \textcolor{comment}{//\ Нашли\ свободное\ место}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00253}00253\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00254}00254\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00255}00255\ \ \ \ \ \textcolor{keywordflow}{if}((flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \&\ 0xFFFFFF00)\ ==\ base\_tag)\ \textcolor{comment}{//\ выбраный\ тег}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00256}00256\ \ \ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00257}00257\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ ((tag\ \&\ 0xFF)\ ==\ 0)\ \textcolor{comment}{//\ если\ он\ базовый\ -\/\ ищем\ последний}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00258}00258\ \ \ \ \ \ \ \ \ next\_tag\ =\ flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ +\ 1;\ \ \textcolor{comment}{//\ автоинкремент}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00259}00259\ \ \ \ \ \ \ \textcolor{keywordflow}{else}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00260}00260\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ tag)\ \textcolor{comment}{//\ если\ он\ конкретный\ и\ уже\ существует\ -\/\ то\ ошибка}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00261}00261\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ конкретный\ тег\ уже\ занят}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00262}00262\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00263}00263\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00264}00264\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00265}00265\ \ \ \ \ \textcolor{keywordflow}{if}(next\_tag\ -\/\ tag\ >\ 0xFF)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00266}00266\ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \textcolor{comment}{//\ автоинкремент\ слишком\ большой}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00267}00267\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00268}00268\ \ \ \ \ addr\ +=\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}});} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00269}00269\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00270}00270\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00271}00271\ \ \ \textcolor{keywordflow}{if}\ ((addr\ +\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}))\ >\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}{RTT\_FLASH\_SECTOR\_END}})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Нет\ свободного\ места}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00273}00273\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00274}00274\ \ \ \textcolor{comment}{//\ Копируем\ последние\ n\ символов\ из\ RTT}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00275}00275\ \ \ \textcolor{keywordtype}{char}\ temp[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00276}00276\ \ \ \textcolor{keywordtype}{unsigned}\ valid\_count\ =\ 0;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00277}00277\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00278}00278\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{unsigned}\ i\ =\ 0;\ i\ <\ n;\ i++)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00279}00279\ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ idx\ =\ (wr\ +\ buf\_size\ -\/\ n\ +\ i)\ \%\ buf\_size;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordtype}{char}\ c\ =\ up-\/>pBuffer[idx];} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00282}00282\ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ !=\ 0)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00283}00283\ \ \ \ \ \ \ temp[valid\_count++]\ =\ c;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00284}00284\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00285}00285\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00286}00286\ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{RTT\_FlashPrepare}}();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00287}00287\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00288}00288\ \ \ \textcolor{comment}{//\ Формируем\ структуру\ в\ RAM}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00289}00289\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ flash\_data;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00290}00290\ \ \ flash\_data.\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \ =\ next\_tag;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00291}00291\ \ \ flash\_data.\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ =\ valid\_count;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00292}00292\ \ \ memcpy(flash\_data.\mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{data}},\ temp,\ valid\_count);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00293}00293\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00294}00294\ \ \ \textcolor{comment}{//\ Записываем\ структуру\ во\ Flash\ (по\ 4\ байта)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00295}00295\ \ \ \textcolor{keyword}{const}\ uint32\_t\ *p\ =\ (\textcolor{keyword}{const}\ uint32\_t\ *)\&flash\_data;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00296}00296\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{unsigned}\ i\ =\ 0;\ i\ <\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}})\ /\ 4;\ i++)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00297}00297\ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00298}00298\ \ \ \ \ \textcolor{keywordflow}{if}(HAL\_FLASH\_Program(FLASH\_TYPEPROGRAM\_WORD,\ addr\ +\ i\ *\ 4,\ p[i])\ !=\ HAL\_OK)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00299}00299\ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00300}00300\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00301}00301\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00302}00302\ \ \ HAL\_FLASH\_Lock();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00303}00303\ \ \ \_\_DSB();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00304}00304\ \ \ \_\_ISB();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00305}00305\ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00306}00306\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00307}00307\ \ \ \textcolor{keywordflow}{return}\ (\textcolor{keywordtype}{int})(next\_tag\&0xFF);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00308}00308\ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00309}00309\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00310}00310\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00311}00311\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00312}00312\ \textcolor{comment}{\ \ *\ @brief\ Читает\ последние\ символы\ RTT-\/буфера\ из\ Flash\ по\ тегу}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00313}00313\ \textcolor{comment}{\ \ *\ @param\ tag\ \ \ \ \ \ \ \ Базовый\ или\ конкретный\ идентификатор\ буфера.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00314}00314\ \textcolor{comment}{\ \ *\ @param\ Buffer\ \ \ \ \ Буфер\ назначения\ для\ копирования\ данных}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00315}00315\ \textcolor{comment}{\ \ *\ @param\ tail\_size\ \ Количество\ последних\ символов,\ которые\ нужно\ прочитать}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00316}00316\ \textcolor{comment}{\ \ *\ @param\ read\_size\ \ Количество\ считанных\ символов}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00317}00317\ \textcolor{comment}{\ \ *\ @return\ >=0\ —\ номер\ буфера\ (тег)\ для\ записи,\ <0\ —\ ошибка\ (тег\ не\ найден\ или\ структура\ повреждена)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00318}00318\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00319}00319\ \textcolor{comment}{\ \ *\ @details\ \ Копирует\ последние\ tail\_size\ символов\ из\ найденной\ записи\ Flash\ в\ Buffer.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00320}00320\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ Тег\ может\ быть\ базовым\ или\ конкретным:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00321}00321\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ базовый\ (младший\ байт\ ==\ 0)\ —\ будет\ прочитана\ последняя\ запись\ из\ группы.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00322}00322\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ конкретный\ (младший\ байт\ !=\ 0)\ —\ прочитывается\ именно\ эта\ запись.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00323}00323\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00324}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}{00324}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}{RTT\_ReadFromFlash}}(uint32\_t\ tag,\ \textcolor{keywordtype}{char}\ *Buffer,\ uint32\_t\ tail\_size,\ uint32\_t\ *read\_size)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00325}00325\ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00326}00326\ \ \ \textcolor{keywordflow}{if}\ (!Buffer\ ||\ tail\_size\ ==\ 0)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00327}00327\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Неверные\ параметры}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00328}00328\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00329}00329\ \ \ \textcolor{keywordflow}{if}\ (tag\ ==\ 0xFFFFFFFF)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00330}00330\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Недопустимый\ тег}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00331}00331\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00332}00332\ \ \ uint32\_t\ addr\ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297}{RTT\_FLASH\_SECTOR\_START}};} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00333}00333\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *flash\_hdr\ =\ NULL;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00334}00334\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *target\_hdr\ =\ NULL;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00335}00335\ \ \ uint32\_t\ base\_tag\ =\ tag\ \&\ 0xFFFFFF00;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00336}00336\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00337}00337\ \ \ \textcolor{comment}{//\ Поиск\ записи\ по\ тегу}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00338}00338\ \ \ \textcolor{keywordflow}{while}\ ((addr\ +\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}))\ <=\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}{RTT\_FLASH\_SECTOR\_END}})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00339}00339\ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00340}00340\ \ \ \ \ flash\_hdr\ =\ (\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *)addr;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00341}00341\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00342}00342\ \ \ \ \ \textcolor{keywordflow}{if}\ (flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ 0xFFFFFFFF)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00343}00343\ \ \ \ \ \ \ \textcolor{keywordflow}{break};\ \ \textcolor{comment}{//\ Достигнут\ конец\ записанных\ структур}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00344}00344\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00345}00345\ \ \ \ \ \textcolor{comment}{//\ выбраный\ тег}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00346}00346\ \ \ \ \ \textcolor{keywordflow}{if}((flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \&\ 0xFFFFFF00)\ ==\ base\_tag)\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00347}00347\ \ \ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00348}00348\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ ((tag\ \&\ 0xFF)\ ==\ 0)\ \textcolor{comment}{//\ если\ он\ базовый\ -\/\ ищем\ последний\ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00349}00349\ \ \ \ \ \ \ \ \ target\_hdr\ =\ flash\_hdr;\ \ \textcolor{comment}{//\ сохраняем\ последний\ в\ группе}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00350}00350\ \ \ \ \ \ \ \textcolor{keywordflow}{else}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00351}00351\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ tag)\ \textcolor{comment}{//\ если\ он\ конкретный\ и\ найден\ -\/\ берем\ его}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00352}00352\ \ \ \ \ \ \ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00353}00353\ \ \ \ \ \ \ \ \ \ \ target\_hdr\ =\ flash\_hdr;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00354}00354\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};\ \ \textcolor{comment}{//\ конкретный\ тег\ найден}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00355}00355\ \ \ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00356}00356\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00357}00357\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00358}00358\ \ \ \ \ addr\ +=\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}});} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00359}00359\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00360}00360\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00361}00361\ \ \ \textcolor{keywordflow}{if}\ (!target\_hdr)\ \textcolor{keywordflow}{return}\ -\/1;\ \textcolor{comment}{//\ Тег\ не\ найден}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00362}00362\ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00363}00363\ \ \ \textcolor{comment}{//\ Проверка\ корректности\ размера}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00364}00364\ \ \ \textcolor{keywordflow}{if}\ (target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ >\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00365}00365\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Повреждённая\ запись\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00366}00366\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00367}00367\ \ \ \textcolor{comment}{//\ Определяем\ количество\ читаемых\ символов}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00368}00368\ \ \ uint32\_t\ n\ =\ (tail\_size\ >\ target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}})\ ?\ target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ :\ tail\_size;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00369}00369\ \ \ \textcolor{comment}{//\ Начальная\ позиция\ для\ чтения\ последних\ tail\_size\ символов}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00370}00370\ \ \ uint32\_t\ start\ =\ target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ -\/\ n;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00371}00371\ \ \ \textcolor{comment}{//\ Копируем\ данные\ из\ Flash\ в\ RAM}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00372}00372\ \ \ memcpy(Buffer,\ \&target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{data}}[start],\ n);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00373}00373\ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00374}00374\ \ \ \textcolor{keywordflow}{if}(read\_size\ !=\ NULL)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00375}00375\ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00376}00376\ \ \ \ \ *read\_size\ =\ n;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00377}00377\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00378}00378\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00379}00379\ \ \ \_\_DSB();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00380}00380\ \ \ \_\_ISB();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00381}00381\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00382}00382\ \ \ \textcolor{keywordflow}{return}\ (\textcolor{keywordtype}{int})(target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \&\ 0xFF);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00383}00383\ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00384}00384\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00385}00385\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00386}00386\ \textcolor{comment}{\ \ *\ @brief\ Стирание\ сектора\ Flash\ с\ RTT-\/буфером}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00387}00387\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00388}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}{00388}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}{RTT\_EraseFlash}}(\textcolor{keywordtype}{void})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00389}00389\ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00390}00390\ \ \ FLASH\_EraseInitTypeDef\ eraseInit;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00391}00391\ \ \ uint32\_t\ pageError\ =\ 0;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00392}00392\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00393}00393\ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{RTT\_FlashPrepare}}();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00394}00394\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00395}00395\ \ \ eraseInit.TypeErase\ \ \ =\ FLASH\_TYPEERASE\_SECTORS;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00396}00396\ \ \ eraseInit.Sector\ \ \ \ \ \ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga3bc1b76864e1d32cbdd174d4caae7724}{RTT\_FLASH\_SECTOR}};} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00397}00397\ \ \ eraseInit.NbSectors\ \ \ =\ 1;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00398}00398\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00399}00399\ \ \ \textcolor{keywordflow}{if}\ (HAL\_FLASHEx\_Erase(\&eraseInit,\ \&pageError)\ !=\ HAL\_OK)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00400}00400\ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00401}00401\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00402}00402\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00403}00403\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00404}00404\ \ \ HAL\_FLASH\_Lock();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00405}00405\ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00406}00406\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00407}00407\ \textcolor{comment}{/**\ TRACE\_RTT\_FLASH}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00408}00408\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00409}00409\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00410}00410\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00411}00411\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ RTT\_TRACE\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00412}00412\ \textcolor{preprocessor}{\#define\ RTT\_FlashPrepare(...)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00413}00413\ \textcolor{preprocessor}{\#define\ RTT\_EraseFlash(...)\ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00414}00414\ \textcolor{preprocessor}{\#define\ RTT\_SaveToFlash(...)\ \ \ 0}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00415}00415\ \textcolor{preprocessor}{\#define\ RTT\_ReadFromFlash(...)\ 0}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00416}00416\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ RTT\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00164}00164\ \textcolor{preprocessor}{\#if\ defined(HAL\_MODULE\_ENABLED)\ \&\&\ defined(RTT\_TRACE\_ENABLE)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00165}00165\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00166}00166\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00167}00167\ \textcolor{comment}{\ \ *\ @addtogroup\ TRACE\_RTT\_FLASH\ \ \ \ Flash\ RTT\ Buffer}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ TRACE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Макросы\ и\ функции\ для\ сохранения/чтения\ RTT\ буфера\ в\ Flash}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @details\ \ \ \ Модуль\ позволяет\ сохранять\ данные\ RTT\ буфера\ во\ Flash\ и\ читать\ их\ обратно\ по\ тегам.\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ Теги\ работают\ следующим\ образом:\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00172}00172\ \textcolor{comment}{\ \ *\ \ -\/\ Базовый\ тег\ (младший\ байт\ =\ 0):\ модуль\ сам\ выбирает\ первый\ свободный\ слот\ во\ Flash;\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00173}00173\ \textcolor{comment}{\ \ *\ \ \ \ новые\ записи\ получают\ автоинкрементированный\ младший\ байт\ тега\ (от\ 0x00\ до\ 0xFF).\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00174}00174\ \textcolor{comment}{\ \ *\ \ -\/\ Конкретный\ тег\ (младший\ байт\ !=\ 0):\ запись\ или\ чтение\ происходит\ строго\ с\ указанным\ тегом;\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00175}00175\ \textcolor{comment}{\ \ *\ \ \ \ если\ слот\ с\ таким\ тегом\ уже\ занят,\ запись\ не\ выполняется.\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ \ -\/\ Автоинкремент\ позволяет\ хранить\ несколько\ последовательных\ записей\ в\ пределах\ одного\ базового\ тега,\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ \ \ \ без\ необходимости\ вручную\ отслеживать\ адреса\ Flash\ или\ позиции\ буферов.\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ Параметры:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00180}00180\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_BUFFER\_SIZE\ \ \ \ -\/\ Размер\ буфера\ RTT\ в\ Flash}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00181}00181\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_SECTOR\ \ \ \ \ \ \ \ \ -\/\ Сектор\ FLASH\ куда\ положится\ RTT\ буфер}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00182}00182\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_SECTOR\_START\ \ \ -\/\ Начало\ сектора\ RTT\_FLASH\_SECTOR}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00183}00183\ \textcolor{comment}{\ \ *\ -\/\ @ref\ RTT\_FLASH\_SECTOR\_END\ \ \ \ \ -\/\ Конец\ сектора\ RTT\_FLASH\_SECTOR}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00185}00185\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00186}00186\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00187}00187\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00188}00188\ \ \ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00189}00189\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00190}00190\ \textcolor{comment}{\ \ *\ @brief\ Структура\ RTT,\ которая\ будет\ положена\ в\ Flash}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00191}00191\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00192}\mbox{\hyperlink{struct_r_t_t___flash_header__t}{00192}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00193}\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{00193}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Уникальный\ идентификатор\ буфера}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00194}\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{00194}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Размер\ данных}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00195}\mbox{\hyperlink{struct_r_t_t___flash_header__t_a1100df39b0eccb835946f4c13de23b4e}{00195}}\ \ \ \textcolor{keywordtype}{char}\ \ \ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t_a1100df39b0eccb835946f4c13de23b4e}{data}}[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];\ \ \textcolor{comment}{///<\ Буфер\ RTT}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00196}00196\ \}\ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}};} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00197}00197\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00198}00198\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00199}00199\ \textcolor{comment}{\ \ *\ @brief\ Подготовка\ Flash\ к\ записи}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00200}00200\ \textcolor{comment}{\ \ *\ @details\ Сбрасывает\ ошибки\ Flash\ и\ ожидает\ готовности\ перед\ записью}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00201}00201\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00202}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{00202}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{RTT\_FlashPrepare}}(\textcolor{keywordtype}{void})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00203}00203\ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00204}00204\ \ \ HAL\_FLASH\_Unlock();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00205}00205\ \ \ \_\_HAL\_FLASH\_CLEAR\_FLAG(FLASH\_FLAG\_PGSERR\ |\ FLASH\_FLAG\_WRPERR\ |\ FLASH\_FLAG\_OPERR);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00206}00206\ \ \ \textcolor{keywordflow}{while}\ (\_\_HAL\_FLASH\_GET\_FLAG(FLASH\_FLAG\_BSY))\ \{\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00207}00207\ \ \ \_\_NOP();\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00208}00208\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00209}00209\ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00210}00210\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00211}00211\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @brief\ Сохраняет\ последние\ символы\ RTT-\/буфера\ в\ Flash\ по\ тегу}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @param\ tag\ \ \ \ \ \ \ \ Базовый\ или\ конкретный\ идентификатор\ буфера.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ @param\ tail\_size\ \ Количество\ последних\ символов\ RTT\ для\ копирования}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ @param\ buf\_num\ \ \ \ Указатель\ на\ переменную\ в\ которую\ запишется\ номер\ буфера\ для\ конкретного\ тега}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ @return\ >=0\ —\ номер\ буфера\ (тег)\ для\ записи,\ <0\ —\ ошибка\ (нет\ места,\ тег\ уже\ занят,\ ошибка\ записи\ в\ флеш)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00217}00217\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00218}00218\ \textcolor{comment}{\ \ *\ @details\ \ Автоматически\ копирует\ последние\ tail\_size\ символов\ из\ RTT-\/буфера}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00219}00219\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ и\ записывает\ их\ во\ Flash.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00220}00220\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ Тег\ может\ быть\ базовым\ или\ конкретным:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ базовый\ (младший\ байт\ ==\ 0)\ —\ будет\ выбран\ первый\ свободный\ слот\ с\ автоинкрементом.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Автоинкремент\ формируется\ в\ пределах\ от\ 0x1\ до\ 0xFF}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00223}00223\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ конкретный\ (младший\ байт\ !=\ 0)\ —\ запись\ выполняется\ только\ с\ этим\ тегом,\ иначе\ ошибка.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00224}00224\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00225}00225\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00226}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}{00226}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}{RTT\_SaveToFlash}}(uint32\_t\ tag,\ uint32\_t\ tail\_size)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00227}00227\ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00228}00228\ \ \ \textcolor{keywordflow}{if}\ (tag\ ==\ 0xFFFFFFFF)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00229}00229\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Неверный\ тег}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00230}00230\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00231}00231\ \ \ \mbox{\hyperlink{struct_s_e_g_g_e_r___r_t_t___b_u_f_f_e_r___u_p}{SEGGER\_RTT\_BUFFER\_UP}}\ *up\ =\ \&\_SEGGER\_RTT.aUp[0];} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00232}00232\ \ \ \textcolor{keywordtype}{unsigned}\ buf\_size\ =\ up-\/>SizeOfBuffer;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00233}00233\ \ \ \textcolor{keywordtype}{unsigned}\ wr\ =\ up-\/>WrOff;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00234}00234\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00235}00235\ \ \ \textcolor{comment}{//\ Ограничиваем\ по\ размеру\ буфера\ RTT\ и\ RTT\_FLASH\_BUFFER\_SIZE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00236}00236\ \ \ \textcolor{keywordtype}{unsigned}\ n\ =\ (tail\_size\ >\ buf\_size)\ ?\ buf\_size\ :\ tail\_size;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00237}00237\ \ \ \textcolor{keywordflow}{if}\ (n\ >\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00238}00238\ \ \ \ \ n\ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}};} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00239}00239\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00240}00240\ \ \ uint32\_t\ addr\ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297}{RTT\_FLASH\_SECTOR\_START}};} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00241}00241\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *flash\_hdr\ =\ NULL;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00242}00242\ \ \ uint32\_t\ base\_tag\ =\ tag\ \&\ 0xFFFFFF00;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00243}00243\ \ \ uint32\_t\ next\_tag\ =\ (tag\ \&\ 0xFF)\ ==\ 0\ ?\ tag\ +\ 1\ :\ tag;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00244}00244\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00245}00245\ \ \ \textcolor{comment}{//\ Ищем\ первый\ свободный\ слот,\ параллельно\ автоинкрементируем\ тег}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00246}00246\ \ \ \textcolor{keywordflow}{while}\ ((addr\ +\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}))\ <=\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}{RTT\_FLASH\_SECTOR\_END}})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00247}00247\ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00248}00248\ \ \ \ \ flash\_hdr\ =\ (\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *)addr;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00249}00249\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00250}00250\ \ \ \ \ \textcolor{keywordflow}{if}\ (flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ 0xFFFFFFFF)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00251}00251\ \ \ \ \ \ \ \textcolor{keywordflow}{break};\ \ \textcolor{comment}{//\ Нашли\ свободное\ место}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00252}00252\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00253}00253\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00254}00254\ \ \ \ \ \textcolor{keywordflow}{if}((flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \&\ 0xFFFFFF00)\ ==\ base\_tag)\ \textcolor{comment}{//\ выбраный\ тег}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00255}00255\ \ \ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00256}00256\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ ((tag\ \&\ 0xFF)\ ==\ 0)\ \textcolor{comment}{//\ если\ он\ базовый\ -\/\ ищем\ последний}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00257}00257\ \ \ \ \ \ \ \ \ next\_tag\ =\ flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ +\ 1;\ \ \textcolor{comment}{//\ автоинкремент}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00258}00258\ \ \ \ \ \ \ \textcolor{keywordflow}{else}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00259}00259\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ tag)\ \textcolor{comment}{//\ если\ он\ конкретный\ и\ уже\ существует\ -\/\ то\ ошибка}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00260}00260\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ конкретный\ тег\ уже\ занят}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00261}00261\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00262}00262\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00263}00263\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00264}00264\ \ \ \ \ \textcolor{keywordflow}{if}(next\_tag\ -\/\ tag\ >\ 0xFF)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00265}00265\ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \textcolor{comment}{//\ автоинкремент\ слишком\ большой}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00266}00266\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00267}00267\ \ \ \ \ addr\ +=\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00268}00268\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00269}00269\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00270}00270\ \ \ \textcolor{keywordflow}{if}\ ((addr\ +\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}))\ >\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}{RTT\_FLASH\_SECTOR\_END}})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00271}00271\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Нет\ свободного\ места}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00272}00272\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00273}00273\ \ \ \textcolor{comment}{//\ Копируем\ последние\ n\ символов\ из\ RTT}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00274}00274\ \ \ \textcolor{keywordtype}{char}\ temp[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00275}00275\ \ \ \textcolor{keywordtype}{unsigned}\ valid\_count\ =\ 0;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00276}00276\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00277}00277\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{unsigned}\ i\ =\ 0;\ i\ <\ n;\ i++)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00278}00278\ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00279}00279\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ idx\ =\ (wr\ +\ buf\_size\ -\/\ n\ +\ i)\ \%\ buf\_size;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordtype}{char}\ c\ =\ up-\/>pBuffer[idx];} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ !=\ 0)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00282}00282\ \ \ \ \ \ \ temp[valid\_count++]\ =\ c;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00283}00283\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00284}00284\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00285}00285\ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{RTT\_FlashPrepare}}();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00286}00286\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00287}00287\ \ \ \textcolor{comment}{//\ Формируем\ структуру\ в\ RAM}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00288}00288\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ flash\_data;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00289}00289\ \ \ flash\_data.\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \ =\ next\_tag;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00290}00290\ \ \ flash\_data.\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ =\ valid\_count;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00291}00291\ \ \ memcpy(flash\_data.\mbox{\hyperlink{struct_r_t_t___flash_header__t_a1100df39b0eccb835946f4c13de23b4e}{data}},\ temp,\ valid\_count);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00292}00292\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00293}00293\ \ \ \textcolor{comment}{//\ Записываем\ структуру\ во\ Flash\ (по\ 4\ байта)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00294}00294\ \ \ \textcolor{keyword}{const}\ uint32\_t\ *p\ =\ (\textcolor{keyword}{const}\ uint32\_t\ *)\&flash\_data;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00295}00295\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{unsigned}\ i\ =\ 0;\ i\ <\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}})\ /\ 4;\ i++)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00296}00296\ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00297}00297\ \ \ \ \ \textcolor{keywordflow}{if}(HAL\_FLASH\_Program(FLASH\_TYPEPROGRAM\_WORD,\ addr\ +\ i\ *\ 4,\ p[i])\ !=\ HAL\_OK)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00298}00298\ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00299}00299\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00300}00300\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00301}00301\ \ \ HAL\_FLASH\_Lock();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00302}00302\ \ \ \_\_DSB();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00303}00303\ \ \ \_\_ISB();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00304}00304\ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00305}00305\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00306}00306\ \ \ \textcolor{keywordflow}{return}\ (\textcolor{keywordtype}{int})(next\_tag\&0xFF);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00307}00307\ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00308}00308\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00309}00309\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00310}00310\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00311}00311\ \textcolor{comment}{\ \ *\ @brief\ Читает\ последние\ символы\ RTT-\/буфера\ из\ Flash\ по\ тегу}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00312}00312\ \textcolor{comment}{\ \ *\ @param\ tag\ \ \ \ \ \ \ \ Базовый\ или\ конкретный\ идентификатор\ буфера.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00313}00313\ \textcolor{comment}{\ \ *\ @param\ Buffer\ \ \ \ \ Буфер\ назначения\ для\ копирования\ данных}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00314}00314\ \textcolor{comment}{\ \ *\ @param\ tail\_size\ \ Количество\ последних\ символов,\ которые\ нужно\ прочитать}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00315}00315\ \textcolor{comment}{\ \ *\ @param\ read\_size\ \ Количество\ считанных\ символов}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00316}00316\ \textcolor{comment}{\ \ *\ @return\ >=0\ —\ номер\ буфера\ (тег)\ для\ записи,\ <0\ —\ ошибка\ (тег\ не\ найден\ или\ структура\ повреждена)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00317}00317\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00318}00318\ \textcolor{comment}{\ \ *\ @details\ \ Копирует\ последние\ tail\_size\ символов\ из\ найденной\ записи\ Flash\ в\ Buffer.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00319}00319\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ Тег\ может\ быть\ базовым\ или\ конкретным:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00320}00320\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ базовый\ (младший\ байт\ ==\ 0)\ —\ будет\ прочитана\ последняя\ запись\ из\ группы.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00321}00321\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Если\ конкретный\ (младший\ байт\ !=\ 0)\ —\ прочитывается\ именно\ эта\ запись.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00322}00322\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00323}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}{00323}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}{RTT\_ReadFromFlash}}(uint32\_t\ tag,\ \textcolor{keywordtype}{char}\ *Buffer,\ uint32\_t\ tail\_size,\ uint32\_t\ *read\_size)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00324}00324\ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00325}00325\ \ \ \textcolor{keywordflow}{if}\ (!Buffer\ ||\ tail\_size\ ==\ 0)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00326}00326\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Неверные\ параметры}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00327}00327\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00328}00328\ \ \ \textcolor{keywordflow}{if}\ (tag\ ==\ 0xFFFFFFFF)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00329}00329\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Недопустимый\ тег}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00330}00330\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00331}00331\ \ \ uint32\_t\ addr\ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297}{RTT\_FLASH\_SECTOR\_START}};} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00332}00332\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *flash\_hdr\ =\ NULL;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00333}00333\ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *target\_hdr\ =\ NULL;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00334}00334\ \ \ uint32\_t\ base\_tag\ =\ tag\ \&\ 0xFFFFFF00;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00335}00335\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00336}00336\ \ \ \textcolor{comment}{//\ Поиск\ записи\ по\ тегу}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00337}00337\ \ \ \textcolor{keywordflow}{while}\ ((addr\ +\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}))\ <=\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}{RTT\_FLASH\_SECTOR\_END}})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00338}00338\ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00339}00339\ \ \ \ \ flash\_hdr\ =\ (\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}}\ *)addr;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00340}00340\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00341}00341\ \ \ \ \ \textcolor{keywordflow}{if}\ (flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ 0xFFFFFFFF)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00342}00342\ \ \ \ \ \ \ \textcolor{keywordflow}{break};\ \ \textcolor{comment}{//\ Достигнут\ конец\ записанных\ структур}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00343}00343\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00344}00344\ \ \ \ \ \textcolor{comment}{//\ выбраный\ тег}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00345}00345\ \ \ \ \ \textcolor{keywordflow}{if}((flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \&\ 0xFFFFFF00)\ ==\ base\_tag)\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00346}00346\ \ \ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00347}00347\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ ((tag\ \&\ 0xFF)\ ==\ 0)\ \textcolor{comment}{//\ если\ он\ базовый\ -\/\ ищем\ последний\ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00348}00348\ \ \ \ \ \ \ \ \ target\_hdr\ =\ flash\_hdr;\ \ \textcolor{comment}{//\ сохраняем\ последний\ в\ группе}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00349}00349\ \ \ \ \ \ \ \textcolor{keywordflow}{else}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00350}00350\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(flash\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ ==\ tag)\ \textcolor{comment}{//\ если\ он\ конкретный\ и\ найден\ -\/\ берем\ его}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00351}00351\ \ \ \ \ \ \ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00352}00352\ \ \ \ \ \ \ \ \ \ \ target\_hdr\ =\ flash\_hdr;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00353}00353\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};\ \ \textcolor{comment}{//\ конкретный\ тег\ найден}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00354}00354\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00355}00355\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00356}00356\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00357}00357\ \ \ \ \ addr\ +=\ \textcolor{keyword}{sizeof}(\mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00358}00358\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00359}00359\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00360}00360\ \ \ \textcolor{keywordflow}{if}\ (!target\_hdr)\ \textcolor{keywordflow}{return}\ -\/1;\ \textcolor{comment}{//\ Тег\ не\ найден}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00361}00361\ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00362}00362\ \ \ \textcolor{comment}{//\ Проверка\ корректности\ размера}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00363}00363\ \ \ \textcolor{keywordflow}{if}\ (target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ >\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00364}00364\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \textcolor{comment}{//\ Повреждённая\ запись\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00365}00365\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00366}00366\ \ \ \textcolor{comment}{//\ Определяем\ количество\ читаемых\ символов}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00367}00367\ \ \ uint32\_t\ n\ =\ (tail\_size\ >\ target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}})\ ?\ target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ :\ tail\_size;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00368}00368\ \ \ \textcolor{comment}{//\ Начальная\ позиция\ для\ чтения\ последних\ tail\_size\ символов}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00369}00369\ \ \ uint32\_t\ start\ =\ target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}}\ -\/\ n;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00370}00370\ \ \ \textcolor{comment}{//\ Копируем\ данные\ из\ Flash\ в\ RAM}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00371}00371\ \ \ memcpy(Buffer,\ \&target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a1100df39b0eccb835946f4c13de23b4e}{data}}[start],\ n);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00372}00372\ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00373}00373\ \ \ \textcolor{keywordflow}{if}(read\_size\ !=\ NULL)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00374}00374\ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00375}00375\ \ \ \ \ *read\_size\ =\ n;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00376}00376\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00377}00377\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00378}00378\ \ \ \_\_DSB();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00379}00379\ \ \ \_\_ISB();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00380}00380\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00381}00381\ \ \ \textcolor{keywordflow}{return}\ (\textcolor{keywordtype}{int})(target\_hdr-\/>\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}}\ \&\ 0xFF);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00382}00382\ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00383}00383\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00384}00384\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00385}00385\ \textcolor{comment}{\ \ *\ @brief\ Стирание\ сектора\ Flash\ с\ RTT-\/буфером}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00386}00386\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00387}\mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}{00387}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}{RTT\_EraseFlash}}(\textcolor{keywordtype}{void})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00388}00388\ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00389}00389\ \ \ FLASH\_EraseInitTypeDef\ eraseInit;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00390}00390\ \ \ uint32\_t\ pageError\ =\ 0;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00391}00391\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00392}00392\ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}{RTT\_FlashPrepare}}();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00393}00393\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00394}00394\ \ \ eraseInit.TypeErase\ \ \ =\ FLASH\_TYPEERASE\_SECTORS;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00395}00395\ \ \ eraseInit.Sector\ \ \ \ \ \ =\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga3bc1b76864e1d32cbdd174d4caae7724}{RTT\_FLASH\_SECTOR}};} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00396}00396\ \ \ eraseInit.NbSectors\ \ \ =\ 1;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00397}00397\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00398}00398\ \ \ \textcolor{keywordflow}{if}\ (HAL\_FLASHEx\_Erase(\&eraseInit,\ \&pageError)\ !=\ HAL\_OK)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00399}00399\ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00400}00400\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00401}00401\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00402}00402\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00403}00403\ \ \ HAL\_FLASH\_Lock();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00404}00404\ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00405}00405\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00406}00406\ \textcolor{comment}{/**\ TRACE\_RTT\_FLASH}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00407}00407\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00408}00408\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00409}00409\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00410}00410\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ RTT\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00411}00411\ \textcolor{preprocessor}{\#define\ RTT\_FlashPrepare(...)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00412}00412\ \textcolor{preprocessor}{\#define\ RTT\_EraseFlash(...)\ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00413}00413\ \textcolor{preprocessor}{\#define\ RTT\_SaveToFlash(...)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00414}00414\ \textcolor{preprocessor}{\#define\ RTT\_ReadFromFlash(...)\ 0}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00415}00415\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ RTT\_TRACE\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00416}00416\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00417}00417\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00418}00418\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00419}00419\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00420}00420\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00421}00421\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00422}00422\ \textcolor{comment}{\ \ *\ @addtogroup\ \ TRACE\_HARDFAULT\ \ \ \ Hardfault\ trace\ defines}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00423}00423\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ \ TRACE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00424}00424\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Модуль\ трассировки\ HardFault\ с\ возможностью\ сохранения\ RTT\ буфера\ во\ Flash}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00425}00425\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00426}00426\ \textcolor{comment}{\ \ *\ Этот\ модуль\ позволяет\ сохранять\ контекст\ процессора\ и\ последние\ символы\ RTT\ буфера\ при\ возникновении\ HardFault.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00427}00427\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00428}00428\ \textcolor{comment}{\ \ *\ Механизм\ работы:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00429}00429\ \textcolor{comment}{\ \ *\ \ \ -\/\ При\ срабатывании\ HardFault\ вызывается\ HF\_HandleFault(),\ который:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00430}00430\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 1.\ Получает\ указатель\ на\ стек,\ где\ произошёл\ HardFault\ (MSP\ или\ PSP).}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00431}00431\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 2.\ Выводит\ значения\ регистров\ R0-\/R3,\ R12,\ LR,\ PC,\ PSR\ и\ системных\ регистров\ SCB.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00432}00432\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 3.\ Формирует\ строку\ с\ регистрами\ и\ копирует\ последние\ символы\ RTT\ буфера.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00433}00433\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 4.\ Сохраняет\ данные\ во\ Flash\ с\ базовым\ тегом\ HF\_RTT\_TAG\_BASE.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00434}00434\ \textcolor{comment}{\ \ *\ \ \ -\/\ Для\ восстановления\ последнего\ HardFault\ используется\ HF\_CheckRecovered(),\ который:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00435}00435\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 1.\ Читает\ запись\ во\ Flash\ по\ базовому\ тегу.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00436}00436\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 2.\ Выводит\ сохранённый\ RTT\ буфер\ и\ контекст\ регистров.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00437}00437\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 3.\ Опционально\ стирает\ Flash\ после\ восстановления.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00438}00438\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00439}00439\ \textcolor{comment}{\ \ *\ Параметры:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00440}00440\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HARDFAULT\_SERIAL\_TRACE\ \ \ -\/\ Включить\ обработку\ и\ serial\ трассировку\ Hardfault}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00441}00441\ \textcolor{comment}{\ \ *\ \ \ Если\ отключена\ то\ вставляются\ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00442}00442\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_RTT\_TAG\_BASE\ \ \ \ \ \ \ \ \ \ -\/\ Базовый\ тег\ RTT\ Flash\ для\ HardFault\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00443}00443\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_RTT\_TAIL\_SIZE\ \ \ \ \ \ \ \ \ -\/\ Размер\ буфера\ RTT,\ который\ сохранится\ при\ Hardfault}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00444}00444\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_STACK\_DUMP\_WORDS\ \ \ \ \ \ -\/\ Сколько\ слов\ стека\ будет\ проанализировано\ во\ время\ Hardfault}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00445}00445\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_FLASH\_ADDR\ \ \ \ \ \ \ \ \ \ \ \ -\/\ Адрес\ FLASH\ куда\ положится\ RTT\ буфер}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00446}00446\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_RAM\_END\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Конец\ RAM\ памяти\ (чтобы\ во\ время\ анализа\ стека\ не\ выйти\ за\ пределы)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00447}00447\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00448}00448\ \textcolor{comment}{\ \ @code}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00449}00449\ \textcolor{comment}{\ \ void\ Hardfault()}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00450}00450\ \textcolor{comment}{\ \ \{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00451}00451\ \textcolor{comment}{\ \ \ \ HF\_HandleFault();}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00452}00452\ \textcolor{comment}{\ \ \ \ NVIC\_SystemReset();}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00453}00453\ \textcolor{comment}{\ \ \}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00454}00454\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00455}00455\ \textcolor{comment}{\ \ int\ main()}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00456}00456\ \textcolor{comment}{\ \ \{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00457}00457\ \textcolor{comment}{\ \ \ \ if(HF\_CheckRecovered(0))}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00458}00458\ \textcolor{comment}{\ \ \ \ \{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00459}00459\ \textcolor{comment}{\ \ \ \ \ \ //set\ hardfault\ error}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00460}00460\ \textcolor{comment}{\ \ \ \ \ \ RTT\_EraseFlash();\ //\ erase\ rtt\ flash\ after\ message\ readed}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00461}00461\ \textcolor{comment}{\ \ \ \ \}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00462}00462\ \textcolor{comment}{\ \ \}\ \ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00463}00463\ \textcolor{comment}{\ \ @endcode}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00464}00464\ \textcolor{comment}{\ \ *\ @\{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00465}00465\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00466}00466\ \textcolor{preprocessor}{\#if\ defined(HAL\_MODULE\_ENABLED)\ \&\&\ defined(HARDFAULT\_SERIAL\_TRACE)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00467}00467\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00468}00468\ \textcolor{preprocessor}{\#ifndef\ HF\_RTT\_TAIL\_SIZE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00469}00469\ \textcolor{preprocessor}{\#define\ HF\_RTT\_TAIL\_SIZE\ \ RTT\_FLASH\_BUFFER\_SIZE\ }\textcolor{comment}{///<\ Размер\ буфера\ RTT,\ который\ сохранится\ при\ Hardfault}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00470}00470\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00471}00471\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00472}00472\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00473}00473\ \textcolor{comment}{\ \ *\ @brief\ Контекст\ стек-\/фрейма\ процессора\ при\ HardFault}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00474}00474\ \textcolor{comment}{\ \ *\ @details\ Сохраняет\ регистры\ R0-\/R3,\ R12,\ LR,\ PC,\ PSR\ для\ последующего\ анализа.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00475}00475\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00476}\mbox{\hyperlink{struct_h_f___stack_frame__t}{00476}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00477}\mbox{\hyperlink{struct_h_f___stack_frame__t_a4146ed28926b5f234132b7112119a413}{00477}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a4146ed28926b5f234132b7112119a413}{r0}};\ \ \ \textcolor{comment}{///<\ Регистр\ R0}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00478}\mbox{\hyperlink{struct_h_f___stack_frame__t_a286104d19185714940645a9df814ddea}{00478}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a286104d19185714940645a9df814ddea}{r1}};\ \ \ \textcolor{comment}{///<\ Регистр\ R1}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00479}\mbox{\hyperlink{struct_h_f___stack_frame__t_a5a52e5006dabcf68c0fa4cfb0e03335b}{00479}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a5a52e5006dabcf68c0fa4cfb0e03335b}{r2}};\ \ \ \textcolor{comment}{///<\ Регистр\ R2}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00480}\mbox{\hyperlink{struct_h_f___stack_frame__t_a453c7af42b6928a693af422e17c981d3}{00480}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a453c7af42b6928a693af422e17c981d3}{r3}};\ \ \ \textcolor{comment}{///<\ Регистр\ R3}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00481}\mbox{\hyperlink{struct_h_f___stack_frame__t_a819ee3bc518c460ece1b7c4079f8f80b}{00481}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a819ee3bc518c460ece1b7c4079f8f80b}{r12}};\ \ \textcolor{comment}{///<\ Регистр\ R12}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00482}\mbox{\hyperlink{struct_h_f___stack_frame__t_a6e51904297f7725e96d5b5fb291ef577}{00482}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a6e51904297f7725e96d5b5fb291ef577}{lr}};\ \ \ \textcolor{comment}{///<\ Link\ Register}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00483}\mbox{\hyperlink{struct_h_f___stack_frame__t_a16563896004751c90e41c81ae4570732}{00483}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a16563896004751c90e41c81ae4570732}{pc}};\ \ \ \textcolor{comment}{///<\ Program\ Counter}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00484}\mbox{\hyperlink{struct_h_f___stack_frame__t_ae47cb051ee3c94471bfd4fe7e49c55f9}{00484}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_ae47cb051ee3c94471bfd4fe7e49c55f9}{psr}};\ \ \textcolor{comment}{///<\ Program\ Status\ Register}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00485}00485\ \}\ \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\_StackFrame\_t}};} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00486}00486\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00487}00487\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00488}00488\ \textcolor{comment}{\ \ *\ @brief\ Проверка\ и\ вывод\ последнего\ HardFault-\/трейса\ из\ Flash}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00489}00489\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00490}00490\ \textcolor{comment}{\ \ *\ Функция\ ищет\ последнюю\ запись\ HardFault\ по\ базовому\ тегу\ HF\_RTT\_TAG\_BASE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00491}00491\ \textcolor{comment}{\ \ *\ и\ выводит\ её\ содержимое\ в\ консоль.\ После\ успешного\ вывода\ Flash\ можно\ опционально\ очистить.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00492}00492\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00493}00493\ \textcolor{comment}{\ \ *\ @return\ int}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00494}00494\ \textcolor{comment}{\ \ *\ \ \ -\/\ 1\ —\ данные\ HardFault\ найдены\ и\ выведены}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00495}00495\ \textcolor{comment}{\ \ *\ \ \ -\/\ 0\ —\ данные\ отсутствуют\ или\ тег\ не\ найден}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00496}00496\ \textcolor{comment}{\ \ *\ }} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00497}00497\ \textcolor{comment}{\ \ *\ @note\ Вызов\ рекомендуется\ при\ инициализации\ приложения\ для\ анализа\ предыдущего\ сбоя.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00498}00498\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00499}\mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f}{00499}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f}{HF\_CheckRecovered}}(\textcolor{keywordtype}{int}\ erase)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00500}00500\ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00501}00501\ \ \ \textcolor{keywordtype}{char}\ buffer[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00502}00502\ \ \ uint32\_t\ read\_size\ =\ 0;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00503}00503\ \ \ \textcolor{keywordtype}{int}\ n\_hardfault\ =\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}{RTT\_ReadFromFlash}}(\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313}{HF\_RTT\_TAG\_BASE}},\ buffer,\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca}{HF\_RTT\_TAIL\_SIZE}},\ \&read\_size);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00504}00504\ \ \ \textcolor{keywordflow}{if}\ (n\_hardfault\ >\ 0)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00505}00505\ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00506}00506\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n-\/-\/-\/\ Recovered\ HardFault\ RTT\ buffer\ \#\%u\ -\/-\/-\/\(\backslash\)n"{}},\ n\_hardfault);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00507}00507\ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ read\_size;\ i++)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00508}00508\ \ \ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00509}00509\ \ \ \ \ \ \ \textcolor{keywordtype}{char}\ c\ =\ buffer[i];} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00510}00510\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ ==\ 0\ ||\ c\ ==\ (\textcolor{keywordtype}{char})0xFF)\ \textcolor{keywordflow}{break};} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00511}00511\ \ \ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\%c"{}},\ c);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00512}00512\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00513}00513\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00514}00514\ \ \ \ \ \textcolor{keywordflow}{if}(erase)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00515}00515\ \ \ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}{RTT\_EraseFlash}}();} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00516}00516\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n-\/-\/-\/-\/-\/-\/-\/-\/-\/\ HardFault\ Dump\ End\ -\/-\/-\/-\/-\/-\/-\/-\/-\/\(\backslash\)n"{}});} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00517}00517\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00518}00518\ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00519}00519\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00520}00520\ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00419}00419\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00420}00420\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00421}00421\ \textcolor{comment}{\ \ *\ @addtogroup\ \ TRACE\_HARDFAULT\ \ \ \ Hardfault\ trace\ defines}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00422}00422\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ \ TRACE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00423}00423\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ \ Модуль\ трассировки\ HardFault\ с\ возможностью\ сохранения\ RTT\ буфера\ во\ Flash}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00424}00424\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00425}00425\ \textcolor{comment}{\ \ *\ Этот\ модуль\ позволяет\ сохранять\ контекст\ процессора\ и\ последние\ символы\ RTT\ буфера\ при\ возникновении\ HardFault.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00426}00426\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00427}00427\ \textcolor{comment}{\ \ *\ Механизм\ работы:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00428}00428\ \textcolor{comment}{\ \ *\ \ \ -\/\ При\ срабатывании\ HardFault\ вызывается\ HF\_HandleFault(),\ который:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00429}00429\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 1.\ Получает\ указатель\ на\ стек,\ где\ произошёл\ HardFault\ (MSP\ или\ PSP).}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00430}00430\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 2.\ Выводит\ значения\ регистров\ R0-\/R3,\ R12,\ LR,\ PC,\ PSR\ и\ системных\ регистров\ SCB.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00431}00431\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 3.\ Формирует\ строку\ с\ регистрами\ и\ копирует\ последние\ символы\ RTT\ буфера.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00432}00432\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 4.\ Сохраняет\ данные\ во\ Flash\ с\ базовым\ тегом\ HF\_RTT\_TAG\_BASE.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00433}00433\ \textcolor{comment}{\ \ *\ \ \ -\/\ Для\ восстановления\ последнего\ HardFault\ используется\ HF\_CheckRecovered(),\ который:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00434}00434\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 1.\ Читает\ запись\ во\ Flash\ по\ базовому\ тегу.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00435}00435\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 2.\ Выводит\ сохранённый\ RTT\ буфер\ и\ контекст\ регистров.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00436}00436\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ 3.\ Опционально\ стирает\ Flash\ после\ восстановления.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00437}00437\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00438}00438\ \textcolor{comment}{\ \ *\ Параметры:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00439}00439\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HARDFAULT\_SERIAL\_TRACE\ \ \ -\/\ Включить\ обработку\ и\ serial\ трассировку\ Hardfault}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00440}00440\ \textcolor{comment}{\ \ *\ \ \ Если\ отключена\ то\ вставляются\ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00441}00441\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_RTT\_TAG\_BASE\ \ \ \ \ \ \ \ \ \ -\/\ Базовый\ тег\ RTT\ Flash\ для\ HardFault\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00442}00442\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_RTT\_TAIL\_SIZE\ \ \ \ \ \ \ \ \ -\/\ Размер\ буфера\ RTT,\ который\ сохранится\ при\ Hardfault}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00443}00443\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_STACK\_DUMP\_WORDS\ \ \ \ \ \ -\/\ Сколько\ слов\ стека\ будет\ проанализировано\ во\ время\ Hardfault}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00444}00444\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_FLASH\_ADDR\ \ \ \ \ \ \ \ \ \ \ \ -\/\ Адрес\ FLASH\ куда\ положится\ RTT\ буфер}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00445}00445\ \textcolor{comment}{\ \ *\ -\/\ @ref\ HF\_RAM\_END\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -\/\ Конец\ RAM\ памяти\ (чтобы\ во\ время\ анализа\ стека\ не\ выйти\ за\ пределы)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00446}00446\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00447}00447\ \textcolor{comment}{\ \ @code}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00448}00448\ \textcolor{comment}{\ \ void\ Hardfault()}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00449}00449\ \textcolor{comment}{\ \ \{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00450}00450\ \textcolor{comment}{\ \ \ \ HF\_HandleFault();}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00451}00451\ \textcolor{comment}{\ \ \ \ NVIC\_SystemReset();}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00452}00452\ \textcolor{comment}{\ \ \}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00453}00453\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00454}00454\ \textcolor{comment}{\ \ int\ main()}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00455}00455\ \textcolor{comment}{\ \ \{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00456}00456\ \textcolor{comment}{\ \ \ \ if(HF\_CheckRecovered(0))}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00457}00457\ \textcolor{comment}{\ \ \ \ \{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00458}00458\ \textcolor{comment}{\ \ \ \ \ \ //set\ hardfault\ error}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00459}00459\ \textcolor{comment}{\ \ \ \ \ \ RTT\_EraseFlash();\ //\ erase\ rtt\ flash\ after\ message\ readed}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00460}00460\ \textcolor{comment}{\ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00461}00461\ \textcolor{comment}{\ \ \}\ \ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00462}00462\ \textcolor{comment}{\ \ @endcode}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00463}00463\ \textcolor{comment}{\ \ *\ @\{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00464}00464\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00465}00465\ \textcolor{preprocessor}{\#if\ defined(HAL\_MODULE\_ENABLED)\ \&\&\ defined(HARDFAULT\_SERIAL\_TRACE)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00466}00466\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00467}00467\ \textcolor{preprocessor}{\#ifndef\ HF\_RTT\_TAIL\_SIZE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00468}00468\ \textcolor{preprocessor}{\#define\ HF\_RTT\_TAIL\_SIZE\ \ RTT\_FLASH\_BUFFER\_SIZE\ }\textcolor{comment}{///<\ Размер\ буфера\ RTT,\ который\ сохранится\ при\ Hardfault}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00469}00469\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00470}00470\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00471}00471\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00472}00472\ \textcolor{comment}{\ \ *\ @brief\ Контекст\ стек-\/фрейма\ процессора\ при\ HardFault}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00473}00473\ \textcolor{comment}{\ \ *\ @details\ Сохраняет\ регистры\ R0-\/R3,\ R12,\ LR,\ PC,\ PSR\ для\ последующего\ анализа.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00474}00474\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00475}\mbox{\hyperlink{struct_h_f___stack_frame__t}{00475}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00476}\mbox{\hyperlink{struct_h_f___stack_frame__t_a4146ed28926b5f234132b7112119a413}{00476}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a4146ed28926b5f234132b7112119a413}{r0}};\ \ \ \textcolor{comment}{///<\ Регистр\ R0}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00477}\mbox{\hyperlink{struct_h_f___stack_frame__t_a286104d19185714940645a9df814ddea}{00477}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a286104d19185714940645a9df814ddea}{r1}};\ \ \ \textcolor{comment}{///<\ Регистр\ R1}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00478}\mbox{\hyperlink{struct_h_f___stack_frame__t_a5a52e5006dabcf68c0fa4cfb0e03335b}{00478}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a5a52e5006dabcf68c0fa4cfb0e03335b}{r2}};\ \ \ \textcolor{comment}{///<\ Регистр\ R2}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00479}\mbox{\hyperlink{struct_h_f___stack_frame__t_a453c7af42b6928a693af422e17c981d3}{00479}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a453c7af42b6928a693af422e17c981d3}{r3}};\ \ \ \textcolor{comment}{///<\ Регистр\ R3}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00480}\mbox{\hyperlink{struct_h_f___stack_frame__t_a819ee3bc518c460ece1b7c4079f8f80b}{00480}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a819ee3bc518c460ece1b7c4079f8f80b}{r12}};\ \ \textcolor{comment}{///<\ Регистр\ R12}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00481}\mbox{\hyperlink{struct_h_f___stack_frame__t_a6e51904297f7725e96d5b5fb291ef577}{00481}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a6e51904297f7725e96d5b5fb291ef577}{lr}};\ \ \ \textcolor{comment}{///<\ Link\ Register}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00482}\mbox{\hyperlink{struct_h_f___stack_frame__t_a16563896004751c90e41c81ae4570732}{00482}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_a16563896004751c90e41c81ae4570732}{pc}};\ \ \ \textcolor{comment}{///<\ Program\ Counter}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00483}\mbox{\hyperlink{struct_h_f___stack_frame__t_ae47cb051ee3c94471bfd4fe7e49c55f9}{00483}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_h_f___stack_frame__t_ae47cb051ee3c94471bfd4fe7e49c55f9}{psr}};\ \ \textcolor{comment}{///<\ Program\ Status\ Register}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00484}00484\ \}\ \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\_StackFrame\_t}};} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00485}00485\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00486}00486\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00487}00487\ \textcolor{comment}{\ \ *\ @brief\ Проверка\ и\ вывод\ последнего\ HardFault-\/трейса\ из\ Flash}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00488}00488\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00489}00489\ \textcolor{comment}{\ \ *\ Функция\ ищет\ последнюю\ запись\ HardFault\ по\ базовому\ тегу\ HF\_RTT\_TAG\_BASE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00490}00490\ \textcolor{comment}{\ \ *\ и\ выводит\ её\ содержимое\ в\ консоль.\ После\ успешного\ вывода\ Flash\ можно\ опционально\ очистить.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00491}00491\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00492}00492\ \textcolor{comment}{\ \ *\ @return\ int}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00493}00493\ \textcolor{comment}{\ \ *\ \ \ -\/\ 1\ —\ данные\ HardFault\ найдены\ и\ выведены}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00494}00494\ \textcolor{comment}{\ \ *\ \ \ -\/\ 0\ —\ данные\ отсутствуют\ или\ тег\ не\ найден}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00495}00495\ \textcolor{comment}{\ \ *\ }} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00496}00496\ \textcolor{comment}{\ \ *\ @note\ Вызов\ рекомендуется\ при\ инициализации\ приложения\ для\ анализа\ предыдущего\ сбоя.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00497}00497\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00498}\mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f}{00498}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f}{HF\_CheckRecovered}}(\textcolor{keywordtype}{int}\ erase)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00499}00499\ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00500}00500\ \ \ \textcolor{keywordtype}{char}\ buffer[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00501}00501\ \ \ uint32\_t\ read\_size\ =\ 0;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00502}00502\ \ \ \textcolor{keywordtype}{int}\ n\_hardfault\ =\ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}{RTT\_ReadFromFlash}}(\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313}{HF\_RTT\_TAG\_BASE}},\ buffer,\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca}{HF\_RTT\_TAIL\_SIZE}},\ \&read\_size);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00503}00503\ \ \ \textcolor{keywordflow}{if}\ (n\_hardfault\ >\ 0)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00504}00504\ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00505}00505\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n-\/-\/-\/\ Recovered\ HardFault\ RTT\ buffer\ \#\%u\ -\/-\/-\/\(\backslash\)n"{}},\ n\_hardfault);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00506}00506\ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ read\_size;\ i++)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00507}00507\ \ \ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00508}00508\ \ \ \ \ \ \ \textcolor{keywordtype}{char}\ c\ =\ buffer[i];} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00509}00509\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ ==\ 0\ ||\ c\ ==\ (\textcolor{keywordtype}{char})0xFF)\ \textcolor{keywordflow}{break};} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00510}00510\ \ \ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\%c"{}},\ c);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00511}00511\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00512}00512\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00513}00513\ \ \ \ \ \textcolor{keywordflow}{if}(erase)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00514}00514\ \ \ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}{RTT\_EraseFlash}}();} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00515}00515\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n-\/-\/-\/-\/-\/-\/-\/-\/-\/\ HardFault\ Dump\ End\ -\/-\/-\/-\/-\/-\/-\/-\/-\/\(\backslash\)n"{}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00516}00516\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00517}00517\ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00518}00518\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00519}00519\ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00520}00520\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00521}00521\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00522}00522\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00523}00523\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\_StackFrame\_t}}\ *stack\_frame;} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00524}00524\ \textcolor{keyword}{static}\ uint32\_t\ stack\_dump[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b}{HF\_STACK\_DUMP\_WORDS}}];} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00525}00525\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ *ret\_adr[10]\ =\ \{0\};\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00526}00526\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00527}00527\ \textcolor{comment}{\ \ *\ @brief\ Обработчик\ HardFault}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00528}00528\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00529}00529\ \textcolor{comment}{\ \ *\ Вызывается\ из\ прерывания\ HardFault\ или\ в\ любом\ месте\ где\ понятно\ что\ ошибка\ критическая.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00530}00530\ \textcolor{comment}{\ \ *\ Последовательно\ выполняет:}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00531}00531\ \textcolor{comment}{\ \ *\ \ \ 1.\ Определяет\ активный\ стек\ (MSP\ или\ PSP)\ на\ момент\ сбоя.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00532}00532\ \textcolor{comment}{\ \ *\ \ \ 2.\ Сохраняет\ значения\ регистров\ R0-\/R3,\ R12,\ LR,\ PC,\ PSR.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00533}00533\ \textcolor{comment}{\ \ *\ \ \ 3.\ Выводит\ системные\ регистры\ CFSR,\ HFSR,\ DFSR,\ AFSR,\ MMFAR,\ BFAR.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00534}00534\ \textcolor{comment}{\ \ *\ \ \ 4.\ Формирует\ stack\ trace\ с\ 3\ уровнями\ возврата.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00535}00535\ \textcolor{comment}{\ \ *\ \ \ 5.\ Копирует\ последние\ символы\ RTT\ буфера.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00536}00536\ \textcolor{comment}{\ \ *\ \ \ 6.\ Сохраняет\ все\ данные\ во\ Flash\ через\ RTT\_SaveToFlash\ с\ базовым\ тегом\ HF\_RTT\_TAG\_BASE.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00537}00537\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00538}00538\ \textcolor{comment}{\ \ *\ @note\ Функция\ защищена,\ так\ как\ вызывается\ в\ контексте\ сбоя\ —\ минимизирует\ использование\ вызовов\ HAL.}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00539}00539\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00540}\mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{00540}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{HF\_HandleFault}}(\textcolor{keywordtype}{void})} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00541}00541\ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00542}00542\ \ \ \ \ \textcolor{comment}{//\ Получаем\ указатель\ на\ стек,\ где\ произошёл\ HardFault}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00543}00543\ \ \ \ \ \_\_ASM\ \textcolor{keyword}{volatile}(} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00544}00544\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}TST\ lr,\ \#4\ \ \ \ \ \ \ \(\backslash\)n"{}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00545}00545\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}ITE\ EQ\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)n"{}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00546}00546\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}MRSEQ\ \%[ptr],\ MSP\(\backslash\)n"{}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00547}00547\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}MRSNE\ \%[ptr],\ PSP\(\backslash\)n"{}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00548}00548\ \ \ \ \ \ \ \ \ :\ [ptr]\ \textcolor{stringliteral}{"{}=r"{}}(stack\_frame)} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00549}00549\ \ \ \ \ );} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00550}00550\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00551}00551\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n=====\ HardFault\ occurred!\ =====\(\backslash\)n"{}});} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00552}00552\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R0\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r0);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00553}00553\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R1\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r1);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00554}00554\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R2\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r2);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00555}00555\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R3\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r3);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00556}00556\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R12\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r12);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00557}00557\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}LR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>lr);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00558}00558\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PC\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>pc);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00559}00559\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PSR\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>psr);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00560}00560\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00561}00561\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}CFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>CFSR);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00562}00562\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}HFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>HFSR);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00563}00563\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}DFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>DFSR);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00564}00564\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}AFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>AFSR);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00565}00565\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}MMFAR\ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>MMFAR);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00566}00566\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}BFAR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>BFAR);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00567}00567\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00568}00568\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Stack\ trace\ -\/-\/-\/}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00569}00569\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}-\/-\/-\/\ Stack\ trace\ -\/-\/-\/\(\backslash\)n"{}});} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00570}00570\ \ \ \ \ ret\_adr[0]\ =\ \_\_builtin\_return\_address(0);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00571}00571\ \ \ \ \ ret\_adr[1]\ =\ \_\_builtin\_return\_address(1);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00572}00572\ \ \ \ \ ret\_adr[2]\ =\ \_\_builtin\_return\_address(2);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00573}00573\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00574}00574\ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ 3;\ i++)\ \ \textcolor{comment}{//\ развернуть\ n\ уровней}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00575}00575\ \ \ \ \ \{} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00576}00576\ \ \ \ \ \ \ \textcolor{keywordflow}{if}(ret\_adr[i])} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00577}00577\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\ \ \#\%d:\ 0x\%08lX\(\backslash\)r\(\backslash\)n"{}},\ i,\ ret\_adr[i]);\ \textcolor{comment}{//\ -\/1\ для\ Thumb}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00578}00578\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00579}00579\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}{RTT\_SaveToFlash}}(\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313}{HF\_RTT\_TAG\_BASE}},\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca}{HF\_RTT\_TAIL\_SIZE}});} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00580}00580\ \}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00581}00581\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ HARDFAULT\_SERIAL\_TRACE}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00582}00582\ \textcolor{preprocessor}{\#define\ HF\_CheckRecovered(...)\ 0}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00583}00583\ \textcolor{preprocessor}{\#define\ HF\_HandleFault(...)}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00584}00584\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ HARDFAULT\_SERIAL\_TRACE}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00585}00585\ \textcolor{comment}{/**\ TRACE\_HARDFAULT}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00586}00586\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00587}00587\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00522}00522\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\_StackFrame\_t}}\ *stack\_frame;} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00523}00523\ \textcolor{keyword}{static}\ uint32\_t\ stack\_dump[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b}{HF\_STACK\_DUMP\_WORDS}}];} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00524}00524\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ *ret\_adr[10]\ =\ \{0\};\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00525}00525\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00526}00526\ \textcolor{comment}{\ \ *\ @brief\ Обработчик\ HardFault}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00527}00527\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00528}00528\ \textcolor{comment}{\ \ *\ Вызывается\ из\ прерывания\ HardFault\ или\ в\ любом\ месте\ где\ понятно\ что\ ошибка\ критическая.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00529}00529\ \textcolor{comment}{\ \ *\ Последовательно\ выполняет:}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00530}00530\ \textcolor{comment}{\ \ *\ \ \ 1.\ Определяет\ активный\ стек\ (MSP\ или\ PSP)\ на\ момент\ сбоя.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00531}00531\ \textcolor{comment}{\ \ *\ \ \ 2.\ Сохраняет\ значения\ регистров\ R0-\/R3,\ R12,\ LR,\ PC,\ PSR.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00532}00532\ \textcolor{comment}{\ \ *\ \ \ 3.\ Выводит\ системные\ регистры\ CFSR,\ HFSR,\ DFSR,\ AFSR,\ MMFAR,\ BFAR.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00533}00533\ \textcolor{comment}{\ \ *\ \ \ 4.\ Формирует\ stack\ trace\ с\ 3\ уровнями\ возврата.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00534}00534\ \textcolor{comment}{\ \ *\ \ \ 5.\ Копирует\ последние\ символы\ RTT\ буфера.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00535}00535\ \textcolor{comment}{\ \ *\ \ \ 6.\ Сохраняет\ все\ данные\ во\ Flash\ через\ RTT\_SaveToFlash\ с\ базовым\ тегом\ HF\_RTT\_TAG\_BASE.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00536}00536\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00537}00537\ \textcolor{comment}{\ \ *\ @note\ Функция\ защищена,\ так\ как\ вызывается\ в\ контексте\ сбоя\ —\ минимизирует\ использование\ вызовов\ HAL.}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00538}00538\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00539}\mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{00539}}\ \_\_STATIC\_FORCEINLINE\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{HF\_HandleFault}}(\textcolor{keywordtype}{void})} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00540}00540\ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00541}00541\ \ \ \ \ \textcolor{comment}{//\ Получаем\ указатель\ на\ стек,\ где\ произошёл\ HardFault}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00542}00542\ \ \ \ \ \_\_ASM\ \textcolor{keyword}{volatile}(} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00543}00543\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}TST\ lr,\ \#4\ \ \ \ \ \ \ \(\backslash\)n"{}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00544}00544\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}ITE\ EQ\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)n"{}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00545}00545\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}MRSEQ\ \%[ptr],\ MSP\(\backslash\)n"{}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00546}00546\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}MRSNE\ \%[ptr],\ PSP\(\backslash\)n"{}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00547}00547\ \ \ \ \ \ \ \ \ :\ [ptr]\ \textcolor{stringliteral}{"{}=r"{}}(stack\_frame)} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00548}00548\ \ \ \ \ );} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00549}00549\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00550}00550\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n=====\ HardFault\ occurred!\ =====\(\backslash\)n"{}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00551}00551\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R0\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r0);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00552}00552\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R1\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r1);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00553}00553\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R2\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r2);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00554}00554\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R3\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r3);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00555}00555\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R12\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r12);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00556}00556\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}LR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>lr);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00557}00557\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PC\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>pc);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00558}00558\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PSR\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>psr);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00559}00559\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00560}00560\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}CFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>CFSR);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00561}00561\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}HFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>HFSR);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00562}00562\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}DFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>DFSR);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00563}00563\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}AFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>AFSR);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00564}00564\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}MMFAR\ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>MMFAR);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00565}00565\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}BFAR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>BFAR);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00566}00566\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00567}00567\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Stack\ trace\ -\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00568}00568\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}-\/-\/-\/\ Stack\ trace\ -\/-\/-\/\(\backslash\)n"{}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00569}00569\ \ \ \ \ ret\_adr[0]\ =\ \_\_builtin\_return\_address(0);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00570}00570\ \ \ \ \ ret\_adr[1]\ =\ \_\_builtin\_return\_address(1);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00571}00571\ \ \ \ \ ret\_adr[2]\ =\ \_\_builtin\_return\_address(2);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00572}00572\ } +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00573}00573\ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ 3;\ i++)\ \ \textcolor{comment}{//\ развернуть\ n\ уровней}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00574}00574\ \ \ \ \ \{} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00575}00575\ \ \ \ \ \ \ \textcolor{keywordflow}{if}(ret\_adr[i])} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00576}00576\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\ \ \#\%d:\ 0x\%08lX\(\backslash\)r\(\backslash\)n"{}},\ i,\ ret\_adr[i]);\ \textcolor{comment}{//\ -\/1\ для\ Thumb}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00577}00577\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00578}00578\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}{RTT\_SaveToFlash}}(\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313}{HF\_RTT\_TAG\_BASE}},\ \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca}{HF\_RTT\_TAIL\_SIZE}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00579}00579\ \}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00580}00580\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ HARDFAULT\_SERIAL\_TRACE}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00581}00581\ \textcolor{preprocessor}{\#define\ HF\_CheckRecovered(...)\ 0}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00582}00582\ \textcolor{preprocessor}{\#define\ HF\_HandleFault(...)}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00583}00583\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ HAL\_MODULE\_ENABLED\ \&\&\ HARDFAULT\_SERIAL\_TRACE}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00584}00584\ \textcolor{comment}{/**\ TRACE\_HARDFAULT}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00585}00585\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00586}00586\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00587}00587\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00588}00588\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00589}00589\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00590}00590\ } -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00591}00591\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACE\_H\_}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00590}00590\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACE\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/trackers_8h.tex b/Doc/latex/trackers_8h.tex index 497b237..9a0bf45 100644 --- a/Doc/latex/trackers_8h.tex +++ b/Doc/latex/trackers_8h.tex @@ -1,25 +1,23 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/trackers.h File Reference} -\hypertarget{trackers_8h}{}\label{trackers_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h}} +\doxysection{E\+:/.WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/trackers.h File Reference} +\hypertarget{trackers_8h}{}\label{trackers_8h}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h}} Заголочный файл для работы с трекерами \doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines}. {\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline -Include dependency graph for trackers.\+h\+: -\nopagebreak +Include dependency graph for trackers.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{trackers_8h__incl} +\includegraphics[width=218pt]{trackers_8h__incl} \end{center} \end{figure} -This graph shows which files directly or indirectly include this file\+: -\nopagebreak +This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=212pt]{trackers_8h__dep__incl} +\includegraphics[width=223pt]{trackers_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Macros} diff --git a/Doc/latex/trackers_8h__dep__incl.md5 b/Doc/latex/trackers_8h__dep__incl.md5 index 424e638..7ef668b 100644 --- a/Doc/latex/trackers_8h__dep__incl.md5 +++ b/Doc/latex/trackers_8h__dep__incl.md5 @@ -1 +1 @@ -183d67fba0f07b440433d7ad2021e54e \ No newline at end of file +96a17a39200f2c3cca829398cd49ff41 \ No newline at end of file diff --git a/Doc/latex/trackers_8h__dep__incl.pdf b/Doc/latex/trackers_8h__dep__incl.pdf index fb8b130..b407c1b 100644 Binary files a/Doc/latex/trackers_8h__dep__incl.pdf and b/Doc/latex/trackers_8h__dep__incl.pdf differ diff --git a/Doc/latex/trackers_8h__incl.md5 b/Doc/latex/trackers_8h__incl.md5 index 5e38f5b..001c007 100644 --- a/Doc/latex/trackers_8h__incl.md5 +++ b/Doc/latex/trackers_8h__incl.md5 @@ -1 +1 @@ -3f6ce4a82ec0dada7e006c4ba3a2e82f \ No newline at end of file +812583958a481bb84d7e2b0d1ce1fafa \ No newline at end of file diff --git a/Doc/latex/trackers_8h__incl.pdf b/Doc/latex/trackers_8h__incl.pdf index 754e36b..db25154 100644 Binary files a/Doc/latex/trackers_8h__incl.pdf and b/Doc/latex/trackers_8h__incl.pdf differ diff --git a/Doc/latex/trackers_8h_source.tex b/Doc/latex/trackers_8h_source.tex index 8d95a36..90a75ea 100644 --- a/Doc/latex/trackers_8h_source.tex +++ b/Doc/latex/trackers_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{trackers.\+h} -\hypertarget{trackers_8h_source}{}\label{trackers_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h}} +\hypertarget{trackers_8h_source}{}\label{trackers_8h_source}\index{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h@{E:/.WORK/STM32/STM\_Libs/STM32\_ExtendedLibs/MyLibs/Inc/trackers.h}} \mbox{\hyperlink{trackers_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -8,162 +8,161 @@ \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголочный\ файл\ для\ работы\ с\ трекерами\ @ref\ TRACKERS.}} \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00005}00005\ \textcolor{comment}{**************************************************************************}} \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ TRACKERS\ \ \ \ \ \ \ \ Trackers\ defines}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Дефайны\ для\ работы\ с\ трекерами}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00009}00009\ \textcolor{comment}{*\ @details\ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00010}00010\ \textcolor{comment}{Есть\ дефайн\ для\ объявления\ структуры\ трекера:\ TrackerTypeDef(num\_user\_vars).\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00011}00011\ \textcolor{comment}{Структура\ состоит\ из\ следующих\ элементов:\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00012}00012\ \textcolor{comment}{-\/\ cnt\_ok}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00013}00013\ \textcolor{comment}{-\/\ cnt\_err}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00014}00014\ \textcolor{comment}{-\/\ cnt\_warn}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00015}00015\ \textcolor{comment}{-\/\ user[num\_user\_vars]\ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00016}00016\ \textcolor{comment}{Также\ есть\ ряд\ функций\ (дефайнов)\ для\ обращения\ к\ элементам\ этой\ структуры.}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00017}00017\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00018}00018\ \textcolor{comment}{Параметры\ для\ конфигурации:}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00019}00019\ \textcolor{comment}{-\/\ @ref\ TRACKERS\_ENABLE\ -\/\ Включить\ трекеры}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00020}00020\ \textcolor{comment}{\ \ Если\ трекеры\ @ref\ TRACKERS\_ENABLE\ отключены,\ то\ все\ дефайны\ определяются\ как\ ничего\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00021}00021\ \textcolor{comment}{\ \ и\ на\ производительность\ кода\ не\ влияют\ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00022}00022\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00023}00023\ \textcolor{comment}{@par\ Пример:}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00024}00024\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00025}00025\ \textcolor{comment}{Определяем\ typedef\ трекера\ измерений\ Measure\_TrackerTypeDef}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00026}00026\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00027}00027\ \textcolor{comment}{@verbatim}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00028}00028\ \textcolor{comment}{\ \ typedef\ TrackerTypeDef(MEASURE\_USER\_VARS\_NUMB)\ Measure\_TrackerTypeDef;}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00029}00029\ \textcolor{comment}{@endverbatim}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00030}00030\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00031}00031\ \textcolor{comment}{И\ через\ @ref\ Measure\_TrackerTypeDef\ структура\ подключается\ в\ другие\ структуры}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00032}00032\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00033}00033\ \textcolor{comment}{Для\ работы\ с\ структурой\ можно\ использовать\ функции:}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00034}00034\ \textcolor{comment}{-\/\ Для\ получения\ значения:}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00035}00035\ \textcolor{comment}{\ \ -\/\ TrackerGet\_Ok()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00036}00036\ \textcolor{comment}{\ \ -\/\ TrackerGet\_Err()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00037}00037\ \textcolor{comment}{\ \ -\/\ TrackerGet\_Warn()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00038}00038\ \textcolor{comment}{\ \ -\/\ TrackerGet\_User(n)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00039}00039\ \textcolor{comment}{\ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00040}00040\ \textcolor{comment}{-\/\ Для\ записи\ значения:}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00041}00041\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_Ok()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00042}00042\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_Err()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00043}00043\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_Warn()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00044}00044\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_User()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00045}00045\ \textcolor{comment}{\ \ -\/\ TrackerWrite\_User(n)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00046}00046\ \textcolor{comment}{\ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00047}00047\ \textcolor{comment}{-\/\ Для\ очищения\ значения:}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00048}00048\ \textcolor{comment}{\ \ -\/\ TrackerClear\_All()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00049}00049\ \textcolor{comment}{\ \ -\/\ TrackerClear\_Ok()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00050}00050\ \textcolor{comment}{\ \ -\/\ TrackerClear\_Err()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00051}00051\ \textcolor{comment}{\ \ -\/\ TrackerClear\_Warn()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00052}00052\ \textcolor{comment}{\ \ -\/\ TrackerClear\_User(n)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00053}00053\ \textcolor{comment}{\ \ -\/\ TrackerClear\_UserAll()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00054}00054\ \textcolor{comment}{*\ @\{\ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00055}00055\ \textcolor{comment}{*************************************************************************/}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00056}00056\ \textcolor{preprocessor}{\#ifndef\ \_\_TRACKERS\_H\_}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00057}00057\ \textcolor{preprocessor}{\#define\ \_\_TRACKERS\_H\_}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00058}00058\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00059}00059\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00060}00060\ \textcolor{preprocessor}{\#ifdef\ TRACKERS\_ENABLE}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00061}00061\ \textcolor{comment}{\ \ /**\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00062}00062\ \textcolor{comment}{\ \ \ \ *\ @brief\ Структура\ для\ счетчиков\ отладки}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00063}00063\ \textcolor{comment}{\ \ \ \ *\ @param\ num\_user\_vars\ -\/\ количество\ пользовательских\ переменных}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00064}00064\ \textcolor{comment}{\ \ \ \ *\ @details\ Содержит\ счетчик\ для\ успешных\ событый\ (cnt\_ok),}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00065}00065\ \textcolor{comment}{\ \ \ \ *\ счетчик\ для\ ошибок\ (cnt\_err),\ счетчик\ для\ предупреждений\ (cnt\_warn).}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00066}00066\ \textcolor{comment}{\ \ \ \ *}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00067}00067\ \textcolor{comment}{\ \ \ \ *\ Также\ есть\ возможность\ объявить\ пользовательские\ переменные\ в\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00068}00068\ \textcolor{comment}{\ \ \ \ *\ количестве\ \ штук.}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00069}00069\ \textcolor{comment}{\ \ \ \ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00070}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4}{00070}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00071}00071\ \textcolor{preprocessor}{\ \ struct\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00072}00072\ \textcolor{preprocessor}{\ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00073}00073\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ cnt\_ok;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00074}00074\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ cnt\_err;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00075}00075\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ cnt\_warn;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00076}00076\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ user[num\_user\_vars];\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00077}00077\ \textcolor{preprocessor}{\ \ \}}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00078}00078\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00079}00079\ \textcolor{comment}{\ \ /**\ @brief\ Получить\ количетство\ пользовательских\ переменных\ */}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00080}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{00080}}\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (sizeof(\_user\_)\ /\ sizeof(uint32\_t))}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00081}00081\ \textcolor{comment}{\ \ /**\ @brief\ Проверка\ существует\ ли\ указанная\ пользовательская\ переменная\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00082}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{00082}}\ \textcolor{preprocessor}{\ \ \#define\ assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ ((\_uservarnumb\_)\ <\ num\_of\_usercnts((\_cntstruct\_).user))}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00083}00083\ \textcolor{comment}{\ \ /**\ @brief\ Условие\ для\ проверки\ существует\ ли\ указанная\ пользовательская\ переменная\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00084}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{00084}}\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_))}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00085}00085\ \textcolor{comment}{\ \ /**\ @brief\ Тернарный\ оператор\ для\ проверки\ существует\ ли\ указанная\ пользовательская\ переменная\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00086}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{00086}}\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ (assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_))\ ?\ \_uservarnumb\_\ :\ 0}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00087}00087\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00088}00088\ \ \ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00089}00089\ \textcolor{comment}{\ \ /**\ @brief\ Считать\ счетчик\ успешных\ событий\ */}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00090}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}{00090}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_ok}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00091}00091\ \textcolor{comment}{\ \ /**\ @brief\ Считать\ счетчик\ ошибок\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00092}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}{00092}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_err}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00093}00093\ \textcolor{comment}{\ \ /**\ @brief\ Считать\ счетчик\ предупреждений\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00094}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}{00094}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_warn}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00095}00095\ \textcolor{comment}{\ \ /**\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00096}00096\ \textcolor{comment}{\ \ \ \ *\ @brief\ Считать\ пользовательскую\ переменную\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00097}00097\ \textcolor{comment}{\ \ \ \ *\ @note\ \ \ Здесь\ нет\ проверки\ -\/\ существует\ ли\ пользовательская\ переменная!\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00098}00098\ \textcolor{comment}{\ \ \ \ *\ \ \ \ \ \ \ \ \ Есть\ возможность\ выйти\ за\ границы\ структуры!!!\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00099}00099\ \textcolor{comment}{\ \ \ \ *\ \ \ \ \ \ \ \ \ Чтобы\ этого\ избежать\ можно\ использовать\ дефайн\ \#ref\ assert\_usertracker()}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00100}00100\ \textcolor{comment}{\ \ \ \ @verbatim\ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00101}00101\ \textcolor{comment}{\ \ \ \ \ \ if(assert\_usertracker(struct,\ 0))\ \{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00102}00102\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ TrackerGet\_User(struct,\ 0)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00103}00103\ \textcolor{comment}{\ \ \ \ \ \ \}}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00104}00104\ \textcolor{comment}{\ \ \ \ @endverbatim}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00105}00105\ \textcolor{comment}{\ \ \ \ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00106}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}{00106}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).user[tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)]}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00007}00007\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Дефайны\ для\ работы\ с\ трекерами}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00008}00008\ \textcolor{comment}{*\ @details\ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00009}00009\ \textcolor{comment}{Есть\ дефайн\ для\ объявления\ структуры\ трекера:\ TrackerTypeDef(num\_user\_vars).\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00010}00010\ \textcolor{comment}{Структура\ состоит\ из\ следующих\ элементов:\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00011}00011\ \textcolor{comment}{-\/\ cnt\_ok}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00012}00012\ \textcolor{comment}{-\/\ cnt\_err}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00013}00013\ \textcolor{comment}{-\/\ cnt\_warn}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00014}00014\ \textcolor{comment}{-\/\ user[num\_user\_vars]\ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00015}00015\ \textcolor{comment}{Также\ есть\ ряд\ функций\ (дефайнов)\ для\ обращения\ к\ элементам\ этой\ структуры.}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00016}00016\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ TRACKERS\_ENABLE\ -\/\ Включить\ трекеры}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00019}00019\ \textcolor{comment}{\ \ Если\ трекеры\ @ref\ TRACKERS\_ENABLE\ отключены,\ то\ все\ дефайны\ определяются\ как\ ничего\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00020}00020\ \textcolor{comment}{\ \ и\ на\ производительность\ кода\ не\ влияют\ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00021}00021\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00022}00022\ \textcolor{comment}{@par\ Пример:}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00023}00023\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00024}00024\ \textcolor{comment}{Определяем\ typedef\ трекера\ измерений\ Measure\_TrackerTypeDef}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00025}00025\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00026}00026\ \textcolor{comment}{@verbatim}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00027}00027\ \textcolor{comment}{\ \ typedef\ TrackerTypeDef(MEASURE\_USER\_VARS\_NUMB)\ Measure\_TrackerTypeDef;}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00028}00028\ \textcolor{comment}{@endverbatim}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00029}00029\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00030}00030\ \textcolor{comment}{И\ через\ @ref\ Measure\_TrackerTypeDef\ структура\ подключается\ в\ другие\ структуры}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00031}00031\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00032}00032\ \textcolor{comment}{Для\ работы\ с\ структурой\ можно\ использовать\ функции:}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00033}00033\ \textcolor{comment}{-\/\ Для\ получения\ значения:}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00034}00034\ \textcolor{comment}{\ \ -\/\ TrackerGet\_Ok()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00035}00035\ \textcolor{comment}{\ \ -\/\ TrackerGet\_Err()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00036}00036\ \textcolor{comment}{\ \ -\/\ TrackerGet\_Warn()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00037}00037\ \textcolor{comment}{\ \ -\/\ TrackerGet\_User(n)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00038}00038\ \textcolor{comment}{\ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00039}00039\ \textcolor{comment}{-\/\ Для\ записи\ значения:}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00040}00040\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_Ok()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00041}00041\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_Err()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00042}00042\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_Warn()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00043}00043\ \textcolor{comment}{\ \ -\/\ TrackerCnt\_User()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00044}00044\ \textcolor{comment}{\ \ -\/\ TrackerWrite\_User(n)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00045}00045\ \textcolor{comment}{\ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00046}00046\ \textcolor{comment}{-\/\ Для\ очищения\ значения:}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00047}00047\ \textcolor{comment}{\ \ -\/\ TrackerClear\_All()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00048}00048\ \textcolor{comment}{\ \ -\/\ TrackerClear\_Ok()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00049}00049\ \textcolor{comment}{\ \ -\/\ TrackerClear\_Err()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00050}00050\ \textcolor{comment}{\ \ -\/\ TrackerClear\_Warn()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00051}00051\ \textcolor{comment}{\ \ -\/\ TrackerClear\_User(n)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00052}00052\ \textcolor{comment}{\ \ -\/\ TrackerClear\_UserAll()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00053}00053\ \textcolor{comment}{*\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00054}00054\ \textcolor{comment}{*************************************************************************/}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00055}00055\ \textcolor{preprocessor}{\#ifndef\ \_\_TRACKERS\_H\_}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00056}00056\ \textcolor{preprocessor}{\#define\ \_\_TRACKERS\_H\_}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00057}00057\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00058}00058\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00059}00059\ \textcolor{preprocessor}{\#ifdef\ TRACKERS\_ENABLE}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00060}00060\ \textcolor{comment}{\ \ /**\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00061}00061\ \textcolor{comment}{\ \ \ \ *\ @brief\ Структура\ для\ счетчиков\ отладки}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00062}00062\ \textcolor{comment}{\ \ \ \ *\ @param\ num\_user\_vars\ -\/\ количество\ пользовательских\ переменных}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00063}00063\ \textcolor{comment}{\ \ \ \ *\ @details\ Содержит\ счетчик\ для\ успешных\ событый\ (cnt\_ok),}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00064}00064\ \textcolor{comment}{\ \ \ \ *\ счетчик\ для\ ошибок\ (cnt\_err),\ счетчик\ для\ предупреждений\ (cnt\_warn).}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00065}00065\ \textcolor{comment}{\ \ \ \ *}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00066}00066\ \textcolor{comment}{\ \ \ \ *\ Также\ есть\ возможность\ объявить\ пользовательские\ переменные\ в\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00067}00067\ \textcolor{comment}{\ \ \ \ *\ количестве\ \ штук.}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00068}00068\ \textcolor{comment}{\ \ \ \ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00069}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4}{00069}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00070}00070\ \textcolor{preprocessor}{\ \ struct\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00071}00071\ \textcolor{preprocessor}{\ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00072}00072\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ cnt\_ok;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00073}00073\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ cnt\_err;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00074}00074\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ cnt\_warn;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00075}00075\ \textcolor{preprocessor}{\ \ \ \ uint32\_t\ user[num\_user\_vars];\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00076}00076\ \textcolor{preprocessor}{\ \ \}}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00077}00077\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00078}00078\ \textcolor{comment}{\ \ /**\ @brief\ Получить\ количетство\ пользовательских\ переменных\ */}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00079}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{00079}}\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (sizeof(\_user\_)\ /\ sizeof(uint32\_t))}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00080}00080\ \textcolor{comment}{\ \ /**\ @brief\ Проверка\ существует\ ли\ указанная\ пользовательская\ переменная\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00081}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{00081}}\ \textcolor{preprocessor}{\ \ \#define\ assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ ((\_uservarnumb\_)\ <\ num\_of\_usercnts((\_cntstruct\_).user))}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00082}00082\ \textcolor{comment}{\ \ /**\ @brief\ Условие\ для\ проверки\ существует\ ли\ указанная\ пользовательская\ переменная\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00083}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{00083}}\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_))}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00084}00084\ \textcolor{comment}{\ \ /**\ @brief\ Тернарный\ оператор\ для\ проверки\ существует\ ли\ указанная\ пользовательская\ переменная\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00085}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{00085}}\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ (assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_))\ ?\ \_uservarnumb\_\ :\ 0}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00086}00086\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00087}00087\ \ \ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00088}00088\ \textcolor{comment}{\ \ /**\ @brief\ Считать\ счетчик\ успешных\ событий\ */}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00089}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}{00089}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_ok}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00090}00090\ \textcolor{comment}{\ \ /**\ @brief\ Считать\ счетчик\ ошибок\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00091}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}{00091}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_err}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00092}00092\ \textcolor{comment}{\ \ /**\ @brief\ Считать\ счетчик\ предупреждений\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00093}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}{00093}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_warn}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00094}00094\ \textcolor{comment}{\ \ /**\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00095}00095\ \textcolor{comment}{\ \ \ \ *\ @brief\ Считать\ пользовательскую\ переменную\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00096}00096\ \textcolor{comment}{\ \ \ \ *\ @note\ \ \ Здесь\ нет\ проверки\ -\/\ существует\ ли\ пользовательская\ переменная!\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00097}00097\ \textcolor{comment}{\ \ \ \ *\ \ \ \ \ \ \ \ \ Есть\ возможность\ выйти\ за\ границы\ структуры!!!\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00098}00098\ \textcolor{comment}{\ \ \ \ *\ \ \ \ \ \ \ \ \ Чтобы\ этого\ избежать\ можно\ использовать\ дефайн\ \#ref\ assert\_usertracker()}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00099}00099\ \textcolor{comment}{\ \ \ \ @verbatim\ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00100}00100\ \textcolor{comment}{\ \ \ \ \ \ if(assert\_usertracker(struct,\ 0))\ \{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00101}00101\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ TrackerGet\_User(struct,\ 0)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00102}00102\ \textcolor{comment}{\ \ \ \ \ \ \}}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00103}00103\ \textcolor{comment}{\ \ \ \ @endverbatim}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00104}00104\ \textcolor{comment}{\ \ \ \ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00105}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}{00105}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).user[tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)]}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00106}00106\ \ \ } \DoxyCodeLine{\Hypertarget{trackers_8h_source_l00107}00107\ \ \ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00108}00108\ \ \ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00109}00109\ \ \ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00110}00110\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ счетчика\ успешных\ событий\ */}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00111}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}{00111}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_ok++}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00112}00112\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ счетчика\ ошибок\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00113}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}{00113}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_err++}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00114}00114\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ счетчика\ предупреждений\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00115}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}{00115}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_warn++}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00116}00116\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ пользовательской\ переменной\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00117}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}{00117}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]++;}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00118}00118\ \textcolor{comment}{\ \ /**\ @brief\ Запись\ числа\ в\ пользовательскую\ переменную\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00119}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}{00119}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)\ \ \ \ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]\ =\ (\_val\_)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00120}00120\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00121}00121\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ всей\ структуры\ */}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00122}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}{00122}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ memset(\&(\_cntstruct\_),\ 0,\ sizeof(\_cntstruct\_))}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00123}00123\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ счетчика\ успешных\ событий\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00124}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}{00124}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_ok\ =\ 0}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00125}00125\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ счетчика\ ошибок\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00126}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}{00126}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_err\ =\ 0}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00127}00127\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ счетчика\ предупреждений\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00128}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}{00128}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_warn\ =\ 0}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00129}00129\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ пользовательской\ переменной\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00130}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}{00130}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]\ =\ 0;}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00131}00131\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ всех\ пользовательских\ переменных\ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00132}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{00132}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ memset(\&(\_cntstruct\_).user,\ 0,\ sizeof((\_cntstruct\_).user))}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00133}00133\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00134}00134\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//TRACKERS\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00135}00135\ \ \ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00136}00136\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00137}00137\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00138}00138\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00139}00139\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00140}00140\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00141}00141\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00142}00142\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00143}00143\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00144}00144\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00145}00145\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00146}00146\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00147}00147\ \ \ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00148}00148\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00149}00149\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00152}00152\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00153}00153\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00154}00154\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00155}00155\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00156}00156\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00157}00157\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00158}00158\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00159}00159\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00160}00160\ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00161}00161\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//TRACKERS\_ENABLE}} -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00162}00162\ \ \ } -\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00163}00163\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACKERS\_H\_}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00108}00108\ \ \ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00109}00109\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ счетчика\ успешных\ событий\ */}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00110}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}{00110}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_ok++}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00111}00111\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ счетчика\ ошибок\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00112}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}{00112}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_err++}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00113}00113\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ счетчика\ предупреждений\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00114}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}{00114}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_warn++}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00115}00115\ \textcolor{comment}{\ \ /**\ @brief\ Инкрементирование\ пользовательской\ переменной\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00116}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}{00116}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]++;}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00117}00117\ \textcolor{comment}{\ \ /**\ @brief\ Запись\ числа\ в\ пользовательскую\ переменную\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00118}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}{00118}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)\ \ \ \ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]\ =\ (\_val\_)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00119}00119\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00120}00120\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ всей\ структуры\ */}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00121}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}{00121}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ memset(\&(\_cntstruct\_),\ 0,\ sizeof(\_cntstruct\_))}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00122}00122\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ счетчика\ успешных\ событий\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00123}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}{00123}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_ok\ =\ 0}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00124}00124\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ счетчика\ ошибок\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00125}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}{00125}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_err\ =\ 0}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00126}00126\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ счетчика\ предупреждений\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00127}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}{00127}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_cntstruct\_).cnt\_warn\ =\ 0}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00128}00128\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ пользовательской\ переменной\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00129}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}{00129}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]\ =\ 0;}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00130}00130\ \textcolor{comment}{\ \ /**\ @brief\ Очистка\ всех\ пользовательских\ переменных\ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00131}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{00131}}\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ memset(\&(\_cntstruct\_).user,\ 0,\ sizeof((\_cntstruct\_).user))}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00132}00132\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00133}00133\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//TRACKERS\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00134}00134\ \ \ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00135}00135\ \textcolor{preprocessor}{\ \ \#define\ TrackerTypeDef(num\_user\_vars)\ void\ *}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00136}00136\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00137}00137\ \textcolor{preprocessor}{\ \ \#define\ num\_of\_usercnts(\_user\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00138}00138\ \textcolor{preprocessor}{\ \ \#define\ assert\_tracecnt(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00139}00139\ \textcolor{preprocessor}{\ \ \#define\ if\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ if(0)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00140}00140\ \textcolor{preprocessor}{\ \ \#define\ tern\_assert\_usertracker(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ 0}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00141}00141\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00142}00142\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00143}00143\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00144}00144\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dummy\ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00145}00145\ \textcolor{preprocessor}{\ \ \#define\ TrackerGet\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ dummy}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00146}00146\ \ \ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00147}00147\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00148}00148\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00149}00149\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00150}00150\ \textcolor{preprocessor}{\ \ \#define\ TrackerCnt\_User(\_cntstruct\_,\ \_uservarnumb\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00151}00151\ \textcolor{preprocessor}{\ \ \#define\ TrackerWrite\_User(\_cntstruct\_,\ \_uservarnumb\_,\ \_val\_)}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00152}00152\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00153}00153\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_All(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00154}00154\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Ok(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00155}00155\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Err(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00156}00156\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_Warn(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00157}00157\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_User(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00158}00158\ \textcolor{preprocessor}{\ \ \#define\ TrackerClear\_UserAll(\_cntstruct\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00159}00159\ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00160}00160\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//TRACKERS\_ENABLE}} +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00161}00161\ \ \ } +\DoxyCodeLine{\Hypertarget{trackers_8h_source_l00162}00162\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_TRACKERS\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/unionuint16___bit_type_def.tex b/Doc/latex/unionuint16___bit_type_def.tex index 124b3d8..f58de34 100644 --- a/Doc/latex/unionuint16___bit_type_def.tex +++ b/Doc/latex/unionuint16___bit_type_def.tex @@ -5,7 +5,7 @@ \item uint16\+\_\+t \mbox{\hyperlink{unionuint16___bit_type_def_ab821c8d3f0ad9b2aa405b29c1a15e955}{all}} \item -\Hypertarget{unionuint16___bit_type_def_ac1f31de77621537e93ef61e2748a3601}\label{unionuint16___bit_type_def_ac1f31de77621537e93ef61e2748a3601} +\Hypertarget{unionuint16___bit_type_def_a1ea7c1c6715e1bdf134f3cd3b5601c91}\label{unionuint16___bit_type_def_a1ea7c1c6715e1bdf134f3cd3b5601c91} \begin{tabbing} xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill struct \{\\ @@ -214,4 +214,4 @@ Definition at line \mbox{\hyperlink{bit__access_8h_source_l00075}{75}} of file \ The documentation for this union was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/unionuint32___bit_type_def.tex b/Doc/latex/unionuint32___bit_type_def.tex index c0ad0ac..a04a4b6 100644 --- a/Doc/latex/unionuint32___bit_type_def.tex +++ b/Doc/latex/unionuint32___bit_type_def.tex @@ -5,7 +5,7 @@ \item uint32\+\_\+t \mbox{\hyperlink{unionuint32___bit_type_def_aabd9acf3b55b909219a41737a105f31b}{all}} \item -\Hypertarget{unionuint32___bit_type_def_a0902ae26c90f85b2ee1423d994fe5592}\label{unionuint32___bit_type_def_a0902ae26c90f85b2ee1423d994fe5592} +\Hypertarget{unionuint32___bit_type_def_a52a24d7cf03b0ce7b23b62a84189e829}\label{unionuint32___bit_type_def_a52a24d7cf03b0ce7b23b62a84189e829} \begin{tabbing} xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill struct \{\\ @@ -390,4 +390,4 @@ Definition at line \mbox{\hyperlink{bit__access_8h_source_l00092}{92}} of file \ The documentation for this union was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/unionuint64___bit_type_def.tex b/Doc/latex/unionuint64___bit_type_def.tex index c6e6f55..91d530b 100644 --- a/Doc/latex/unionuint64___bit_type_def.tex +++ b/Doc/latex/unionuint64___bit_type_def.tex @@ -5,7 +5,7 @@ \item uint64\+\_\+t \mbox{\hyperlink{unionuint64___bit_type_def_a1dd79aa84a1d13d156f1b684aaf01edd}{all}} \item -\Hypertarget{unionuint64___bit_type_def_a753566b86284afd8347ec6f5d2604441}\label{unionuint64___bit_type_def_a753566b86284afd8347ec6f5d2604441} +\Hypertarget{unionuint64___bit_type_def_a88a6752ed39cceac3848a0f96409f0c1}\label{unionuint64___bit_type_def_a88a6752ed39cceac3848a0f96409f0c1} \begin{tabbing} xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill struct \{\\ @@ -742,4 +742,4 @@ Definition at line \mbox{\hyperlink{bit__access_8h_source_l00117}{117}} of file The documentation for this union was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} diff --git a/Doc/latex/unionuint8___bit_type_def.tex b/Doc/latex/unionuint8___bit_type_def.tex index 0b6a2d6..505cfb8 100644 --- a/Doc/latex/unionuint8___bit_type_def.tex +++ b/Doc/latex/unionuint8___bit_type_def.tex @@ -5,7 +5,7 @@ \item uint8\+\_\+t \mbox{\hyperlink{unionuint8___bit_type_def_aacf75bef7d0b9ed458e03a4278f5fe88}{all}} \item -\Hypertarget{unionuint8___bit_type_def_aacf7b4350fc17ab7d9517f71e6408d85}\label{unionuint8___bit_type_def_aacf7b4350fc17ab7d9517f71e6408d85} +\Hypertarget{unionuint8___bit_type_def_ae698f6880705aa10e79d50c2fc99165a}\label{unionuint8___bit_type_def_ae698f6880705aa10e79d50c2fc99165a} \begin{tabbing} xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill struct \{\\ @@ -126,4 +126,4 @@ Definition at line \mbox{\hyperlink{bit__access_8h_source_l00051}{51}} of file \ The documentation for this union was generated from the following file\+:\begin{DoxyCompactItemize} \item -E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} +E\+:/.\+WORK/\+STM32/\+STM\+\_\+\+Libs/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}}\end{DoxyCompactItemize} diff --git a/MyLibs/Inc/bench_time.h b/MyLibs/Inc/bench_time.h index 1704b3e..731ccc3 100644 --- a/MyLibs/Inc/bench_time.h +++ b/MyLibs/Inc/bench_time.h @@ -4,7 +4,6 @@ * @brief Заголовочный файл для измерения времени между событиями ****************************************************************************** * @addtogroup BENCH_TIME Time measurement -* @ingroup MYLIBS_DEFINES * @brief Библиотека для измерения времени/тиков между событиями * @details Поддерживает: diff --git a/MyLibs/Inc/bit_access.h b/MyLibs/Inc/bit_access.h index fe824cd..52a6d60 100644 --- a/MyLibs/Inc/bit_access.h +++ b/MyLibs/Inc/bit_access.h @@ -4,7 +4,7 @@ * @brief Заголочный файл для дефайнов битового доступа. ************************************************************************** * @defgroup BIT_ACCESS_DEFINES Bit access defines -* @ingroup MYLIBS_DEFINES +* @ingroup MYLIBS_TOOLS * @brief Макросы и typedef'ы для работы с битами в unsigned типах. * @details В этом файле определены макросы для получения значения конкретного бита^ diff --git a/MyLibs/Inc/gen_optimizer.h b/MyLibs/Inc/gen_optimizer.h index 9a3b332..3a2c35f 100644 --- a/MyLibs/Inc/gen_optimizer.h +++ b/MyLibs/Inc/gen_optimizer.h @@ -4,7 +4,6 @@ * @brief Заголовочный файл для адаптивного подбора параметров ****************************************************************************** * @addtogroup GEN_OPTIMIZER Genetic optimizer -* @ingroup MYLIBS_DEFINES * @brief Библиотека для эволюционного подбора параметров * @details Поддерживает: diff --git a/MyLibs/Inc/mylibs_defs.h b/MyLibs/Inc/mylibs_defs.h index 020a1c7..8b32702 100644 --- a/MyLibs/Inc/mylibs_defs.h +++ b/MyLibs/Inc/mylibs_defs.h @@ -3,13 +3,28 @@ * @file mylibs_defs.h * @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral. ************************************************************************** -* @defgroup MYLIBS_DEFINES General Tools +* @defgroup MYLIBS_TOOLS General Tools * @ingroup MYLIBS_ALL * @brief Общие макросы и typedef'ы, используемые по всему проекту * +* @defgroup MYLIBS_DEBUG_TOOLS Debug Tools +* @ingroup MYLIBS_ALL +* @brief Утилиты для тестирования программы +* +* @addtogroup BENCH_TIME +* @ingroup MYLIBS_DEBUG_TOOLS +* +* @addtogroup GEN_OPTIMIZER +* @ingroup MYLIBS_DEBUG_TOOLS +* +* @addtogroup TRACE +* @ingroup MYLIBS_DEBUG_TOOLS +* +* @addtogroup TRACKERS +* @ingroup MYLIBS_DEBUG_TOOLS *************************************************************************/ -#ifndef __MYLIBS_DEFINES_H_ -#define __MYLIBS_DEFINES_H_ +#ifndef __MYLIBS_TOOLS_H_ +#define __MYLIBS_TOOLS_H_ #include "mylibs_config.h" @@ -17,7 +32,7 @@ ******************************ERROR_HANDLER********************************/ /** * @addtogroup ERROR_HANDLER_DEFINES Error Handler defines - * @ingroup MYLIBS_DEFINES + * @ingroup MYLIBS_TOOLS * @brief Дефайны для обработки ошибок * @{ */ @@ -58,7 +73,7 @@ extern void Error_Handler(void); ******************************DELAYS_DEFINES*******************************/ /** * @addtogroup DELAYS_DEFINES Delays defines - * @ingroup MYLIBS_DEFINES + * @ingroup MYLIBS_TOOLS * @brief Макросы и определения для работы с задержками в миллисекундах. * @details * Этот блок содержит макросы для реализации задержек с использованием HAL или FreeRTOS: @@ -140,7 +155,7 @@ extern void Error_Handler(void); *******************************UTIL_DEFINES********************************/ /** * @addtogroup UTILS_DEFINES Utils defines - * @ingroup MYLIBS_DEFINES + * @ingroup MYLIBS_TOOLS * @brief Общие вспомогательные макросы * @{ */ @@ -203,4 +218,4 @@ do{ \ /** @endcond */ -#endif //__MYLIBS_DEFINES_H_ \ No newline at end of file +#endif //__MYLIBS_TOOLS_H_ \ No newline at end of file diff --git a/MyLibs/Inc/mylibs_include.h b/MyLibs/Inc/mylibs_include.h index 6f12c6c..27fa86c 100644 --- a/MyLibs/Inc/mylibs_include.h +++ b/MyLibs/Inc/mylibs_include.h @@ -14,13 +14,8 @@ - Сконфигурировать mylibs_config.h: - Подключить заголовочный файл HAL библиотеки конкретного МК (напр. stm32f4xx_hal.h) - Подключить другие заголовочные файлы которые общие для всего проекта и должны быть видны - - -- Подключить mylibs_include.h туда, где необходим доступ к библиотекам. + - Подключить mylibs_include.h туда, где необходим доступ к библиотекам. -* @defgroup MYLIBS_PERIPHERAL Peripheral -* @ingroup MYLIBS_ALL -* @brief Модули для управления периферией -* *************************************************************************/ #ifndef __MYLIBS_INCLUDE_H_ #define __MYLIBS_INCLUDE_H_ diff --git a/MyLibs/Inc/trace.h b/MyLibs/Inc/trace.h index d0f5c7f..976b8d1 100644 --- a/MyLibs/Inc/trace.h +++ b/MyLibs/Inc/trace.h @@ -4,7 +4,6 @@ * @brief Заголочный файл для работы с трассировкой. ************************************************************************** * @addtogroup TRACE Trace defines -* @ingroup MYLIBS_DEFINES * @brief Дефайны для работы с трассировкой *************************************************************************/ #ifndef __TRACE_H_ diff --git a/MyLibs/Inc/trackers.h b/MyLibs/Inc/trackers.h index 9313f39..458dd00 100644 --- a/MyLibs/Inc/trackers.h +++ b/MyLibs/Inc/trackers.h @@ -4,7 +4,6 @@ * @brief Заголочный файл для работы с трекерами @ref TRACKERS. ************************************************************************** * @addtogroup TRACKERS Trackers defines -* @ingroup MYLIBS_DEFINES * @brief Дефайны для работы с трекерами * @details Есть дефайн для объявления структуры трекера: TrackerTypeDef(num_user_vars). diff --git a/README.md b/README.md new file mode 100644 index 0000000..219c2b0 --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ +# Обзор `ExtendedLibs` + +ExtendedLibs - это набор библиотек для удобной работы с STM32. Данный субмодуль подключается напрямую из Git и содержит набор вспомогательных библиотек для работы МК, в частности STM32 и SEGGER RTT. + +## Основные возможности + + +#### Общие утилиты MyLibs (@ref MYLIBS_TOOLS) +- Макросы для задержек (@ref DELAYS_DEFINES) +- Утилиты для работы с всяким (@ref UTILS_DEFINES) +- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES) + +#### Отладка* (@ref MYLIBS_DEBUG_TOOLS) +- Трассировка (@ref TRACE) +- Измерение временных интервалов (@ref BENCH_TIME) +- Генетический алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER) +- Трекеры для статистики и отладки (@ref TRACKERS) + +_*Модули отладки независимы от MyLibs и могут быть использованы отдельно_ + +## Структура библиотеки + +*Note: Файлы начинающиеся с `__` и которых нет в этом дереве являются **внутренними/непротестированными/недокументированными*** +``` +ProjectRoot/ +├── MyLibs/ # Общие библиотеки, независимые от платформы (или почти) +│ ├── inc/ +│ │ ├── __mylibs_include.h # Главный include файл +│ │ ├── __mylibs_config.h # Конфигурация библиотек +│ │ ├── mylibs_defs.h # Общие определения и макросы +│ │ ├── bit_access.h # Битовый доступ к регистрам +│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм) +│ │ ├── trackers.h # Трекеры для отладки +│ │ └── trace.h # Трассировка и логирование +│ └── src/ +│ +└──RTT # Библиотека RTT + ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT + ├── SEGGER_RTT.c # Основной модуль RTT + ├── SEGGER_RTT.h # Основной заголовок RTT + ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M + └── SEGGER_RTT_printf.c # Реализация printf() через RTT +``` + +## Инструкция по подключению + +1. **Склонируйте субмодуль** в ваш проект: + +```bash +git submodule add https://git.arktika.cyou/Razvalyaev/STM32_ExtendedLibs path/to/ExtendedLibs +git submodule update --init --recursive +``` + +2. **Скопируйте файлы конфигурации и главный include** в отдельную папку в вашем проекте (вне субмодуля) и удалите `__`: + +``` +ProjectRoot/ +├── Configs/ +│ ├── mylibs_include.h +│ └── mylibs_config.h +│ └── SEGGER_RTT_Conf.h +``` + +3. **Настройте конфигурацию** под ваш проект: + +* `mylibs_config.h` — задайте нужные параметры библиотек. +* `mylibs_include.h` — укажите пути к вашим заголовочным файлам и подключаемым модулям. +* `SEGGER_RTT_Conf.h` — настройки RTT. + +4. **Подключайте библиотеки в вашем коде** через главный include файл: + +```c +#include "mylibs_include.h" +``` + +5. **Обновление библиотеки**: + +После обновления субмодуля из Git, исходные файлы библиотеки будут обновлены, но ваши конфиги останутся в целевой папке и не перезапишутся: + +```bash +git submodule update --remote +``` \ No newline at end of file diff --git a/mainpage.h b/mainpage.h deleted file mode 100644 index bfb5b30..0000000 --- a/mainpage.h +++ /dev/null @@ -1,94 +0,0 @@ -/** -@mainpage - - -@section overview Обзор -MyLibs - это набор библиотек для удобной работы с STM32. - -\htmlonly -Актуальная версия -\endhtmlonly - -@subsection features Основные возможности - -@subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES) -- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES) -- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE) -- Эволюционный алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER) -- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES) - -@subsubsection trace_module Трассировка @ref TRACE -- Serial трассировка через SWO и RTT (@ref TRACE_SERIAL) -- GPIO трассировка для отладки (@ref TRACE_GPIO) -- Сохранение логов в Flash память (@ref TRACE_RTT_FLASH) -- Обработка HardFault с сохранением контекста (@ref TRACE_HARDFAULT) - -@subsubsection gpio_module Модуль GPIO @ref MY_LIBS_GPIO -- Инициализация портов и тактирования (@ref MYLIBS_GPIO_GENERAL) -- Управление светодиодами (включение/выключение, моргание, плавное затухание) (@ref MYLIBS_GPIO_LEDS) -- Работа с кнопками (чтение состояния, фильтрация дребезга) (@ref MYLIBS_GPIO_SWITCH) - -@subsubsection tim_module Модуль таймеров @ref MY_LIBS_TIM -- Базовая инициализация таймеров (@ref MYLIBS_TIM_GENERAL) -- Формирование задержек (блокирующие и неблокирующие) (@ref MYLIBS_TIM_DELAY) -- Работа с энкодерами (чтение положения, обработка кнопок) (@ref MYLIBS_TIM_ENCODER) -- Настройка ШИМ и Output Compare (@ref MYLIBS_TIM_OC) - -@subsubsection uart_module Модуль UART @ref MY_LIBS_UART -- Базовая инициализация UART и его пинов одной функцией (@ref UART_Base_Init) - -@subsubsection spi_module Модуль SPI @ref MY_LIBS_SPI -- Базовая инициализация SPI и пинов одной функцией (@ref SPI_Base_Init) - -@subsection structure Структура проекта - -@code -ProjectRoot/ -├── MyLibs/ # Общие библиотеки, независимые от платформы (или почти) -│ ├── inc/ -│ │ ├── mylibs_include.h # Главный include файл -│ │ ├── mylibs_config.h # Конфигурация библиотек -│ │ ├── mylibs_defs.h # Общие определения и макросы -│ │ ├── bit_access.h # Битовый доступ к регистрам -│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм) -│ │ ├── trackers.h # Трекеры для отладки -│ │ └── trace.h # Трассировка и логирование -│ └── src/ -│ -├──RTT # Библиотека RTT -│ ├── __SEGGER_RTT_Conf.h # Конфигурационный файл RTT -│ ├── SEGGER_RTT.c # Основной модуль RTT -│ ├── SEGGER_RTT.h # Основной заголовок RTT -│ ├── SEGGER_RTT_ASM_ARMv7M.S # Ассемблерная оптимизация для ARMv7M -│ └── SEGGER_RTT_printf.c # Реализация printf() через RTT -│ -└── STM32_General # Работа с периферией STM32 - ├── inc/ - │ ├── general_gpio.h # Работа с GPIO - │ ├── general_spi.h # Работа с SPI - │ ├── general_tim.h # Работа с таймерами - │ └── general_uart.h # Работа с UART - └── src/ - ├── general_gpio.c # Реализация GPIO - ├── general_spi.c # Реализация SPI - ├── general_tim.c # Реализация TIM - └── general_uart.c # Реализация UART -@endcode - - - - -@subsection usage_basic Использование - -Инструкция по подключению: - -1. Настройте конфигурацию @ref MYLIBS_CONFIG в @ref mylibs_config.h - -2. Подключите главный заголовочный файл: -@code -#include "mylibs_include.h" -@endcode - -3. Используйте нужные модули в своем коде. Примеры использования приведены в соответствующей теме - -*/ \ No newline at end of file