matlab_stm_emulate/DOCS/html/stm32f4xx__matlab__gpio_8c_source.html

183 lines
17 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.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>STM MATLAB Simulator: F:/Work/Projects/MATLAB/matlab_stm_emulate/MCU_STM32F4xx_Matlab/STM32F4xx_SIMULINK/stm32f4xx_matlab_gpio.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_9609623a411adcd586e91350a30aa9d5.html">MCU_STM32F4xx_Matlab</a></li><li class="navelem"><a class="el" href="dir_df8c7f866fb3beabf246989867a8aa90.html">STM32F4xx_SIMULINK</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">stm32f4xx_matlab_gpio.c</div></div>
</div><!--header-->
<div class="contents">
<a href="stm32f4xx__matlab__gpio_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 stm32f4xx_matlab_gpio.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">Данный файл содержит функции для симуляции портов STM32F407xx.</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="stm32f4xx__matlab__gpio_8h.html">stm32f4xx_matlab_gpio.h</a>&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &quot;modbus.h&quot;</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"> * @brief Запись буфера выходов S-Function из GPIO.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * @param out_buff - указатель на буфер выходов S-Function.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * @details Функция для записи буфера выходов S-Function из GPIO. </span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> После в @ref SIM_writeOutputs() из out_buff формируются выходы S-Function.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"></span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * @attention Тело функции пишется пользователем!</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00020" data-start="{" data-end="}">
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="group___g_p_i_o___s_i_m_u_l_a_t_o_r.html#ga487177c90297da30ee8ec0dca0ce3067"> 20</a></span><span class="keywordtype">void</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>(real_T* out_buff)</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span>{</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</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="l00023" name="l00023"></a><span class="lineno"> 23</span> {</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keywordflow">if</span> (GPIOB-&gt;ODR &amp; (1 &lt;&lt; i))</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> {</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> out_buff[i] = 1;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> }</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">if</span> (GPIOD-&gt;ODR &amp; (1 &lt;&lt; i))</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> {</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> out_buff[<a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga80d9b6ce1525c1148d94c021f0b8c83e">PORT_WIDTH</a> + i] = 1;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</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="keywordflow">if</span> (GPIOE-&gt;ODR &amp; (1 &lt;&lt; i))</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> out_buff[2*<a class="code hl_define" href="group___w_r_a_p_p_e_r___c_o_n_f.html#ga80d9b6ce1525c1148d94c021f0b8c83e">PORT_WIDTH</a> + i] = 1;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> }</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> }</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>}</div>
</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment"></span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/**</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"> * @brief Считывание входов S-Function в МК.</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment"> * @param out_buff - указатель на буфер выходов S-Function.</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment"> * @details Функция для считывания входов S-Function в МК. </span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"> Можно абстрагироваться от считывания в GPIO и записывать напрямую в переменные МК.</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment"></span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment"> * @attention Тело функции пишется пользователем!</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00049" data-start="{" data-end="}">
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="group___g_p_i_o___s_i_m_u_l_a_t_o_r.html#ga368334de2e425bc656526d2f42671454"> 49</a></span><span class="keywordtype">void</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>(real_T* in)</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>{</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// write pwm ctrl registers</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 5; i++)</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> pwm_ctrl[i] = in[i];</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// write pwm ctrl coils</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">if</span> (in[5] &gt; 0.5)</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> MB_Set_Coil_Local(coils_regs, COIL_PWM_DC_MODE);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">else</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> MB_Reset_Coil_Local(coils_regs, COIL_PWM_DC_MODE);</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="keywordflow">if</span> (in[6] &gt; 0.5)</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> MB_Set_Coil_Local(coils_regs, COIL_PWM_CH_MODE);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">else</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"> 71</span> MB_Reset_Coil_Local(coils_regs, COIL_PWM_CH_MODE);</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="keywordflow">if</span> (in[7] &gt; 0.5)</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> MB_Set_Coil_Local(coils_regs, COIL_PWM_PHASE_MODE);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">else</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> MB_Reset_Coil_Local(coils_regs, COIL_PWM_PHASE_MODE);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> }</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>}</div>
</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="#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="#l00020">stm32f4xx_matlab_gpio.c:20</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="astm32f4xx__matlab__gpio_8h_html"><div class="ttname"><a href="stm32f4xx__matlab__gpio_8h.html">stm32f4xx_matlab_gpio.h</a></div><div class="ttdoc">Заголовочный файл для симулятора портов.</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>