matlab_stm_emulate/DOCS/html/mcu__wrapper__conf_8h_source.html

274 lines
40 KiB
HTML
Raw Permalink 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.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>STM MATLAB Simulator: F:/Work/Projects/MATLAB/matlab_stm_emulate/MCU_Wrapper/mcu_wrapper_conf.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.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/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">STM MATLAB Simulator
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<!-- 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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_5bc05bcf5fafad3c8688aee149210d07.html">MCU_Wrapper</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">mcu_wrapper_conf.h</div></div>
</div><!--header-->
<div class="contents">
<a href="mcu__wrapper__conf_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">* @dir ../MCU_Wrapper</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief &lt;b&gt; Папка с исходным кодом оболочки МК. &lt;/b&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">* @details </span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">В этой папке содержаться оболочка(англ. wrapper) для запуска и контроля </span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">эмуляции микроконтроллеров в MATLAB (любого МК, не только STM). </span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">Оболочка представляет собой S-Function - блок в Simulink, который работает </span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">по скомпилированому коду. Компиляция происходит с помощью MSVC-компилятора. </span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">**************************************************************************/</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"></span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">/**</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">* @file mcu_wrapper_conf.h</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">* @brief Заголовочный файл для оболочки МК.</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">**************************************************************************</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">@details</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">Главный заголовочный файл для матлаба. Включает дейфайны для S-Function,</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">- для симуляции &quot;stm32fxxx_matlab_conf.h&quot;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">- для S-Function &quot;simstruc.h&quot;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">- для потоков &lt;process.h&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">**************************************************************************/</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#ifndef _CONTROLLER_H_</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#define _CONTROLLER_H_</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">// Includes</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &quot;<a class="code" href="stm32f4xx__matlab__conf_8h.html">stm32f4xx_matlab_conf.h</a>&quot;</span> <span class="comment">// For stm simulate functions</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#include &quot;simstruc.h&quot;</span> <span class="comment">// For S-Function variables</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include &lt;process.h&gt;</span> <span class="comment">// For threads</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment"></span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">/**</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment"> * @defgroup MCU_WRAPPER MCU Wrapper</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"> * @brief Всякое для оболочки МК</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"></span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">/**</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> * @addtogroup WRAPPER_CONF Wrapper Configuration</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment"> * @ingroup MCU_WRAPPER</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment"> * @brief Параметры конфигурации для оболочки МК</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"> * @details Здесь дефайнами задается параметры оболочки, которые определяют как она будет работать</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"> */</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">// Parametrs of MCU simulator</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga98a12c757c95bd7c8ae75999092af30f"> 47</a></span><span class="preprocessor">#define CREATE_SUSPENDED 0x00000004 </span><span class="comment">///&lt; define from WinBase.h. We dont wanna include &quot;Windows.h&quot; or smth like this, because of HAL there are a lot of redefine errors.</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gafc876c6cc8fa4255636740b201ac1d66"> 49</a></span><span class="preprocessor">#define DEKSTOP_CYCLES_FOR_MCU_APP 0xFFFF </span><span class="comment">///&lt; number of for() cycles after which MCU thread would be suspended </span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga80d9b6ce1525c1148d94c021f0b8c83e"> 50</a></span><span class="preprocessor">#define PORT_WIDTH 16 </span><span class="comment">///&lt; width of one port</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gab59d8303ff443409a05cef11e3e7176e"> 51</a></span><span class="preprocessor">#define PORT_NUMB 3 </span><span class="comment">///&lt; amount of ports</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">// Parameters of S_Function</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gae468832efa6adf5e9a96cabd8f878b47"> 54</a></span><span class="preprocessor">#define NPARAMS 1 </span><span class="comment">///&lt; number of input parametrs (only Ts)</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gac41471250c3d92da182a969e378addfc"> 55</a></span><span class="preprocessor">#define IN_PORT_WIDTH (8) </span><span class="comment">///&lt; width of input ports</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga25be09b98d138ff8c740bece06e1bcc6"> 56</a></span><span class="preprocessor">#define IN_PORT_NUMB 1 </span><span class="comment">///&lt; number of input ports</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gac90b37686b0abfe29835c9632310897a"> 57</a></span><span class="preprocessor">#define OUT_PORT_WIDTH PORT_WIDTH </span><span class="comment">///&lt; width of output ports</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga9fa483e805a6570c4793b1e0ff9719ac"> 58</a></span><span class="preprocessor">#define OUT_PORT_NUMB PORT_NUMB </span><span class="comment">///&lt; number of output ports</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gaaed909ba8fd0e4f7a3c2533836dae5d9"> 59</a></span><span class="preprocessor">#define DISC_STATES_WIDTH PORT_WIDTH*PORT_NUMB </span><span class="comment">///&lt; width of discrete states array</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"></span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">/** WRAPPER_CONF</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> */</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"></span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment">/**</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> * @addtogroup MCU_WRAPPER</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> * @{</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> */</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#gaa8c0374618b33785ccb02f74bcfebc46"> 71</a></span><span class="keyword">typedef</span> <span class="keywordtype">void</span>* <a class="code hl_typedef" href="group___m_c_u___w_r_a_p_p_e_r.html#gaa8c0374618b33785ccb02f74bcfebc46">HANDLE</a>; <span class="comment">///&lt; MCU handle typedef</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"></span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment">/**</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> * @brief MCU handle Structure definition. </span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> * @note Prefixes: h - handle, s - settings, f - flag</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00077" data-start="{" data-end="};">
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="struct_s_i_m_____m_c_u_handle_type_def.html"> 77</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// MCU Thread</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="struct_s_i_m_____m_c_u_handle_type_def.html#af2b1efce882c9bc0926c715c16773afb"> 79</a></span> <a class="code hl_typedef" href="group___m_c_u___w_r_a_p_p_e_r.html#gaa8c0374618b33785ccb02f74bcfebc46">HANDLE</a> <a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#af2b1efce882c9bc0926c715c16773afb">hMCUThread</a>; <span class="comment">///&lt; Хендл для потока МК</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="struct_s_i_m_____m_c_u_handle_type_def.html#a52fe34944579ff4b1b6d3e85fae96546"> 80</a></span> uint32_t <a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#a52fe34944579ff4b1b6d3e85fae96546">idMCUThread</a>; <span class="comment">///&lt; id потока МК (unused)</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// Flags</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="struct_s_i_m_____m_c_u_handle_type_def.html#ad81f091fd8c1ad2908a5dd5967f3322e"> 82</a></span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#ad81f091fd8c1ad2908a5dd5967f3322e">fMCU_Stop</a> : 1; <span class="comment">///&lt; флаг для выхода из потока программы МК</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="struct_s_i_m_____m_c_u_handle_type_def.html#ab19a05224f30fab089c5d5e18fdcca36"> 83</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#ab19a05224f30fab089c5d5e18fdcca36">SIM_Sample_Time</a>; <span class="comment">///&lt; sample time of simulation</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span>}<a class="code hl_struct" href="struct_s_i_m_____m_c_u_handle_type_def.html">SIM__MCUHandleTypeDef</a>;</div>
</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="keyword">extern</span> <a class="code hl_struct" href="struct_s_i_m_____m_c_u_handle_type_def.html">SIM__MCUHandleTypeDef</a> <a class="code hl_variable" href="group___m_c_u___w_r_a_p_p_e_r.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a>; <span class="comment">// extern для видимости переменной во всех файлах</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">//------------------ SIMULINK WHILE DEFINES -----------------//</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment">/* DEFINE TO WHILE WITH SIMULINK WHILE */</span><span class="comment"></span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment">/**</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> * @brief Redefine C while statement with sim_while() macro.</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> * @param _expression_ - expression for while.</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> * @details Это while который будет использоваться в симулинке @ref sim_while для подробностей.</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"> */</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#ga866c2dad3e54488a018e859b3dc6feba"> 96</a></span><span class="preprocessor">#define while(_expression_) sim_while(_expression_) </span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment">/* SIMULINK WHILE */</span><span class="comment"></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"> * @brief While statement for emulate MCU code in Simulink.</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * @param _expression_ - expression for while.</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> * @details Данный while необходим, чтобы в конце симуляции, завершить поток МК:</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> * При выставлении флага окончания симуляции, все while будут пропускаться </span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> * и поток сможет дойти до конца функции main и завершить себя. </span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> */</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#ga1fef2893362ee1f5032b523ff8c7fd9d"> 106</a></span><span class="preprocessor">#define sim_while(_expression_) while((_expression_)&amp;&amp;(hmcu.fMCU_Stop == 0))</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment">/* DEFAULT WHILE */</span><span class="comment"></span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment">/**</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment"> * @brief Default/Native C while statement.</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment"> * @param _expression_ - expression for while.</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="comment"> * @details Данный while - аналог обычного while, без дополнительного функционала.</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment"> */</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#gabaad5b5eb9243ab531775be5eda6ee02"> 114</a></span><span class="preprocessor">#define native_while(_expression_) for(; (_expression_); )</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"> /***************************************************************/</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment">//------------------ SIMULINK WHILE DEFINES -----------------//</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment">//-------------------------------------------------------------//</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment">//-------------------------------------------------------------//</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment">//---------------- SIMULATE FUNCTIONS PROTOTYPES -------------//</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment">/* Step simulation */</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#gad3c4ea41584d0367dfbfb697f5e57456">MCU_Step_Simulation</a>(SimStruct *S, time_T time); </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment">/* MCU peripheral simulation */</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#gaccdef5b45f3d1646f248304e02b00e54">MCU_Periph_Simulation</a>(<span class="keywordtype">void</span>); </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">/* Initialize MCU simulation */</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#ga54429d6d68b1d72ce16bab374e3ffa08">SIM_Initialize_Simulation</a>(<span class="keywordtype">void</span>); </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">/* Deinitialize MCU simulation */</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#ga6f04b162923bada308d9668743425b92">SIM_deInitialize_Simulation</a>(<span class="keywordtype">void</span>); </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment">/* Read inputs S-function */</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#ga15045e0feba8ddf08e20958fd1e36cd5">MCU_readInputs</a>(SimStruct* S);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment">/* Write pre-outputs S-function (out_buff states) */</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#gad6b7bb9233d746d7709276f9ea1914c2">MCU_writeOutputs</a>(SimStruct* S);</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment">/* Write outputs of block of S-Function*/</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#gad38bfad0ee1e186c0663565abb6bc71a"> 143</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#gad38bfad0ee1e186c0663565abb6bc71a">SIM_writeOutput</a>(SimStruct* S);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">//---------------- SIMULATE FUNCTIONS PROTOTYPES -------------//</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment">//-------------------------------------------------------------//</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"></span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment">/** MCU_WRAPPER</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> * @}</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment"> */</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor">#endif </span><span class="comment">// _CONTROLLER_H_</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment">//-------------------------------------------------------------//</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment">//---------------------BAT FILE DESCRIBTION--------------------//</span><span class="comment"></span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment">/**</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment"> * @file run_mex.bat</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="comment"> * @brief Батник для компиляции оболочки МК.</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="comment"> * @details</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"> * Вызывается в матлабе из mexing.m.</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"> * </span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"> * Исходный код батника:</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> * @include F:\Work\Projects\MATLAB\matlab_stm_emulate\MCU_Wrapper\run_mex.bat</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment"> */</span></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_ga15045e0feba8ddf08e20958fd1e36cd5"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#ga15045e0feba8ddf08e20958fd1e36cd5">MCU_readInputs</a></div><div class="ttdeci">void MCU_readInputs(SimStruct *S)</div><div class="ttdoc">Считывание входов S-Function в порты ввода-вывода.</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper_8c_source.html#l00088">mcu_wrapper.c:88</a></div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_ga54429d6d68b1d72ce16bab374e3ffa08"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#ga54429d6d68b1d72ce16bab374e3ffa08">SIM_Initialize_Simulation</a></div><div class="ttdeci">void SIM_Initialize_Simulation(void)</div><div class="ttdoc">Инициализация симуляции МК.</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper_8c_source.html#l00145">mcu_wrapper.c:145</a></div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_ga6f04b162923bada308d9668743425b92"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#ga6f04b162923bada308d9668743425b92">SIM_deInitialize_Simulation</a></div><div class="ttdeci">void SIM_deInitialize_Simulation(void)</div><div class="ttdoc">Деинициализация симуляции МК.</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper_8c_source.html#l00162">mcu_wrapper.c:162</a></div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_ga7bd77e7f9825a3661f357e430246bfe8"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a></div><div class="ttdeci">SIM__MCUHandleTypeDef hmcu</div><div class="ttdoc">Хендл для управления потоком программы МК</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper_8c_source.html#l00016">mcu_wrapper.c:16</a></div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_gaa8c0374618b33785ccb02f74bcfebc46"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#gaa8c0374618b33785ccb02f74bcfebc46">HANDLE</a></div><div class="ttdeci">void * HANDLE</div><div class="ttdoc">MCU handle typedef.</div><div class="ttdef"><b>Definition</b> <a href="#l00071">mcu_wrapper_conf.h:71</a></div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_gaccdef5b45f3d1646f248304e02b00e54"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#gaccdef5b45f3d1646f248304e02b00e54">MCU_Periph_Simulation</a></div><div class="ttdeci">void MCU_Periph_Simulation(void)</div><div class="ttdoc">Симуляция периферии МК</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper_8c_source.html#l00073">mcu_wrapper.c:73</a></div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_gad38bfad0ee1e186c0663565abb6bc71a"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#gad38bfad0ee1e186c0663565abb6bc71a">SIM_writeOutput</a></div><div class="ttdeci">void SIM_writeOutput(SimStruct *S)</div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_gad3c4ea41584d0367dfbfb697f5e57456"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#gad3c4ea41584d0367dfbfb697f5e57456">MCU_Step_Simulation</a></div><div class="ttdeci">void MCU_Step_Simulation(SimStruct *S, time_T time)</div><div class="ttdoc">Симуляция МК на один такт симуляции.</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper_8c_source.html#l00053">mcu_wrapper.c:53</a></div></div>
<div class="ttc" id="agroup___m_c_u___w_r_a_p_p_e_r_html_gad6b7bb9233d746d7709276f9ea1914c2"><div class="ttname"><a href="group___m_c_u___w_r_a_p_p_e_r.html#gad6b7bb9233d746d7709276f9ea1914c2">MCU_writeOutputs</a></div><div class="ttdeci">void MCU_writeOutputs(SimStruct *S)</div><div class="ttdoc">Запись портов ввода-вывода в буфер выхода S-Function.</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper_8c_source.html#l00102">mcu_wrapper.c:102</a></div></div>
<div class="ttc" id="astm32f4xx__matlab__conf_8h_html"><div class="ttname"><a href="stm32f4xx__matlab__conf_8h.html">stm32f4xx_matlab_conf.h</a></div><div class="ttdoc">Заголовочный файл для конфигурации симулятора МК.</div></div>
<div class="ttc" id="astruct_s_i_m_____m_c_u_handle_type_def_html"><div class="ttname"><a href="struct_s_i_m_____m_c_u_handle_type_def.html">SIM__MCUHandleTypeDef</a></div><div class="ttdoc">MCU handle Structure definition.</div><div class="ttdef"><b>Definition</b> <a href="#l00077">mcu_wrapper_conf.h:77</a></div></div>
<div class="ttc" id="astruct_s_i_m_____m_c_u_handle_type_def_html_a52fe34944579ff4b1b6d3e85fae96546"><div class="ttname"><a href="struct_s_i_m_____m_c_u_handle_type_def.html#a52fe34944579ff4b1b6d3e85fae96546">SIM__MCUHandleTypeDef::idMCUThread</a></div><div class="ttdeci">uint32_t idMCUThread</div><div class="ttdoc">id потока МК (unused)</div><div class="ttdef"><b>Definition</b> <a href="#l00080">mcu_wrapper_conf.h:80</a></div></div>
<div class="ttc" id="astruct_s_i_m_____m_c_u_handle_type_def_html_ab19a05224f30fab089c5d5e18fdcca36"><div class="ttname"><a href="struct_s_i_m_____m_c_u_handle_type_def.html#ab19a05224f30fab089c5d5e18fdcca36">SIM__MCUHandleTypeDef::SIM_Sample_Time</a></div><div class="ttdeci">double SIM_Sample_Time</div><div class="ttdoc">sample time of simulation</div><div class="ttdef"><b>Definition</b> <a href="#l00083">mcu_wrapper_conf.h:83</a></div></div>
<div class="ttc" id="astruct_s_i_m_____m_c_u_handle_type_def_html_ad81f091fd8c1ad2908a5dd5967f3322e"><div class="ttname"><a href="struct_s_i_m_____m_c_u_handle_type_def.html#ad81f091fd8c1ad2908a5dd5967f3322e">SIM__MCUHandleTypeDef::fMCU_Stop</a></div><div class="ttdeci">unsigned fMCU_Stop</div><div class="ttdoc">флаг для выхода из потока программы МК</div><div class="ttdef"><b>Definition</b> <a href="#l00082">mcu_wrapper_conf.h:82</a></div></div>
<div class="ttc" id="astruct_s_i_m_____m_c_u_handle_type_def_html_af2b1efce882c9bc0926c715c16773afb"><div class="ttname"><a href="struct_s_i_m_____m_c_u_handle_type_def.html#af2b1efce882c9bc0926c715c16773afb">SIM__MCUHandleTypeDef::hMCUThread</a></div><div class="ttdeci">HANDLE hMCUThread</div><div class="ttdoc">Хендл для потока МК</div><div class="ttdef"><b>Definition</b> <a href="#l00079">mcu_wrapper_conf.h:79</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0
</small></address>
</body>
</html>