\doxysubsubsubsection{Serial trace defines }
\hypertarget{group___t_r_a_c_e___s_e_r_i_a_l}{}\label{group___t_r_a_c_e___s_e_r_i_a_l}\index{Serial trace defines@{Serial trace defines}}


Дефайны для работы с serial трассировкой (SWO, RTT)  


Collaboration diagram for Serial trace defines\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=291pt]{group___t_r_a_c_e___s_e_r_i_a_l}
\end{center}
\end{figure}
\doxysubsubsubsubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\+\_\+printf}}(...)
\begin{DoxyCompactList}\small\item\em Универсальный макрос для вывода трассировки \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}{log\+\_\+printf}}(TAG,  fmt, ...)
\begin{DoxyCompactList}\small\item\em Макрос логирования с поддержкой уровней \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}{LOG\+\_\+\+LEVEL}. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}()
\begin{DoxyCompactList}\small\item\em Локальное время \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}{LOG\+\_\+\+LEVEL}}~1
\begin{DoxyCompactList}\small\item\em Уровень логирования (по умолчанию == 1) \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsubsubsection{Detailed Description}
Дефайны для работы с serial трассировкой (SWO, RTT) 

В зависимости от настроек определяется дефайн \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\+\_\+printf()} и \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}{log\+\_\+printf()} для работы с трассировкой\+:
\begin{DoxyItemize}
\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 (\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\+:

\begin{DoxyVerb}    Manage Run-Time Environment -> Compiler -> I/O -> STDOUT -> ITM
\end{DoxyVerb}


Для SWO также надо включить трассировку\+: ~\newline


\begin{DoxyVerb}    Options For Target -> Debug -> Debugger Settings
\end{DoxyVerb}


В вкладке Debug\+:
\begin{DoxyItemize}
\item Port = SW В вкладке Trace\+:
\item Указать Core Clock
\item Выставить Trace Port = SWO
\item ITM -\/ выбрать нужный порт (для Keil нулевой порт) 
\end{DoxyItemize}
\end{DoxyItemize}

\label{doc-define-members}
\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_doc-define-members}
\doxysubsubsubsubsection{Macro Definition Documentation}
\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}\index{Serial trace defines@{Serial trace defines}!my\_printf@{my\_printf}}
\index{my\_printf@{my\_printf}!Serial trace defines@{Serial trace defines}}
\doxysubsubsubsubsubsection{\texorpdfstring{my\_printf}{my\_printf}}
{\footnotesize\ttfamily \label{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa} 
\#define my\+\_\+printf(\begin{DoxyParamCaption}\item[{}]{}...{}\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{SEGGER\_RTT\_printf(0,\ \_\_VA\_ARGS\_\_)}

\end{DoxyCode}


Универсальный макрос для вывода трассировки 

Варианты реализации\+:
\begin{DoxyItemize}
\item RTT\+\_\+\+TRACE\+\_\+\+ENABLE {\ttfamily SEGGER\+\_\+\+RTT\+\_\+printf(0, ...)}
\item SWO\+\_\+\+TRACE\+\_\+\+ENABLE -\/ {\ttfamily printf(...)}
\item NO\+\_\+\+TRACE -\/ пустой макрос 
\end{DoxyItemize}

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}}
\doxysubsubsubsubsubsection{\texorpdfstring{log\_printf}{log\_printf}}
{\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})}



Макрос логирования с поддержкой уровней \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}{LOG\+\_\+\+LEVEL}. 


\begin{DoxyParams}{Parameters}
{\em TAG} & Тэг лога \\
\hline
{\em fmt,...} & Форматируемая строка\\
\hline
\end{DoxyParams}
Варианты реализации\+:
\begin{DoxyItemize}
\item \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}{LOG\+\_\+\+LEVEL} == 0 -\/ логирование отключено (макрос пустой)
\item \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}{LOG\+\_\+\+LEVEL} == 1 -\/ выводится время \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time} и TAG 
\begin{DoxyCode}{0}
\DoxyCodeLine{[123]\ [ADC]\ Measure\ Done}
\DoxyCodeLine{[456]\ [ADC]\ Measure\ Err}

\end{DoxyCode}

\item \doxylink{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}{LOG\+\_\+\+LEVEL} \texorpdfstring{$>$}{>}= 2 -\/ выводится время, TAG, имя файла и номер строки 
\begin{DoxyCode}{0}
\DoxyCodeLine{[123]\ [ADC]\ (../Core/Src/adc.c:75)\ Measure\ Done}
\DoxyCodeLine{[456]\ [ADC]\ (../Core/Src/adc.c:80)\ Measure\ Err}

\end{DoxyCode}
 
\end{DoxyItemize}

Definition at line \mbox{\hyperlink{trace_8h_source_l00106}{106}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}.

\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_ga9c853b02c22f26023c34d1d404b6d653}\index{Serial trace defines@{Serial trace defines}!local\_time@{local\_time}}
\index{local\_time@{local\_time}!Serial trace defines@{Serial trace defines}}
\doxysubsubsubsubsubsection{\texorpdfstring{local\_time}{local\_time}}
{\footnotesize\ttfamily \label{group___t_r_a_c_e___s_e_r_i_a_l_ga9c853b02c22f26023c34d1d404b6d653} 
\#define local\+\_\+time(\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{HAL\_GetTick()}

\end{DoxyCode}


Локальное время 



Definition at line \mbox{\hyperlink{trace_8h_source_l00097}{97}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}.

\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}\index{Serial trace defines@{Serial trace defines}!LOG\_LEVEL@{LOG\_LEVEL}}
\index{LOG\_LEVEL@{LOG\_LEVEL}!Serial trace defines@{Serial trace defines}}
\doxysubsubsubsubsubsection{\texorpdfstring{LOG\_LEVEL}{LOG\_LEVEL}}
{\footnotesize\ttfamily \label{group___t_r_a_c_e___s_e_r_i_a_l_ga0b87e0d3bf5853bcbb0b66a7c48fdc05} 
\#define LOG\+\_\+\+LEVEL~1}



Уровень логирования (по умолчанию == 1) 



Definition at line \mbox{\hyperlink{trace_8h_source_l00100}{100}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}.

