Files
UKSI_TEST/AllLibs/Modbus/Doc/html/rs__message_8h_source.html
2025-12-16 17:57:59 +03:00

495 lines
94 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Modbus: E:/.WORK/STM32/Diod_Test/diode_tester/Core/Modbus/Inc/rs_message.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Modbus<span id="projectnumber">&#160;0.3</span>
</div>
<div id="projectbrief">Библиотека Modbus для STM</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('rs__message_8h_source.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">rs_message.h</div></div>
</div><!--header-->
<div class="contents">
<a href="rs__message_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/**</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">*******************************************************************************</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* @file rs_message.h</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Библиотека обмена сообщениями по RS-интерфейсу</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*******************************************************************************</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">@defgroup RS_TOOLS RS Tools</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">@brief Всякое для работы по UART/RS</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">@{</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">*******************************************************************************</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">* @details</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">Универсальная библиотека для работы с последовательными протоколами (Modbus, Custom)</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">через UART в режиме прерываний с поддержкой таймаутов.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"></span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">@section posibility Основные возможности:</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">- Прием/передача в прерываниях</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">- Обработка IDLE линии для определения конца фрейма</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">- Таймауты приема через TIM</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">- Гибкая настройка размера сообщений</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"></span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">@section usage Использование:</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">1. Определить структуру сообщения и размеры буфера</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">2. Реализовать weak-функции обработки сообщений</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">3. Добавить вызовы RS_UART_Handler/RS_TIM_Handler в прерывания</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">4. Инициализировать через RS_Init() и запустить прием RS_Receive_IT()</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"></span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">@section features Особенности:</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">- Буфер: RS_Buffer[MSG_SIZE_MAX] Общий для приема/передачи</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">- Состояния: отслеживается через флаги в RS_HandleTypeDef</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">- Таймауты: контролируют максимальное время ожидания фрейма</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">******************************************************************************/</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#ifndef __RS_LIB_H_</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#define __RS_LIB_H_</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &quot;<a class="code" href="modbus__core_8h.html">modbus_core.h</a>&quot;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"></span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">////////////////////////////---DEFINES---////////////////////////////</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">/* Check that all defines required by RS are defined */</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor">#ifndef MSG_SIZE_MAX</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor">#error Define MSG_SIZE_MAX (Maximum size of message). This is necessary to create buffer for UART.</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"></span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/**</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment"> * @cond Заглушки и внутренний недокументированный стаф</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"> */</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/* Clear message-uart buffer */</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#define RS_Clear_Buff(_buff_) for(int i=0; i&lt;MSG_SIZE_MAX;i++) _buff_[i] = NULL</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">/* Set/Reset flags */</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor">#define RS_Set_Free(_hRS_) _hRS_-&gt;f.RS_Busy = 0</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#define RS_Set_Busy(_hRS_) _hRS_-&gt;f.RS_Busy = 1</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor">#define RS_Set_RX_Flags(_hRS_) _hRS_-&gt;f.RX_Busy = 1; _hRS_-&gt;f.RX_Done = 0;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor">#define RS_Set_RX_Active_Flags(_hRS_) _hRS_-&gt;f.RX_Ongoing = 1</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor">#define RS_Set_TX_Flags(_hRS_) _hRS_-&gt;f.TX_Busy = 1; _hRS_-&gt;f.TX_Done = 0</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor">#define RS_Reset_RX_Active_Flags(_hRS_) _hRS_-&gt;f.RX_Ongoing = 0; _hRS_-&gt;f.RX_Continue = 0;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="preprocessor">#define RS_Reset_RX_Flags(_hRS_) RS_Reset_RX_Active_Flags(_hRS_); _hRS_-&gt;f.RX_Busy = 0; _hRS_-&gt;f.RX_Done = 0;</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#define RS_Reset_TX_Flags(_hRS_) _hRS_-&gt;f.TX_Busy = 0; _hRS_-&gt;f.TX_Done = 0</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#define RS_Set_RX_End_Flag(_hRS_) _hRS_-&gt;f.RX_Done = 1;</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#define RS_Set_TX_End_Flag(_hRS_) _hRS_-&gt;f.TX_Done = 1</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#define RS_Set_RX_End(_hRS_) RS_Reset_RX_Flags(_hRS_); RS_Set_RX_End_Flag(_hRS_)</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#define RS_Set_TX_End(_hRS_) RS_Reset_TX_Flags(_hRS_); RS_Set_TX_End_Flag(_hRS_)</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment">/* Clear all RS stuff */</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="preprocessor">#define RS_Clear_All(_hRS_) RS_Clear_Buff(_hRS_-&gt;pBufferPtr); RS_Reset_RX_Flags(_hRS_); RS_Reset_TX_Flags(_hRS_);</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment">//#define MB_Is_RX_Busy(_hRS_) ((_hRS_-&gt;huart-&gt;gState&amp;HAL_USART_STATE_BUSY_RX) == HAL_USART_STATE_BUSY_RX)</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment">//#define MB_Is_TX_Busy(_hRS_) ((_hRS_-&gt;huart-&gt;gState&amp;HAL_USART_STATE_BUSY_RX) == HAL_USART_STATE_BUSY_TX)</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#define RS_Is_RX_Busy(_hRS_) (_hRS_-&gt;f.RX_Busy == 1)</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="preprocessor">#define RS_Is_TX_Busy(_hRS_) (_hRS_-&gt;f.TX_Busy == 1)</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor">#ifndef RS_USER_VARS_NUMB</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="preprocessor">#define RS_USER_VARS_NUMB 0</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="preprocessor">#ifndef local_time</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#define local_time() uwTick</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="preprocessor">#endif</span><span class="comment"></span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment">/** @endcond */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"></span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment">/**</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> * @addtogroup RS_DEBUG Tools for debug RS/UART/TIM</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> * @ingroup RS_TOOLS</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> * @brief Дефайны для отладки периферии</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> * @{</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> */</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#ifndef RS_USER_VARS_NUMB</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga00f6ba164717bd919fa6e9b25e1bbc21"> 97</a></span><span class="preprocessor">#define RS_USER_VARS_NUMB 0 </span><span class="comment">///&lt; Количество переменных в @ref TrackerTypeDef</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"></span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment">/** </span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * @brief Тип структуры для счетчиков-переменных</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> * @param num_user_vars Есть возмоность добавления num_user_vars количества пользовательскиъх переменных</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> */</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga50ccb119acf302969b7fdcb58f2130e4"> 104</a></span><span class="preprocessor">#define TrackerTypeDef(num_user_vars) void *</span><span class="comment"></span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment">/** @brief Инкрементировать переменную - успешных событий */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga23de0006aa08984cfeddb6aa5e512fa1"> 106</a></span><span class="preprocessor">#define TrackerCnt_Ok(_cntstruct_)</span><span class="comment"></span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment">/** @brief Инкрементировать переменную - ошибок */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga49af29ab3927cad105c1d2b018a767e9"> 108</a></span><span class="preprocessor">#define TrackerCnt_Err(_cntstruct_)</span><span class="comment"></span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment">/** @brief Инкрементировать переменную - предупреждений */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga8017fb05a56a1b667244f1f786fa9c57"> 110</a></span><span class="preprocessor">#define TrackerCnt_Warn(_cntstruct_)</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="preprocessor">#ifndef printf_rs</span><span class="comment"></span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment">/** @brief Printf обычных событий RS/UART/TIM */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga30a03e8d8912be85a203c829b581f999"> 116</a></span><span class="preprocessor">#define printf_rs(...)</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="preprocessor">#ifndef printf_rs_err</span><span class="comment"></span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment">/** @brief Printf ошибок RS/UART/TIM */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga830a5ed90667bf50ab8c409dcadb2a39"> 121</a></span><span class="preprocessor">#define printf_rs_err(...)</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="preprocessor">#ifndef RS_TIM_Handler_ENTER</span><span class="comment"></span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment">/** @brief Действия при заходе в прерывания таймера */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#gab9d308969f924234bc879a93ffb80473"> 127</a></span><span class="preprocessor">#define RS_TIM_Handler_ENTER() </span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="preprocessor">#ifndef RS_TIM_Handler_EXIT</span><span class="comment"></span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">/** @brief Действия при выходе из прерывания таймера */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#gaa026e9bf8672373cfe265f96ea0f6061"> 131</a></span><span class="preprocessor">#define RS_TIM_Handler_EXIT() </span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="preprocessor">#ifndef RS_UART_Handler_ENTER</span><span class="comment"></span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment">/** @brief Действия при заходе в прерывания UART */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#ga8c401e4d5d440001c1d879984107bb79"> 136</a></span><span class="preprocessor">#define RS_UART_Handler_ENTER() </span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="preprocessor">#ifndef RS_UART_Handler_EXIT</span><span class="comment"></span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment">/** @brief Действия при выходе из прерывания UART */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="group___r_s___d_e_b_u_g.html#gade69fd26928788dd6f0278fcd15885ff"> 140</a></span><span class="preprocessor">#define RS_UART_Handler_EXIT() </span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="preprocessor">#endif</span><span class="comment"></span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment">/** RS_TOOLS</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment">// направление передачи rs485</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="preprocessor">#ifndef RS_EnableReceive</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#gae0f359f0af89adf45bac275a3f5ee34d"> 150</a></span><span class="preprocessor">#define RS_EnableReceive() </span><span class="comment">///&lt; Функция изменения направления передачи на ПРИЕМ для RS-485</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="preprocessor">#ifndef RS_EnableTransmit</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#gaeddade966945ed376bb152151b493d6f"> 153</a></span><span class="preprocessor">#define RS_EnableTransmit() </span><span class="comment">///&lt; Функция изменения направления передачи на ПЕРЕДАЧУ для RS-485</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="preprocessor">#endif</span><span class="comment"></span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment">////////////////////////////---DEFINES---////////////////////////////</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="comment"></span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment">//------------------ENUMERATIONS--------------------</span><span class="comment"></span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment">/** @brief Enums for respond CMD about RS status */</span></div>
<div class="foldopen" id="foldopen00163" data-start="{" data-end="};">
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289"> 163</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span> <span class="comment">// RS_StatusTypeDef</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span>{</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="comment">/* IN-CODE STATUS (start from 0x01, and goes up)*/</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">/*0x01*/</span> RS_OK = 0x01,</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="comment">/*0x02*/</span> RS_ERR, </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="comment">/*0x03*/</span> RS_ABORTED, </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="comment">/*0x04*/</span> RS_BUSY, </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="comment">/*0x05*/</span> RS_SKIP, </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="comment">/*0x06*/</span> RS_TIMEOUT, </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="comment">/*0x07*/</span> RS_COLLECT_MSG_ERR,</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="comment">/*0x08*/</span> RS_PARSE_MSG_ERR,</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// reserved values</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="comment">// /*0x00*/ RS_UNKNOWN_ERR = 0x00, ///&lt; reserved for case, if no one error founded (nothing changed response from zero)</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span>}<a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a>;</div>
</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ga9560ee688d4bcdd90a47c110be4ecf92"> 181</a></span><span class="preprocessor">#define RS_MASTER_MODE_START 0x3 </span><span class="comment">///&lt; Начало режимов мастера (до него - режим слейв)</span><span class="comment"></span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="comment">/** @brief Enums for RS Modes */</span><span class="preprocessor"></span></div>
<div class="foldopen" id="foldopen00183" data-start="{" data-end="};">
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ga13e1c056947b06c7dc29b90d22f683a7"> 183</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span> <span class="comment">// RS_ModeTypeDef</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span>{</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc"> 185</a></span> <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc">RS_SLAVE_ALWAYS_WAIT</a> = 0x01, <span class="comment">///&lt; Слейв в постоянном ожидании</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7ad118e897a520ddc9c77a905684079550"> 186</a></span> <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7ad118e897a520ddc9c77a905684079550">RS_RESERVED</a> = 0x02, <span class="comment">///&lt; резерв</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7a15953c59b7f547b318edab14070873c5"> 187</a></span> <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7a15953c59b7f547b318edab14070873c5">RS_MASTER_REQUEST</a> = 0x03, <span class="comment">///&lt; Мастер с ручным запросом</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="comment">//RS_MASTER_POLLING = 0x04, ///&lt; Мастер с опросом в фоновом режиме</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span>}<a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga13e1c056947b06c7dc29b90d22f683a7">RS_ModeTypeDef</a>;</div>
</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="comment"></span> </div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span><span class="comment">/** @brief Enums for Abort modes */</span></div>
<div class="foldopen" id="foldopen00192" data-start="{" data-end="};">
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#gab7c55bd8bb15b0eecc8c525019d4a1cc"> 192</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span> <span class="comment">// RS_AbortTypeDef</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span>{</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca95c6ce0fee466ba98e43213d001ecc16"> 194</a></span> <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca95c6ce0fee466ba98e43213d001ecc16">ABORT_TX</a> = 0x01, <span class="comment">///&lt; Отменить передачу</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1ccaf0519a0ddda6fff97dd61ce0f3320df9"> 195</a></span> <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1ccaf0519a0ddda6fff97dd61ce0f3320df9">ABORT_RX</a> = 0x02, <span class="comment">///&lt; Отменить прием</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1ccac5554f0ed84242010a53eb518834d8e8"> 196</a></span> <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1ccac5554f0ed84242010a53eb518834d8e8">ABORT_RX_TX</a> = 0x03, <span class="comment">///&lt; Отменить прием и передачу</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca5699efe0ab3cdfd4f6ef175ecb809306"> 197</a></span> <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca5699efe0ab3cdfd4f6ef175ecb809306">ABORT_RS</a> = 0x04, <span class="comment">///&lt; Отменить любую работу UART в целом</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span>}<a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#gab7c55bd8bb15b0eecc8c525019d4a1cc">RS_AbortTypeDef</a>;</div>
</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="comment">//-----------STRUCTURE FOR HANDLE RS------------</span><span class="comment"></span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="comment">/** @brief Struct for flags RS */</span></div>
<div class="foldopen" id="foldopen00202" data-start="{" data-end="};">
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html"> 202</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span>{</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a9371c9de732e4669b16cfdc69f4aaca9"> 204</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a9371c9de732e4669b16cfdc69f4aaca9">RS_Busy</a>:1; <span class="comment">///&lt; 1 - RS занят, 0 - RS свободен</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#adfc04070a08e90f514072fff20efc744"> 205</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#adfc04070a08e90f514072fff20efc744">RX_Ongoing</a>:1; <span class="comment">///&lt; 1 - Прием данных в активном состоянии, 0 - Ожидаем начало приема данных</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a15cc785cd0a154ab681720eaaf7cd752"> 207</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a15cc785cd0a154ab681720eaaf7cd752">RX_Busy</a>:1; <span class="comment">///&lt; 1 - Режим приема активен, 0 - Прием не активен</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a8bbeaa5f75f0b028bfa4038486a4d683"> 208</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a8bbeaa5f75f0b028bfa4038486a4d683">TX_Busy</a>:1; <span class="comment">///&lt; 1 - Режим передачи активен, 0 - Прием не активен </span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a2af603f95b5a86c881370fad44fba9fe"> 210</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a2af603f95b5a86c881370fad44fba9fe">RX_Done</a>:1; <span class="comment">///&lt; 1 - Прием закончен, 0 - Прием еще в процессе или не инициализирован</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a8a158c34723d093c7922c014e99739f4"> 211</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a8a158c34723d093c7922c014e99739f4">TX_Done</a>:1; <span class="comment">///&lt; 1 - Передача закончена, 0 - Передача еще в процессе или не инициализирована </span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// Выставление следующие флагов определяет пользователь</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a1513dc1265334c20a82b55b1090024c8"> 214</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a1513dc1265334c20a82b55b1090024c8">RX_Continue</a>:1; <span class="comment">///&lt; 0 - Продолжить принимать, 0 - Начать прием сначала</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f"> 215</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a>:1; <span class="comment">///&lt; 1 - Обработка запроса успешна, 0 - Обработка запроса в процессе или ошибка</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41"> 216</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">EchoResponse</a>:1; <span class="comment">///&lt; 1 - Ответить эхом, 0 - Ответить своим сообщением</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a63ea1ac11725b29af72afb2942766633"> 217</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a63ea1ac11725b29af72afb2942766633">DeferredResponse</a>:1; <span class="comment">///&lt; 1 - Не начинать передачу в IT, 0 - Ответить в прерывании</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814"> 218</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814">DataUpdated</a>:1; <span class="comment">///&lt; 1 - Данные были обновлены</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span>}<a class="code hl_struct" href="struct_r_s___flags_type_def.html">RS_FlagsTypeDef</a>;</div>
</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"></span> </div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment">/** </span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> * @brief Handle for RS communication.</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment"> * @note Prefixes: h - handle, s - settings, f - flag</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00227" data-start="{" data-end="};">
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html"> 227</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><span class="comment">// RS_HandleTypeDef</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span>{ </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="comment">/* MESSAGE */</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942"> 230</a></span> uint8_t <a class="code hl_variable" href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">ID</a>; <span class="comment">///&lt; ID хендла</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4"> 231</a></span> <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>; <span class="comment">///&lt; Указатель на структуру протокола</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a1bc8d1ccb57c20cad4f70a04f751a67a"> 232</a></span> uint8_t *<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a1bc8d1ccb57c20cad4f70a04f751a67a">pBufferPtr</a>; <span class="comment">///&lt; Указатеь на буфер UART</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d"> 233</a></span> int32_t <a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a>; <span class="comment">///&lt; size of whole message, not only data</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="comment">/* HANDLERS and SETTINGS */</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#ade93e3a680f5fbc5275f58e20227198b"> 236</a></span> UART_HandleTypeDef *<a class="code hl_variable" href="struct_r_s___handle_type_def.html#ade93e3a680f5fbc5275f58e20227198b">huart</a>; <span class="comment">///&lt; Хендл UART</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#aef8875f7628f280ed88f74eb762e0d99"> 237</a></span> TIM_HandleTypeDef *<a class="code hl_variable" href="struct_r_s___handle_type_def.html#aef8875f7628f280ed88f74eb762e0d99">htim</a>; <span class="comment">///&lt; Хендл TIM</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194"> 238</a></span> <a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga13e1c056947b06c7dc29b90d22f683a7">RS_ModeTypeDef</a> <a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a>; <span class="comment">///&lt; Настройка: слейв/мастер @ref RS_ModeTypeDef</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#aa6da72b8ad446f76484783ca8af0e565"> 239</a></span> uint16_t <a class="code hl_variable" href="struct_r_s___handle_type_def.html#aa6da72b8ad446f76484783ca8af0e565">sRS_Timeout</a>; <span class="comment">///&lt; Настройка: Таймаут в тиках таймера</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a6e584c7559c702d3382dbb9aa572b71b"> 240</a></span> void (*<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6e584c7559c702d3382dbb9aa572b71b">pCallback</a>)(<span class="keywordtype">void</span>*, <span class="keywordtype">void</span>*); <span class="comment">///&lt; Указатель на коллбек: принят ответ в режиме мастер</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> </div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="comment">/* FLAGS */</span> </div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e"> 243</a></span> <a class="code hl_struct" href="struct_r_s___flags_type_def.html">RS_FlagsTypeDef</a> <a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>; <span class="comment">///&lt; Флаги для контроля приема/передачи</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="comment">/* RS STATUS */</span></div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a3b377cb0eabf384a7e715fb030218290"> 246</a></span> uint32_t <a class="code hl_variable" href="struct_r_s___handle_type_def.html#a3b377cb0eabf384a7e715fb030218290">lastPacketTick</a>; <span class="comment">///&lt; Время последнего принятого пакета</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"><a class="line" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9"> 247</a></span> <a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a>; <span class="comment">///&lt; Статус RS</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> </div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga50ccb119acf302969b7fdcb58f2130e4">TrackerTypeDef</a>(<a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga00f6ba164717bd919fa6e9b25e1bbc21">RS_USER_VARS_NUMB</a>) rs_err;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span>}<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a>;</div>
</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="keyword">extern</span> <a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> <a class="code hl_variable" href="group___r_s___t_o_o_l_s.html#gadaef5cb7e494d0fd139199f5b6cbeb86">hmodbus1</a>;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"></span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment">///////////////////////---STRUCTURES &amp; ENUMS---//////////////////////</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="comment"></span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="comment">/////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="comment">//----------------FUNCTIONS FOR PROCESSING MESSAGE-------------------</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment">/*--------------------Defined by users purposes--------------------*/</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment">/* Пользовательская функция для ответа на запрос по UART */</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga8b7bcc84cb8192a58fe87b662fbd9690">RS_Response</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> </div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="comment">/* Пользовательская функция для обработки принятого ответа по UART */</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span>__weak <a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> RS_Response_Callback(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg);</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> </div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="comment">/* Пользовательская функция для сбора сообщения в буфер UART */</span></div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1cd98c55f6f359e3ab93d0f9cf912ab5">RS_Collect_Message</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg, uint8_t *msg_uart_buff);</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="comment">/* Пользовательская функция для парса сообщения из буфера UART */</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga3500b3fa91d05a94cf8da5cc5ce338f5">RS_Parse_Message</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg, uint8_t *msg_uart_buff);</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="comment">//-------------------------GENERAL FUNCTIONS-------------------------</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="comment">/*-----------------Should be called from main code-----------------*/</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="comment">/* Начать прием по прерываниям */</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1b59697f4b7fad81f9d5fd9fffebac2f">RS_Receive_IT</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg);</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="comment">/* Начать передачу по прерываниям */</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga2e69a97a8b6e0b5855116d88c0e17cb9">RS_Transmit_IT</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg);</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span><span class="comment">/* Инициалазация структуры @ref RS_HandleTypeDef */</span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gaa261bb0d37e7f18f04fb4353aa0f5c45">RS_Init</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim, uint8_t *pRS_BufferPtr);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span><span class="comment">/* Отменить прием/передачу RS/UART */</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1ffe808b3640f253b1783295d6990962">RS_Abort</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#gab7c55bd8bb15b0eecc8c525019d4a1cc">RS_AbortTypeDef</a> AbortMode);</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span><span class="comment">//-------------------------GENERAL FUNCTIONS-------------------------</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> </div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span><span class="comment">//--------------------CALLBACK/HANDLER FUNCTIONS---------------------</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span><span class="comment">/* Обработчик для начала приема */</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gab43a3b93c85adee5e3c561922d7ea2ef">RS_Handle_Receive_Start</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg);</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span><span class="comment">/* Обработчик для начала передачи */</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga330f6cfcdaab1f239054c0d91be3c5bc">RS_Handle_Transmit_Start</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *RS_msg);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="comment">/* UART TX Callback: коллбек после окончания передачи */</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga7180b913ba795c07637680982d7f45ac">RS_UART_TxCpltCallback</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS);</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="comment">/* Обработчик прерывания UART */</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gab27567456df0329130c7fe4fc43c6ee1">RS_UART_Handler</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS);</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span><span class="comment">/* Обработчик прерывания TIM */</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga2d356b2a0b4af43460bb2cacb81779ce">RS_TIM_Handler</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS);</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="comment">/* Запуск таймаута приема. */</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gac3a7bbc060a4250c160d51f0a0ca6cf8">RS_Timeout_Start</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS);</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="comment">/* Остановка таймаута приема. */</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1de0a597d043b64d0a19bc393cc1b3fd">RS_Timeout_Stop</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS);</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span><span class="comment">/* Обновление (сброс) таймаута приема. */</span></div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gad3d2e8fb9c2879e1ddb967cff6124521">RS_Timeout_Update</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hRS);</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span><span class="comment">//--------------------CALLBACK/HANDLER FUNCTIONS---------------------</span><span class="comment"></span></div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span><span class="comment">///////////////////////////---FUNCTIONS---///////////////////////////</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span><span class="comment"></span> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="comment">/** RS_TOOLS</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span><span class="comment"> */</span></div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="preprocessor">#endif </span><span class="comment">// __RS_LIB_H_</span></div>
<div class="ttc" id="agroup___r_s___d_e_b_u_g_html_ga00f6ba164717bd919fa6e9b25e1bbc21"><div class="ttname"><a href="group___r_s___d_e_b_u_g.html#ga00f6ba164717bd919fa6e9b25e1bbc21">RS_USER_VARS_NUMB</a></div><div class="ttdeci">#define RS_USER_VARS_NUMB</div><div class="ttdoc">Количество переменных в TrackerTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="#l00097">rs_message.h:97</a></div></div>
<div class="ttc" id="agroup___r_s___d_e_b_u_g_html_ga50ccb119acf302969b7fdcb58f2130e4"><div class="ttname"><a href="group___r_s___d_e_b_u_g.html#ga50ccb119acf302969b7fdcb58f2130e4">TrackerTypeDef</a></div><div class="ttdeci">#define TrackerTypeDef(num_user_vars)</div><div class="ttdoc">Тип структуры для счетчиков-переменных</div><div class="ttdef"><b>Definition</b> <a href="#l00104">rs_message.h:104</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga13e1c056947b06c7dc29b90d22f683a7"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga13e1c056947b06c7dc29b90d22f683a7">RS_ModeTypeDef</a></div><div class="ttdeci">RS_ModeTypeDef</div><div class="ttdoc">Enums for RS Modes.</div><div class="ttdef"><b>Definition</b> <a href="#l00183">rs_message.h:184</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga1b59697f4b7fad81f9d5fd9fffebac2f"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga1b59697f4b7fad81f9d5fd9fffebac2f">RS_Receive_IT</a></div><div class="ttdeci">RS_StatusTypeDef RS_Receive_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Начать прием по прерываниям.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00043">rs_message.c:43</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga1cd98c55f6f359e3ab93d0f9cf912ab5"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga1cd98c55f6f359e3ab93d0f9cf912ab5">RS_Collect_Message</a></div><div class="ttdeci">RS_StatusTypeDef RS_Collect_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)</div><div class="ttdoc">Пользовательская функция для сбора сообщения в буфер UART.</div><div class="ttdef"><b>Definition</b> <a href="modbus_8c_source.html#l00193">modbus.c:193</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga1de0a597d043b64d0a19bc393cc1b3fd"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga1de0a597d043b64d0a19bc393cc1b3fd">RS_Timeout_Stop</a></div><div class="ttdeci">RS_StatusTypeDef RS_Timeout_Stop(RS_HandleTypeDef *hRS)</div><div class="ttdoc">Остановка таймаута приема.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00491">rs_message.c:491</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga1ffe808b3640f253b1783295d6990962"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga1ffe808b3640f253b1783295d6990962">RS_Abort</a></div><div class="ttdeci">RS_StatusTypeDef RS_Abort(RS_HandleTypeDef *hRS, RS_AbortTypeDef AbortMode)</div><div class="ttdoc">Отменить прием/передачу RS/UART.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00193">rs_message.c:193</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga2d356b2a0b4af43460bb2cacb81779ce"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga2d356b2a0b4af43460bb2cacb81779ce">RS_TIM_Handler</a></div><div class="ttdeci">void RS_TIM_Handler(RS_HandleTypeDef *hRS)</div><div class="ttdoc">Обработчик прерывания TIM.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00433">rs_message.c:433</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga2e69a97a8b6e0b5855116d88c0e17cb9"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga2e69a97a8b6e0b5855116d88c0e17cb9">RS_Transmit_IT</a></div><div class="ttdeci">RS_StatusTypeDef RS_Transmit_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Начать передачу по прерываниям.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00091">rs_message.c:91</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga330f6cfcdaab1f239054c0d91be3c5bc"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga330f6cfcdaab1f239054c0d91be3c5bc">RS_Handle_Transmit_Start</a></div><div class="ttdeci">RS_StatusTypeDef RS_Handle_Transmit_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Обработчик для начала передачи.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00269">rs_message.c:269</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga3500b3fa91d05a94cf8da5cc5ce338f5"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga3500b3fa91d05a94cf8da5cc5ce338f5">RS_Parse_Message</a></div><div class="ttdeci">RS_StatusTypeDef RS_Parse_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)</div><div class="ttdoc">Пользовательская функция для парса сообщения из буфера UART.</div><div class="ttdef"><b>Definition</b> <a href="modbus_8c_source.html#l00205">modbus.c:205</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga7180b913ba795c07637680982d7f45ac"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga7180b913ba795c07637680982d7f45ac">RS_UART_TxCpltCallback</a></div><div class="ttdeci">RS_StatusTypeDef RS_UART_TxCpltCallback(RS_HandleTypeDef *hRS)</div><div class="ttdoc">UART TX Callback: коллбек после окончания передачи.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00300">rs_message.c:300</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga727154b368397b4796aa892de12a2289"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a></div><div class="ttdeci">RS_StatusTypeDef</div><div class="ttdoc">Enums for respond CMD about RS status.</div><div class="ttdef"><b>Definition</b> <a href="#l00163">rs_message.h:164</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga8b7bcc84cb8192a58fe87b662fbd9690"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga8b7bcc84cb8192a58fe87b662fbd9690">RS_Response</a></div><div class="ttdeci">RS_StatusTypeDef RS_Response(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Пользовательская функция для ответа на запрос по UART.</div><div class="ttdef"><b>Definition</b> <a href="modbus_8c_source.html#l00184">modbus.c:184</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gaa261bb0d37e7f18f04fb4353aa0f5c45"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gaa261bb0d37e7f18f04fb4353aa0f5c45">RS_Init</a></div><div class="ttdeci">RS_StatusTypeDef RS_Init(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim, uint8_t *pRS_BufferPtr)</div><div class="ttdoc">Инициалазация структуры RS_HandleTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00156">rs_message.c:156</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gab27567456df0329130c7fe4fc43c6ee1"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gab27567456df0329130c7fe4fc43c6ee1">RS_UART_Handler</a></div><div class="ttdeci">void RS_UART_Handler(RS_HandleTypeDef *hRS)</div><div class="ttdoc">Обработчик прерывания UART.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00320">rs_message.c:320</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gab43a3b93c85adee5e3c561922d7ea2ef"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gab43a3b93c85adee5e3c561922d7ea2ef">RS_Handle_Receive_Start</a></div><div class="ttdeci">RS_StatusTypeDef RS_Handle_Receive_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Обработчик для начала приема.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00237">rs_message.c:237</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gab7c55bd8bb15b0eecc8c525019d4a1cc"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gab7c55bd8bb15b0eecc8c525019d4a1cc">RS_AbortTypeDef</a></div><div class="ttdeci">RS_AbortTypeDef</div><div class="ttdoc">Enums for Abort modes.</div><div class="ttdef"><b>Definition</b> <a href="#l00192">rs_message.h:193</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gac3a7bbc060a4250c160d51f0a0ca6cf8"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gac3a7bbc060a4250c160d51f0a0ca6cf8">RS_Timeout_Start</a></div><div class="ttdeci">RS_StatusTypeDef RS_Timeout_Start(RS_HandleTypeDef *hRS)</div><div class="ttdoc">Запуск таймаута приема.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00471">rs_message.c:471</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gad3d2e8fb9c2879e1ddb967cff6124521"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gad3d2e8fb9c2879e1ddb967cff6124521">RS_Timeout_Update</a></div><div class="ttdeci">RS_StatusTypeDef RS_Timeout_Update(RS_HandleTypeDef *hRS)</div><div class="ttdoc">Обновление (сброс) таймаута приема.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00509">rs_message.c:509</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gadaef5cb7e494d0fd139199f5b6cbeb86"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gadaef5cb7e494d0fd139199f5b6cbeb86">hmodbus1</a></div><div class="ttdeci">RS_HandleTypeDef hmodbus1</div><div class="ttdoc">Default Handle for Modbus.</div><div class="ttdef"><b>Definition</b> <a href="modbus_8c_source.html#l00024">modbus.c:24</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gga13e1c056947b06c7dc29b90d22f683a7a15953c59b7f547b318edab14070873c5"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7a15953c59b7f547b318edab14070873c5">RS_MASTER_REQUEST</a></div><div class="ttdeci">@ RS_MASTER_REQUEST</div><div class="ttdoc">Мастер с ручным запросом</div><div class="ttdef"><b>Definition</b> <a href="#l00187">rs_message.h:187</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gga13e1c056947b06c7dc29b90d22f683a7ad118e897a520ddc9c77a905684079550"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7ad118e897a520ddc9c77a905684079550">RS_RESERVED</a></div><div class="ttdeci">@ RS_RESERVED</div><div class="ttdoc">резерв</div><div class="ttdef"><b>Definition</b> <a href="#l00186">rs_message.h:186</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc">RS_SLAVE_ALWAYS_WAIT</a></div><div class="ttdeci">@ RS_SLAVE_ALWAYS_WAIT</div><div class="ttdoc">Слейв в постоянном ожидании</div><div class="ttdef"><b>Definition</b> <a href="#l00185">rs_message.h:185</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ggab7c55bd8bb15b0eecc8c525019d4a1cca5699efe0ab3cdfd4f6ef175ecb809306"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca5699efe0ab3cdfd4f6ef175ecb809306">ABORT_RS</a></div><div class="ttdeci">@ ABORT_RS</div><div class="ttdoc">Отменить любую работу UART в целом</div><div class="ttdef"><b>Definition</b> <a href="#l00197">rs_message.h:197</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ggab7c55bd8bb15b0eecc8c525019d4a1cca95c6ce0fee466ba98e43213d001ecc16"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca95c6ce0fee466ba98e43213d001ecc16">ABORT_TX</a></div><div class="ttdeci">@ ABORT_TX</div><div class="ttdoc">Отменить передачу</div><div class="ttdef"><b>Definition</b> <a href="#l00194">rs_message.h:194</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ggab7c55bd8bb15b0eecc8c525019d4a1ccac5554f0ed84242010a53eb518834d8e8"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1ccac5554f0ed84242010a53eb518834d8e8">ABORT_RX_TX</a></div><div class="ttdeci">@ ABORT_RX_TX</div><div class="ttdoc">Отменить прием и передачу</div><div class="ttdef"><b>Definition</b> <a href="#l00196">rs_message.h:196</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ggab7c55bd8bb15b0eecc8c525019d4a1ccaf0519a0ddda6fff97dd61ce0f3320df9"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1ccaf0519a0ddda6fff97dd61ce0f3320df9">ABORT_RX</a></div><div class="ttdeci">@ ABORT_RX</div><div class="ttdoc">Отменить прием</div><div class="ttdef"><b>Definition</b> <a href="#l00195">rs_message.h:195</a></div></div>
<div class="ttc" id="amodbus__core_8h_html"><div class="ttname"><a href="modbus__core_8h.html">modbus_core.h</a></div><div class="ttdoc">Ядро Modbus протокола - определения и структуры</div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html"><div class="ttname"><a href="struct_r_s___flags_type_def.html">RS_FlagsTypeDef</a></div><div class="ttdoc">Struct for flags RS.</div><div class="ttdef"><b>Definition</b> <a href="#l00202">rs_message.h:203</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a1513dc1265334c20a82b55b1090024c8"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a1513dc1265334c20a82b55b1090024c8">RS_FlagsTypeDef::RX_Continue</a></div><div class="ttdeci">unsigned RX_Continue</div><div class="ttdoc">0 - Продолжить принимать, 0 - Начать прием сначала</div><div class="ttdef"><b>Definition</b> <a href="#l00214">rs_message.h:214</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a15cc785cd0a154ab681720eaaf7cd752"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a15cc785cd0a154ab681720eaaf7cd752">RS_FlagsTypeDef::RX_Busy</a></div><div class="ttdeci">unsigned RX_Busy</div><div class="ttdoc">1 - Режим приема активен, 0 - Прием не активен</div><div class="ttdef"><b>Definition</b> <a href="#l00207">rs_message.h:207</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a2af603f95b5a86c881370fad44fba9fe"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a2af603f95b5a86c881370fad44fba9fe">RS_FlagsTypeDef::RX_Done</a></div><div class="ttdeci">unsigned RX_Done</div><div class="ttdoc">1 - Прием закончен, 0 - Прием еще в процессе или не инициализирован</div><div class="ttdef"><b>Definition</b> <a href="#l00210">rs_message.h:210</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a4f26eda2d03a726d98fa6623f1abb814"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814">RS_FlagsTypeDef::DataUpdated</a></div><div class="ttdeci">unsigned DataUpdated</div><div class="ttdoc">1 - Данные были обновлены</div><div class="ttdef"><b>Definition</b> <a href="#l00218">rs_message.h:218</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a5f8d7960b41717c6edb84fc7bfc06d41"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">RS_FlagsTypeDef::EchoResponse</a></div><div class="ttdeci">unsigned EchoResponse</div><div class="ttdoc">1 - Ответить эхом, 0 - Ответить своим сообщением</div><div class="ttdef"><b>Definition</b> <a href="#l00216">rs_message.h:216</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a63ea1ac11725b29af72afb2942766633"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a63ea1ac11725b29af72afb2942766633">RS_FlagsTypeDef::DeferredResponse</a></div><div class="ttdeci">unsigned DeferredResponse</div><div class="ttdoc">1 - Не начинать передачу в IT, 0 - Ответить в прерывании</div><div class="ttdef"><b>Definition</b> <a href="#l00217">rs_message.h:217</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a8a158c34723d093c7922c014e99739f4"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a8a158c34723d093c7922c014e99739f4">RS_FlagsTypeDef::TX_Done</a></div><div class="ttdeci">unsigned TX_Done</div><div class="ttdoc">1 - Передача закончена, 0 - Передача еще в процессе или не инициализирована</div><div class="ttdef"><b>Definition</b> <a href="#l00211">rs_message.h:211</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a8bbeaa5f75f0b028bfa4038486a4d683"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a8bbeaa5f75f0b028bfa4038486a4d683">RS_FlagsTypeDef::TX_Busy</a></div><div class="ttdeci">unsigned TX_Busy</div><div class="ttdoc">1 - Режим передачи активен, 0 - Прием не активен</div><div class="ttdef"><b>Definition</b> <a href="#l00208">rs_message.h:208</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a9371c9de732e4669b16cfdc69f4aaca9"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a9371c9de732e4669b16cfdc69f4aaca9">RS_FlagsTypeDef::RS_Busy</a></div><div class="ttdeci">unsigned RS_Busy</div><div class="ttdoc">1 - RS занят, 0 - RS свободен</div><div class="ttdef"><b>Definition</b> <a href="#l00204">rs_message.h:204</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a98c9a17358406818f3017a2997787c3f"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">RS_FlagsTypeDef::MessageHandled</a></div><div class="ttdeci">unsigned MessageHandled</div><div class="ttdoc">1 - Обработка запроса успешна, 0 - Обработка запроса в процессе или ошибка</div><div class="ttdef"><b>Definition</b> <a href="#l00215">rs_message.h:215</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_adfc04070a08e90f514072fff20efc744"><div class="ttname"><a href="struct_r_s___flags_type_def.html#adfc04070a08e90f514072fff20efc744">RS_FlagsTypeDef::RX_Ongoing</a></div><div class="ttdeci">unsigned RX_Ongoing</div><div class="ttdoc">1 - Прием данных в активном состоянии, 0 - Ожидаем начало приема данных</div><div class="ttdef"><b>Definition</b> <a href="#l00205">rs_message.h:205</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html"><div class="ttname"><a href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a></div><div class="ttdoc">Handle for RS communication.</div><div class="ttdef"><b>Definition</b> <a href="#l00227">rs_message.h:228</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a01e2c95a23aa3eed1f002e2329a10942"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">RS_HandleTypeDef::ID</a></div><div class="ttdeci">uint8_t ID</div><div class="ttdoc">ID хендла</div><div class="ttdef"><b>Definition</b> <a href="#l00230">rs_message.h:230</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a1bc8d1ccb57c20cad4f70a04f751a67a"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a1bc8d1ccb57c20cad4f70a04f751a67a">RS_HandleTypeDef::pBufferPtr</a></div><div class="ttdeci">uint8_t * pBufferPtr</div><div class="ttdoc">Указатеь на буфер UART.</div><div class="ttdef"><b>Definition</b> <a href="#l00232">rs_message.h:232</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a3b377cb0eabf384a7e715fb030218290"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a3b377cb0eabf384a7e715fb030218290">RS_HandleTypeDef::lastPacketTick</a></div><div class="ttdeci">uint32_t lastPacketTick</div><div class="ttdoc">Время последнего принятого пакета</div><div class="ttdef"><b>Definition</b> <a href="#l00246">rs_message.h:246</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a495a29011412451e53459f9e1513814d"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_HandleTypeDef::RS_Message_Size</a></div><div class="ttdeci">int32_t RS_Message_Size</div><div class="ttdoc">size of whole message, not only data</div><div class="ttdef"><b>Definition</b> <a href="#l00233">rs_message.h:233</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a6a3f47a1a3476d6e9df997e1dc9da8c4"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">RS_HandleTypeDef::pMessagePtr</a></div><div class="ttdeci">RS_MsgTypeDef * pMessagePtr</div><div class="ttdoc">Указатель на структуру протокола</div><div class="ttdef"><b>Definition</b> <a href="#l00231">rs_message.h:231</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a6e584c7559c702d3382dbb9aa572b71b"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a6e584c7559c702d3382dbb9aa572b71b">RS_HandleTypeDef::pCallback</a></div><div class="ttdeci">void(* pCallback)(void *, void *)</div><div class="ttdoc">Указатель на коллбек: принят ответ в режиме мастер</div><div class="ttdef"><b>Definition</b> <a href="#l00240">rs_message.h:240</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a6fa98c2955d01e07dc59f73d072bb37e"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">RS_HandleTypeDef::f</a></div><div class="ttdeci">RS_FlagsTypeDef f</div><div class="ttdoc">Флаги для контроля приема/передачи</div><div class="ttdef"><b>Definition</b> <a href="#l00243">rs_message.h:243</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a82f0ad79cd234cd26076bfcfbc5c1194"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">RS_HandleTypeDef::sRS_Mode</a></div><div class="ttdeci">RS_ModeTypeDef sRS_Mode</div><div class="ttdoc">Настройка: слейв/мастер RS_ModeTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="#l00238">rs_message.h:238</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a8bbcb263ae7a61790b559bcb55cd9aa9"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_HandleTypeDef::RS_STATUS</a></div><div class="ttdeci">RS_StatusTypeDef RS_STATUS</div><div class="ttdoc">Статус RS.</div><div class="ttdef"><b>Definition</b> <a href="#l00247">rs_message.h:247</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_aa6da72b8ad446f76484783ca8af0e565"><div class="ttname"><a href="struct_r_s___handle_type_def.html#aa6da72b8ad446f76484783ca8af0e565">RS_HandleTypeDef::sRS_Timeout</a></div><div class="ttdeci">uint16_t sRS_Timeout</div><div class="ttdoc">Настройка: Таймаут в тиках таймера</div><div class="ttdef"><b>Definition</b> <a href="#l00239">rs_message.h:239</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_ade93e3a680f5fbc5275f58e20227198b"><div class="ttname"><a href="struct_r_s___handle_type_def.html#ade93e3a680f5fbc5275f58e20227198b">RS_HandleTypeDef::huart</a></div><div class="ttdeci">UART_HandleTypeDef * huart</div><div class="ttdoc">Хендл UART.</div><div class="ttdef"><b>Definition</b> <a href="#l00236">rs_message.h:236</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_aef8875f7628f280ed88f74eb762e0d99"><div class="ttname"><a href="struct_r_s___handle_type_def.html#aef8875f7628f280ed88f74eb762e0d99">RS_HandleTypeDef::htim</a></div><div class="ttdeci">TIM_HandleTypeDef * htim</div><div class="ttdoc">Хендл TIM.</div><div class="ttdef"><b>Definition</b> <a href="#l00237">rs_message.h:237</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html"><div class="ttname"><a href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a></div><div class="ttdoc">Structure for modbus messsage.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00176">modbus_core.h:177</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="dir_f93dfce691d792349f1c14ede440e2e6.html">Inc</a></li><li class="navelem"><a href="rs__message_8h.html">rs_message.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>