matlab_stm_emulate/DOCS/html/mcu__wrapper_8c_source.html

308 lines
49 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.c 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.c</div></div>
</div><!--header-->
<div class="contents">
<a href="mcu__wrapper_8c.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 mcu_wrapper.c</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Исходный код оболочки МК.</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">@details</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">Данный файл содержит функции для симуляции МК в Simulink (S-Function).</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="preprocessor">#include &quot;<a class="code" href="mcu__wrapper__conf_8h.html">mcu_wrapper_conf.h</a>&quot;</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"> * @addtogroup WRAPPER_CONF</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"> */</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8"> 16</a></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___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a>; <span class="comment">///&lt; Хендл для управления потоком программы МК</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gaf1cb3ba542e380d1f12d30579598c48c"> 18</a></span><span class="keywordtype">double</span> <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gaf1cb3ba542e380d1f12d30579598c48c">SystemClockDouble</a> = 0; <span class="comment">///&lt; Счетчик в формате double для точной симуляции системных тиков С промежуточными значений</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga6a1676e08289f73141f9fa8419311385"> 19</a></span>uint64_t <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga6a1676e08289f73141f9fa8419311385">SystemClock</a>; <span class="comment">///&lt; Счетчик тактов для симуляции системных тиков (в целочисленном формате)</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gae50392991204ce9a89dd9aa8bf43634f"> 20</a></span><span class="keywordtype">double</span> <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gae50392991204ce9a89dd9aa8bf43634f">SystemClock_step</a> = 0; <span class="comment">///&lt; Шаг тиков для их симуляции, в формате double</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"></span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">/** MCU_WRAPPER</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="comment"> */</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">//-----------------CONTROLLER SIMULATE FUNCTIONS---------------//</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">/* THREAD FOR MCU APP */</span><span class="comment"></span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">/**</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"> * @brief Главная функция приложения МК.</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment"> * @details Функция с которой начинается выполнение кода МК. Выход из данной функции происходит только в конце симуляции @ref mdlTerminate</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment"> */</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="mcu__wrapper_8c.html#a840291bc02cba5474a4cb46a9b9566fe"> 32</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="mcu__wrapper_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>); <span class="comment">// extern while from main.c</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"> * @brief Поток приложения МК.</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"> * @details Поток, который запускает и выполняет код МК (@ref main).</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00037" data-start="{" data-end="}">
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="mcu__wrapper_8c.html#a1ea76a95b9b28061fb34ece9f6f0a85f"> 37</a></span><span class="keywordtype">unsigned</span> __stdcall <a class="code hl_function" href="mcu__wrapper_8c.html#a1ea76a95b9b28061fb34ece9f6f0a85f">MCU_App_Thread</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <a class="code hl_function" href="mcu__wrapper_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a>(); <span class="comment">// run MCU code</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">return</span> 0; <span class="comment">// end thread</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// note: this return will reached only at the end of simulation, when all whiles will be skipped due to @ref sim_while</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>}</div>
</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/* SIMULATE MCU FOR ONE SIMULATION STEP */</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"> * @brief Симуляция МК на один такт симуляции.</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"> * @param S - указатель на структуру S-Function из &quot;simstruc.h&quot;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment"> * @param time - текущее время симуляции.</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment"> * @details Запускает поток, который выполняет код МК и управляет ходом потока:</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment"> * Если прошел таймаут, поток прерывается, симулируется периферия</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"> * и на следующем шаге поток возобнавляется.</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"> * </span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"> * Вызывается из mdlUpdate()</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00053" data-start="{" data-end="}">
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#gad3c4ea41584d0367dfbfb697f5e57456"> 53</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#gad3c4ea41584d0367dfbfb697f5e57456">MCU_Step_Simulation</a>(SimStruct* S, time_T time)</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span>{</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#ga15045e0feba8ddf08e20958fd1e36cd5">MCU_readInputs</a>(S); <span class="comment">// считывание портов</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> <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="comment">// simulate peripheral</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> ResumeThread(<a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a>.<a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#af2b1efce882c9bc0926c715c16773afb">hMCUThread</a>);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = <a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gafc876c6cc8fa4255636740b201ac1d66">DEKSTOP_CYCLES_FOR_MCU_APP</a>; i &gt; 0; i--)</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> SuspendThread(<a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a>.<a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#af2b1efce882c9bc0926c715c16773afb">hMCUThread</a>);</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> <a class="code hl_function" href="group___m_c_u___w_r_a_p_p_e_r.html#gad6b7bb9233d746d7709276f9ea1914c2">MCU_writeOutputs</a>(S); <span class="comment">// запись портов (по факту запись в буфер. запись в порты в mdlOutputs)</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>}</div>
</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment">/* SIMULATE MCU PERIPHERAL */</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><span class="comment"> * @brief Симуляция периферии МК</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @details Пользовательский код, который симулирует работу периферии МК.</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00073" data-start="{" data-end="}">
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#gaccdef5b45f3d1646f248304e02b00e54"> 73</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#gaccdef5b45f3d1646f248304e02b00e54">MCU_Periph_Simulation</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>{</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gaf1cb3ba542e380d1f12d30579598c48c">SystemClockDouble</a> += <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gae50392991204ce9a89dd9aa8bf43634f">SystemClock_step</a>; <span class="comment">// emulate core clock </span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga6a1676e08289f73141f9fa8419311385">SystemClock</a> = <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gaf1cb3ba542e380d1f12d30579598c48c">SystemClockDouble</a>;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> uwTick = <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga6a1676e08289f73141f9fa8419311385">SystemClock</a> / (SystemCoreClock / 1000);</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> <a class="code hl_function" href="group___t_i_m___s_i_m_u_l_a_t_o_r.html#ga3128cf64eeea541a8e25a72ce10da335">Simulate_TIMs</a>();</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span>}</div>
</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment">/* READ INPUTS S-FUNCTION TO MCU REGS */</span><span class="comment"></span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment">/**</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"> * @brief Считывание входов S-Function в порты ввода-вывода.</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> * @param S - указатель на структуру S-Function из &quot;simstruc.h&quot;</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> * @details Пользовательский код, который записывает порты ввода-вывода из входов S-Function.</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00088" data-start="{" data-end="}">
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#ga15045e0feba8ddf08e20958fd1e36cd5"> 88</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#ga15045e0feba8ddf08e20958fd1e36cd5">MCU_readInputs</a>(SimStruct* S)</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span>{</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">/* Get S-Function inputs */</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> real_T* IN = ssGetInputPortRealSignal(S, 0);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_function" href="group___g_p_i_o___s_i_m_u_l_a_t_o_r.html#ga368334de2e425bc656526d2f42671454">SFUNC_to_GPIO</a>(IN);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span>}</div>
</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="comment">/* WRITE OUTPUTS BUFFER S-FUNCTION FROM MCU REGS*/</span><span class="comment"></span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment">/**</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> * @brief Запись портов ввода-вывода в буфер выхода S-Function</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> * @param S - указатель на структуру S-Function из &quot;simstruc.h&quot;</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * @details Пользовательский код, который записывает буфер выходов S-Function из портов ввода-вывода.</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00102" data-start="{" data-end="}">
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#gad6b7bb9233d746d7709276f9ea1914c2"> 102</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#gad6b7bb9233d746d7709276f9ea1914c2">MCU_writeOutputs</a>(SimStruct* S)</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>{</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">/* Get S-Function descrete array */</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> real_T* Out_Buff = ssGetDiscStates(S);</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_function" href="group___g_p_i_o___s_i_m_u_l_a_t_o_r.html#ga487177c90297da30ee8ec0dca0ce3067">GPIO_to_SFUNC</a>(Out_Buff);</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span>}</div>
</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment">//-----------------CONTROLLER SIMULATE FUNCTIONS---------------//</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment">//-------------------------------------------------------------//</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="comment">//-------------------------------------------------------------//</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment">//----------------------SIMULINK FUNCTIONS---------------------//</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment">/* WRITE OUTPUTS OF S-BLOCK */</span><span class="comment"></span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment">/**</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment"> * @brief Формирование выходов S-Function.</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment"> * @param S - указатель на структуру S-Function из &quot;simstruc.h&quot;</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"> * @details Пользовательский код, который записывает выходы S-Function из буфера.</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00122" data-start="{" data-end="}">
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="mcu__wrapper_8c.html#a47b40a9825bcaeb3a1dfba8b27a0be3f"> 122</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="mcu__wrapper_8c.html#a47b40a9825bcaeb3a1dfba8b27a0be3f">SIM_writeOutputs</a>(SimStruct* S)</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> real_T* GPIO;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> real_T* Out_Buff = ssGetDiscStates(S);</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">//-------------WRITTING GPIOS---------------</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; <a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gab59d8303ff443409a05cef11e3e7176e">PORT_NUMB</a>; j++)</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> GPIO = ssGetOutputPortRealSignal(S, j);</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga80d9b6ce1525c1148d94c021f0b8c83e">PORT_WIDTH</a>; i++)</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> GPIO[i] = Out_Buff[j * <a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga80d9b6ce1525c1148d94c021f0b8c83e">PORT_WIDTH</a> + i];</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> Out_Buff[j * <a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga80d9b6ce1525c1148d94c021f0b8c83e">PORT_WIDTH</a> + i] = 0;</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> }</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">//------------------------------------------</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span>}</div>
</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment">/* MCU WRAPPER DEINITIALIZATION */</span><span class="comment"></span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment">/**</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"> * @brief Инициализация симуляции МК.</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> * @details Пользовательский код, который создает поток для приложения МК </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></div>
<div class="foldopen" id="foldopen00145" data-start="{" data-end="}">
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#ga54429d6d68b1d72ce16bab374e3ffa08"> 145</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#ga54429d6d68b1d72ce16bab374e3ffa08">SIM_Initialize_Simulation</a>(<span class="keywordtype">void</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> <span class="comment">// инициализация потока, который будет выполнять код МК</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a>.<a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#af2b1efce882c9bc0926c715c16773afb">hMCUThread</a> = (<a class="code hl_typedef" href="group___m_c_u___w_r_a_p_p_e_r.html#gaa8c0374618b33785ccb02f74bcfebc46">HANDLE</a>)CreateThread(NULL, 0, <a class="code hl_function" href="mcu__wrapper_8c.html#a1ea76a95b9b28061fb34ece9f6f0a85f">MCU_App_Thread</a>, 0, <a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga98a12c757c95bd7c8ae75999092af30f">CREATE_SUSPENDED</a>, &amp;<a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a>.<a class="code hl_variable" href="struct_s_i_m_____m_c_u_handle_type_def.html#a52fe34944579ff4b1b6d3e85fae96546">idMCUThread</a>);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="comment">/* user initialization */</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <a class="code hl_function" href="group___m_a_i_n___s_i_m_u_l_a_t_o_r.html#gab020a77f89d6c0ea99c7559cfa7e3ba0">Initialize_Periph_Sim</a>();</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="comment">/* wrapper initialization */</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#gae50392991204ce9a89dd9aa8bf43634f">SystemClock_step</a> = SystemCoreClock * <a class="code hl_variable" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a>.<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">// set system clock step</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span>}</div>
</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="comment">/* MCU WRAPPER DEINITIALIZATION */</span><span class="comment"></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"> * @brief Деинициализация симуляции МК.</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"> * @details Пользовательский код, который будет очищать все структуры после окончания симуляции.</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00162" data-start="{" data-end="}">
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="group___m_c_u___w_r_a_p_p_e_r.html#ga6f04b162923bada308d9668743425b92"> 162</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#ga6f04b162923bada308d9668743425b92">SIM_deInitialize_Simulation</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span>{</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// simulate structures of peripheral deinitialization</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_function" href="stm32f4xx__matlab__conf_8c.html#aff389f4df35953d82d9d30ae161a8cf9">deInitialize_Periph_Sim</a>();</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// mcu peripheral memory deinitialization</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <a class="code hl_function" href="stm32f4xx__matlab__conf_8c.html#ad7d9ddf99be97748bc7417425271d85e">deInitialize_MCU</a>();</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span>}</div>
</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="comment">//-------------------------------------------------------------//</span></div>
<div class="ttc" id="agroup___g_p_i_o___s_i_m_u_l_a_t_o_r_html_ga368334de2e425bc656526d2f42671454"><div class="ttname"><a href="group___g_p_i_o___s_i_m_u_l_a_t_o_r.html#ga368334de2e425bc656526d2f42671454">SFUNC_to_GPIO</a></div><div class="ttdeci">void SFUNC_to_GPIO(real_T *in)</div><div class="ttdoc">Считывание входов S-Function в МК.</div><div class="ttdef"><b>Definition</b> <a href="stm32f4xx__matlab__gpio_8c_source.html#l00049">stm32f4xx_matlab_gpio.c:49</a></div></div>
<div class="ttc" id="agroup___g_p_i_o___s_i_m_u_l_a_t_o_r_html_ga487177c90297da30ee8ec0dca0ce3067"><div class="ttname"><a href="group___g_p_i_o___s_i_m_u_l_a_t_o_r.html#ga487177c90297da30ee8ec0dca0ce3067">GPIO_to_SFUNC</a></div><div class="ttdeci">void GPIO_to_SFUNC(real_T *out_buff)</div><div class="ttdoc">Запись буфера выходов S-Function из GPIO.</div><div class="ttdef"><b>Definition</b> <a href="stm32f4xx__matlab__gpio_8c_source.html#l00020">stm32f4xx_matlab_gpio.c:20</a></div></div>
<div class="ttc" id="agroup___m_a_i_n___s_i_m_u_l_a_t_o_r_html_gab020a77f89d6c0ea99c7559cfa7e3ba0"><div class="ttname"><a href="group___m_a_i_n___s_i_m_u_l_a_t_o_r.html#gab020a77f89d6c0ea99c7559cfa7e3ba0">Initialize_Periph_Sim</a></div><div class="ttdeci">void Initialize_Periph_Sim(void)</div><div class="ttdoc">Инициализация периферии симулятора МК.</div><div class="ttdef"><b>Definition</b> <a href="stm32f4xx__matlab__conf_8c_source.html#l00023">stm32f4xx_matlab_conf.c:23</a></div></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="#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="#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="#l00162">mcu_wrapper.c:162</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="mcu__wrapper__conf_8h_source.html#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="#l00073">mcu_wrapper.c:73</a></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="#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="#l00102">mcu_wrapper.c:102</a></div></div>
<div class="ttc" id="agroup___t_i_m___s_i_m_u_l_a_t_o_r_html_ga3128cf64eeea541a8e25a72ce10da335"><div class="ttname"><a href="group___t_i_m___s_i_m_u_l_a_t_o_r.html#ga3128cf64eeea541a8e25a72ce10da335">Simulate_TIMs</a></div><div class="ttdeci">void Simulate_TIMs(void)</div><div class="ttdoc">Симуляция выбранных таймеров.</div><div class="ttdef"><b>Definition</b> <a href="stm32f4xx__matlab__tim_8c_source.html#l00521">stm32f4xx_matlab_tim.c:521</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_ga6a1676e08289f73141f9fa8419311385"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga6a1676e08289f73141f9fa8419311385">SystemClock</a></div><div class="ttdeci">uint64_t SystemClock</div><div class="ttdoc">Счетчик тактов для симуляции системных тиков (в целочисленном формате)</div><div class="ttdef"><b>Definition</b> <a href="#l00019">mcu_wrapper.c:19</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_ga7bd77e7f9825a3661f357e430246bfe8"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga7bd77e7f9825a3661f357e430246bfe8">hmcu</a></div><div class="ttdeci">SIM__MCUHandleTypeDef hmcu</div><div class="ttdoc">Хендл для управления потоком программы МК</div><div class="ttdef"><b>Definition</b> <a href="#l00016">mcu_wrapper.c:16</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_ga80d9b6ce1525c1148d94c021f0b8c83e"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga80d9b6ce1525c1148d94c021f0b8c83e">PORT_WIDTH</a></div><div class="ttdeci">#define PORT_WIDTH</div><div class="ttdoc">width of one port</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper__conf_8h_source.html#l00050">mcu_wrapper_conf.h:50</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_ga98a12c757c95bd7c8ae75999092af30f"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga98a12c757c95bd7c8ae75999092af30f">CREATE_SUSPENDED</a></div><div class="ttdeci">#define CREATE_SUSPENDED</div><div class="ttdoc">define from WinBase.h. We dont wanna include &quot;Windows.h&quot; or smth like this, because of HAL there are ...</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper__conf_8h_source.html#l00047">mcu_wrapper_conf.h:47</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_gab59d8303ff443409a05cef11e3e7176e"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#gab59d8303ff443409a05cef11e3e7176e">PORT_NUMB</a></div><div class="ttdeci">#define PORT_NUMB</div><div class="ttdoc">amount of ports</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper__conf_8h_source.html#l00051">mcu_wrapper_conf.h:51</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_gae50392991204ce9a89dd9aa8bf43634f"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#gae50392991204ce9a89dd9aa8bf43634f">SystemClock_step</a></div><div class="ttdeci">double SystemClock_step</div><div class="ttdoc">Шаг тиков для их симуляции, в формате double.</div><div class="ttdef"><b>Definition</b> <a href="#l00020">mcu_wrapper.c:20</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_gaf1cb3ba542e380d1f12d30579598c48c"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#gaf1cb3ba542e380d1f12d30579598c48c">SystemClockDouble</a></div><div class="ttdeci">double SystemClockDouble</div><div class="ttdoc">Счетчик в формате double для точной симуляции системных тиков С промежуточными значений</div><div class="ttdef"><b>Definition</b> <a href="#l00018">mcu_wrapper.c:18</a></div></div>
<div class="ttc" id="agroup___w_r_a_p_p_e_r___c_o_n_f_html_gafc876c6cc8fa4255636740b201ac1d66"><div class="ttname"><a href="group___w_r_a_p_p_e_r___c_o_n_f.html#gafc876c6cc8fa4255636740b201ac1d66">DEKSTOP_CYCLES_FOR_MCU_APP</a></div><div class="ttdeci">#define DEKSTOP_CYCLES_FOR_MCU_APP</div><div class="ttdoc">number of for() cycles after which MCU thread would be suspended</div><div class="ttdef"><b>Definition</b> <a href="mcu__wrapper__conf_8h_source.html#l00049">mcu_wrapper_conf.h:49</a></div></div>
<div class="ttc" id="amcu__wrapper_8c_html_a1ea76a95b9b28061fb34ece9f6f0a85f"><div class="ttname"><a href="mcu__wrapper_8c.html#a1ea76a95b9b28061fb34ece9f6f0a85f">MCU_App_Thread</a></div><div class="ttdeci">unsigned __stdcall MCU_App_Thread(void)</div><div class="ttdoc">Поток приложения МК.</div><div class="ttdef"><b>Definition</b> <a href="#l00037">mcu_wrapper.c:37</a></div></div>
<div class="ttc" id="amcu__wrapper_8c_html_a47b40a9825bcaeb3a1dfba8b27a0be3f"><div class="ttname"><a href="mcu__wrapper_8c.html#a47b40a9825bcaeb3a1dfba8b27a0be3f">SIM_writeOutputs</a></div><div class="ttdeci">void SIM_writeOutputs(SimStruct *S)</div><div class="ttdoc">Формирование выходов S-Function.</div><div class="ttdef"><b>Definition</b> <a href="#l00122">mcu_wrapper.c:122</a></div></div>
<div class="ttc" id="amcu__wrapper_8c_html_a840291bc02cba5474a4cb46a9b9566fe"><div class="ttname"><a href="mcu__wrapper_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a></div><div class="ttdeci">int main(void)</div><div class="ttdoc">Главная функция приложения МК.</div></div>
<div class="ttc" id="amcu__wrapper__conf_8h_html"><div class="ttname"><a href="mcu__wrapper__conf_8h.html">mcu_wrapper_conf.h</a></div><div class="ttdoc">Заголовочный файл для оболочки МК.</div></div>
<div class="ttc" id="astm32f4xx__matlab__conf_8c_html_ad7d9ddf99be97748bc7417425271d85e"><div class="ttname"><a href="stm32f4xx__matlab__conf_8c.html#ad7d9ddf99be97748bc7417425271d85e">deInitialize_MCU</a></div><div class="ttdeci">void deInitialize_MCU(void)</div><div class="ttdoc">Деинициализация симулятора МК.</div><div class="ttdef"><b>Definition</b> <a href="stm32f4xx__matlab__conf_8c_source.html#l00040">stm32f4xx_matlab_conf.c:40</a></div></div>
<div class="ttc" id="astm32f4xx__matlab__conf_8c_html_aff389f4df35953d82d9d30ae161a8cf9"><div class="ttname"><a href="stm32f4xx__matlab__conf_8c.html#aff389f4df35953d82d9d30ae161a8cf9">deInitialize_Periph_Sim</a></div><div class="ttdeci">void deInitialize_Periph_Sim(void)</div><div class="ttdoc">Деинициализация периферии симулятора МК.</div><div class="ttdef"><b>Definition</b> <a href="stm32f4xx__matlab__conf_8c_source.html#l00031">stm32f4xx_matlab_conf.c:31</a></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="mcu__wrapper__conf_8h_source.html#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="mcu__wrapper__conf_8h_source.html#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="mcu__wrapper__conf_8h_source.html#l00083">mcu_wrapper_conf.h:83</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="mcu__wrapper__conf_8h_source.html#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>