\doxysection{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}{/**\ }}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00002}00002\ \textcolor{comment}{**************************************************************************}}
\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\_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}{*\ @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\ "{}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}{/**}}
\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}{/**\ @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}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}\mbox{\hyperlink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}{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}
