MCB1700_Welcome/Doxygen/html/_hei_o_s___thread_8h_source...

272 lines
51 KiB
HTML
Raw Permalink Blame History

<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Labor03: HeiOS_Thread.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>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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>
<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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Labor03
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('_hei_o_s___thread_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">HeiOS_Thread.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="_hei_o_s___thread_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#ifndef __HeiOS_Thread_H</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#define __HeiOS_Thread_H</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/*all necessary includes*/</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;LPC17xx.h&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;stdint.h&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_hei_o_s___settings_8h.html">HeiOS_Settings.h</a>&quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#a0353434e030fd5b6d45c9e657ac2b097"> 19</a></span>&#160;<span class="preprocessor">#define Enter_Critical_Section() __set_BASEPRI(DISABLE_INTERRUPT_NUMBER &lt;&lt; (8 - __NVIC_PRIO_BITS));</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#aeed08d89b22ef0e6cc0631cf4c96cc6d"> 24</a></span>&#160;<span class="preprocessor">#define Exit_Critical_Section() __set_BASEPRI(0U);</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#adf570b001a08faf1ac60144f9552480a"> 29</a></span>&#160;<span class="preprocessor">#define thread_yield() SCB-&gt;ICSR=SCB_ICSR_PENDSVSET_Msk;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="struct_thread__struct.html"> 35</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct_thread__struct.html">Thread_struct</a></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{ </div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a8f9c33c6996e4f010b01e2af17502888"> 37</a></span>&#160; <span class="keyword">struct </span><a class="code" href="struct_thread__struct.html">Thread_struct</a> *<a class="code" href="struct_thread__struct.html#a8f9c33c6996e4f010b01e2af17502888">next</a>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a2cb2d01ba77893b8843ad57a2155ba2e"> 39</a></span>&#160; uint32_t *<a class="code" href="struct_thread__struct.html#a2cb2d01ba77893b8843ad57a2155ba2e">PSP</a>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a9997d8ee2df51d18efed254a5aa016fd"> 41</a></span>&#160; <span class="keywordtype">char</span> <a class="code" href="struct_thread__struct.html#a9997d8ee2df51d18efed254a5aa016fd">name</a>[20];</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a31bdae9c75c66a1824ad271b469eacc4"> 43</a></span>&#160; void (*<a class="code" href="struct_thread__struct.html#a31bdae9c75c66a1824ad271b469eacc4">pfunc</a>)();</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a0ad043071ccc7a261d79a759dc9c6f0c"> 45</a></span>&#160; uint8_t <a class="code" href="struct_thread__struct.html#a0ad043071ccc7a261d79a759dc9c6f0c">priority</a>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a79862aa6064cbbefdb152678f6f17d6f"> 47</a></span>&#160; uint8_t <a class="code" href="struct_thread__struct.html#a79862aa6064cbbefdb152678f6f17d6f">identity</a>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a906030244e56503e938653af4e6f1767"> 49</a></span>&#160; uint32_t <a class="code" href="struct_thread__struct.html#a906030244e56503e938653af4e6f1767">executiontime</a>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a3d67397d99f6243c885906f630e2e2e3"> 51</a></span>&#160; uint32_t <a class="code" href="struct_thread__struct.html#a3d67397d99f6243c885906f630e2e2e3">tickcount</a>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a458421a43d4f6dc515faf427bf579d00"> 53</a></span>&#160; uint32_t <a class="code" href="struct_thread__struct.html#a458421a43d4f6dc515faf427bf579d00">delay</a>;</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#aa3feed022ffd137bf57085f9442105e8"> 55</a></span>&#160; uint32_t <a class="code" href="struct_thread__struct.html#aa3feed022ffd137bf57085f9442105e8">ssize</a>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="struct_thread__struct.html#a1abf78464029077a8080178b9e04745c"> 57</a></span>&#160; uint32_t *<a class="code" href="struct_thread__struct.html#a1abf78464029077a8080178b9e04745c">stack</a>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#a1a370e56bc70c92c0e7834839b8721f9"> 58</a></span>&#160;} <a class="code" href="_hei_o_s___thread_8h.html#a1a370e56bc70c92c0e7834839b8721f9">Thread_t</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct_thread_i_d_l_e.html"> 63</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct_thread_i_d_l_e.html">ThreadIDLE</a></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct_thread_i_d_l_e.html#a26c403ce9423735dc0d408f1b14ef6c7"> 66</a></span>&#160; uint32_t <a class="code" href="struct_thread_i_d_l_e.html#a26c403ce9423735dc0d408f1b14ef6c7">IdleThreadStack</a>[<a class="code" href="_hei_o_s___settings_8h.html#ae8c7ca0c06d95dc7b400ac278de7adb1">IDLE_THREADSTACKSIZE</a>];</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct_thread_i_d_l_e.html#a4465a910abcbdf89240e5e808246ba0c"> 68</a></span>&#160; uint32_t <a class="code" href="struct_thread_i_d_l_e.html#a4465a910abcbdf89240e5e808246ba0c">PSP</a>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_thread_i_d_l_e.html#a05c940dbc220f5a723afd70071aebff8"> 70</a></span>&#160; uint8_t <a class="code" href="struct_thread_i_d_l_e.html#a05c940dbc220f5a723afd70071aebff8">active</a>;</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#af7783e35b9d29638a306b187d477a8f4"> 71</a></span>&#160;} <a class="code" href="_hei_o_s___thread_8h.html#af7783e35b9d29638a306b187d477a8f4">Thread_IDLE_t</a>;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#adf19f82560160de5dcccadc09bb9c255">setfpoutoutidle</a>(<span class="keywordtype">void</span> (*fp) (<span class="keywordtype">void</span>));</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">/*Function for initializing the Threads */</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a94d3e31ac9ce0ed4711711a262d5ddda">Thread_init</a>(<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>,<span class="keywordtype">void</span> *stack, uint32_t stack_size,<span class="keywordtype">char</span> name[],<span class="keywordtype">void</span> (*pfunc)(),uint32_t executiontime, uint8_t priority);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">/*Function for checking the stack usage*/</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#a4cc8f78ca0543e6948d909e1ea386feb"> 85</a></span>&#160;<span class="keyword">extern</span> uint16_t <a class="code" href="_hei_o_s___thread_8h.html#a4cc8f78ca0543e6948d909e1ea386feb">thread_stack_usage</a> (<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">/*functions for the threadmanagement*/</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">extern</span> uint8_t <a class="code" href="_hei_o_s___thread_8h.html#ac1b95c9591274d32fe312d3c3a7c765d">priv_thread_sort_add</a>(<a class="code" href="struct_thread__struct.html">Thread_t</a> **<a class="code" href="_hei_o_s___thread_8h.html#a085f099d7c875aa298450d79431ae178">root</a>,<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">extern</span> uint8_t <a class="code" href="_hei_o_s___thread_8h.html#ada1847fa45175177f66831eb1c706efa">priv_thread_remove</a>(<a class="code" href="struct_thread__struct.html">Thread_t</a> **<a class="code" href="_hei_o_s___thread_8h.html#a085f099d7c875aa298450d79431ae178">root</a>,<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a68469423a46b5ee543b5ee42cbbd1249">thread_suspend</a> (<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#adb098ee17a421881935bece55c70311e">thread_resume</a> (<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a8b6d6e6b67fd60cae0105a0aa3fe5ade">thread_delay</a> (uint32_t tick);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">/*SVC CALL*/</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#ad543ed6571a6cf7986fc3c588fe0876e">SVC_Handler_service</a>(uint32_t * svc_args);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">/*typedef for SVC instruction*/</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#a4b3a50115ee8bbe264f5630a97ecd7fc"> 98</a></span>&#160;<span class="keyword">typedef</span> uint8_t (*<a class="code" href="_hei_o_s___thread_8h.html#a4b3a50115ee8bbe264f5630a97ecd7fc">svc_call_t</a>)(<a class="code" href="struct_thread__struct.html">Thread_t</a> **<a class="code" href="_hei_o_s___thread_8h.html#a085f099d7c875aa298450d79431ae178">root</a>,<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">/*SVC instruction*/</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#a42b714efadf2458b2ef2cf1f70a45158"> 101</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a42b714efadf2458b2ef2cf1f70a45158">__svc</a>(0x00) svc_thread_yield(<span class="keywordtype">void</span>); <span class="comment">/*can only set pendsv in handler mode*/</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36"> 102</a></span>&#160;<span class="keyword">extern</span> uint8_t <a class="code" href="_hei_o_s___thread_8h.html#a42b714efadf2458b2ef2cf1f70a45158">__svc</a>(0x01) svc_thread(<a class="code" href="_hei_o_s___thread_8h.html#a4b3a50115ee8bbe264f5630a97ecd7fc">svc_call_t</a>,<a class="code" href="struct_thread__struct.html">Thread_t</a> **<a class="code" href="_hei_o_s___thread_8h.html#a085f099d7c875aa298450d79431ae178">root</a>,<a class="code" href="struct_thread__struct.html">Thread_t</a> *<a class="code" href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a>);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">/*Function declaration for scheduler*/</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a16c7ec7d54a769f4aa36c23d3d35eced">OS_Start_Scheduler</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a52404b7464fdf3d6a4d10d7956ebc4fa">save_R4toR11</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a1a3886d1dcd4a06a67eb4329970359de">load_R4toR11</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">/*updates the sleep queue and adds a thread to ready queue if his time is over*/</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#a53ebffa94d01fd8dd641bb0520878da2">update_Thread_slp</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">/*updates the execution time of each Thread, if the the tickcounter is equal to the execution time the PendSV-Handler get triggered*/</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#afb86102d12bfbfbda217500415dfbc2a">update_executiontime</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">/*Function of the Idle Thread*/</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="_hei_o_s___thread_8h.html#afb25be23cd6e0612928e16af882d7cc9">IdleThread</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">/*This inline function configures the Systick Timer*/</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="_hei_o_s___thread_8h.html#a658984b56982482ed5fdbd20366cd3f3"> 117</a></span>&#160;__STATIC_INLINE uint32_t <a class="code" href="_hei_o_s___thread_8h.html#a658984b56982482ed5fdbd20366cd3f3">SysTick_RTOS_Config</a>(uint32_t ticks)</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> ((ticks - 1UL) &gt; SysTick_LOAD_RELOAD_Msk) {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> (1UL); <span class="comment">/* Reload value impossible */</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; SysTick-&gt;LOAD = (uint32_t)(ticks - 1UL); <span class="comment">/* set reload register */</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; NVIC_SetPriority(SysTick_IRQn,30); <span class="comment">/* set Priority for Systick Interrupt to lowest*/</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; SysTick-&gt;VAL = 0UL; <span class="comment">/* Load the SysTick Counter Value */</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; SysTick-&gt;CTRL = SysTick_CTRL_CLKSOURCE_Msk |</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; SysTick_CTRL_TICKINT_Msk |</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; SysTick_CTRL_ENABLE_Msk; <span class="comment">/* Enable SysTick IRQ and SysTick Timer */</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> (0UL); <span class="comment">/* Function successful */</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="astruct_thread__struct_html_a2cb2d01ba77893b8843ad57a2155ba2e"><div class="ttname"><a href="struct_thread__struct.html#a2cb2d01ba77893b8843ad57a2155ba2e">Thread_struct::PSP</a></div><div class="ttdeci">uint32_t * PSP</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:39</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a1168a5ee1302d25a570b5849f005711c"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a1168a5ee1302d25a570b5849f005711c">Thread_ready</a></div><div class="ttdeci">Thread_t * Thread_ready</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:22</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_adb098ee17a421881935bece55c70311e"><div class="ttname"><a href="_hei_o_s___thread_8c.html#adb098ee17a421881935bece55c70311e">thread_resume</a></div><div class="ttdeci">void thread_resume(Thread_t *Thread)</div><div class="ttdoc">Diese Funktion f<>gt den <20>bergebenen Thread zur Ready-Liste hinzu.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:282</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a380c8a2fe968f86005d132a7e6cdbee4"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a380c8a2fe968f86005d132a7e6cdbee4">Thread_run</a></div><div class="ttdeci">Thread_t * Thread_run</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:26</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_afb86102d12bfbfbda217500415dfbc2a"><div class="ttname"><a href="_hei_o_s___thread_8h.html#afb86102d12bfbfbda217500415dfbc2a">update_executiontime</a></div><div class="ttdeci">void update_executiontime(void)</div><div class="ttdoc">Diese Funktion aktualisiert die Ausf<73>hrungszeit der Threads.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:613</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a68469423a46b5ee543b5ee42cbbd1249"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a68469423a46b5ee543b5ee42cbbd1249">thread_suspend</a></div><div class="ttdeci">void thread_suspend(Thread_t *Thread)</div><div class="ttdoc">Diese Funktion entfernt einen Thread von der Ready-Liste und l<>st gegebenenfalls einen Kontextwechsel au...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:264</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_afb25be23cd6e0612928e16af882d7cc9"><div class="ttname"><a href="_hei_o_s___thread_8h.html#afb25be23cd6e0612928e16af882d7cc9">IdleThread</a></div><div class="ttdeci">void IdleThread(void)</div><div class="ttdoc">Diese Funktion durchl<68>uft eine Endlosschleife und sorgt f<>r einen definierten Zustand, falls kein Thread f<>r die...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:562</div></div>
<div class="ttc" id="a_fixed_priority_8c_html_ac9a92709c322cb31ad7afa84f5c05662"><div class="ttname"><a href="_fixed_priority_8c.html#ac9a92709c322cb31ad7afa84f5c05662">FixedPriority_scheduler</a></div><div class="ttdeci">Thread_t * FixedPriority_scheduler(Thread_t **Thread_ready, Thread_IDLE_t *IDLE_Thread)</div><div class="ttdef"><b>Definition:</b> FixedPriority.c:21</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a52404b7464fdf3d6a4d10d7956ebc4fa"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a52404b7464fdf3d6a4d10d7956ebc4fa">save_R4toR11</a></div><div class="ttdeci">void save_R4toR11(void)</div><div class="ttdoc">Diese Funktion sichert die Register R4-R8 mit Inline-Assembler.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:473</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_adb098ee17a421881935bece55c70311e"><div class="ttname"><a href="_hei_o_s___thread_8h.html#adb098ee17a421881935bece55c70311e">thread_resume</a></div><div class="ttdeci">void thread_resume(Thread_t *Thread)</div><div class="ttdoc">Diese Funktion f<>gt den <20>bergebenen Thread zur Ready-Liste hinzu.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:282</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a37a51408555bf2a31f8e00a7ec229b7a"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a37a51408555bf2a31f8e00a7ec229b7a">SVC_Handler</a></div><div class="ttdeci">__asm void SVC_Handler(void)</div><div class="ttdoc">Diese Funktion ermittelt mithile von embedded Assembler den verwendeten Stackpointer.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:317</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_afb25be23cd6e0612928e16af882d7cc9"><div class="ttname"><a href="_hei_o_s___thread_8c.html#afb25be23cd6e0612928e16af882d7cc9">IdleThread</a></div><div class="ttdeci">void IdleThread(void)</div><div class="ttdoc">Diese Funktion durchl<68>uft eine Endlosschleife und sorgt f<>r einen definierten Zustand, falls kein Thread f<>r die...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:562</div></div>
<div class="ttc" id="astruct_thread__struct_html_a79862aa6064cbbefdb152678f6f17d6f"><div class="ttname"><a href="struct_thread__struct.html#a79862aa6064cbbefdb152678f6f17d6f">Thread_struct::identity</a></div><div class="ttdeci">uint8_t identity</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:47</div></div>
<div class="ttc" id="a_hei_o_s___settings_8h_html_ae8c7ca0c06d95dc7b400ac278de7adb1"><div class="ttname"><a href="_hei_o_s___settings_8h.html#ae8c7ca0c06d95dc7b400ac278de7adb1">IDLE_THREADSTACKSIZE</a></div><div class="ttdeci">#define IDLE_THREADSTACKSIZE</div><div class="ttdoc">Festlegung der Stackgr<67><72>e f<>r den IDLE-Thread (in KB)</div><div class="ttdef"><b>Definition:</b> HeiOS_Settings.h:19</div></div>
<div class="ttc" id="a_hei_o_s___settings_8h_html_ad89c89f9a8ae893ca26c208ad005751a"><div class="ttname"><a href="_hei_o_s___settings_8h.html#ad89c89f9a8ae893ca26c208ad005751a">THREADNUMBER</a></div><div class="ttdeci">#define THREADNUMBER</div><div class="ttdef"><b>Definition:</b> HeiOS_Settings.h:14</div></div>
<div class="ttc" id="astruct_thread__struct_html_a8f9c33c6996e4f010b01e2af17502888"><div class="ttname"><a href="struct_thread__struct.html#a8f9c33c6996e4f010b01e2af17502888">Thread_struct::next</a></div><div class="ttdeci">struct Thread_struct * next</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:37</div></div>
<div class="ttc" id="astruct_thread__struct_html_a0ad043071ccc7a261d79a759dc9c6f0c"><div class="ttname"><a href="struct_thread__struct.html#a0ad043071ccc7a261d79a759dc9c6f0c">Thread_struct::priority</a></div><div class="ttdeci">uint8_t priority</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:45</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a25d06518671a8ff47a4ce9a397ba2a49"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a25d06518671a8ff47a4ce9a397ba2a49">fpoutputidle</a></div><div class="ttdeci">void(* fpoutputidle)(void)</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:14</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ad543ed6571a6cf7986fc3c588fe0876e"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ad543ed6571a6cf7986fc3c588fe0876e">SVC_Handler_service</a></div><div class="ttdeci">void SVC_Handler_service(uint32_t *svc_args)</div><div class="ttdoc">Diese Funktion dient als API, um Funktionen im priviligierten Modus ausf<73>hren zu k<>nnen. Diese Funktion bes...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:337</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a6303e1f258cbdc1f970ce579cc015623"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a6303e1f258cbdc1f970ce579cc015623">PendSV_Handler</a></div><div class="ttdeci">void PendSV_Handler(void)</div><div class="ttdoc">Diese Funktion f<>hrt den Kontextwechsel aus.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:411</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_af7783e35b9d29638a306b187d477a8f4"><div class="ttname"><a href="_hei_o_s___thread_8h.html#af7783e35b9d29638a306b187d477a8f4">Thread_IDLE_t</a></div><div class="ttdeci">struct ThreadIDLE Thread_IDLE_t</div><div class="ttdoc">Deklaration der Idle-Thread-Datenstruktur.</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a4b3a50115ee8bbe264f5630a97ecd7fc"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a4b3a50115ee8bbe264f5630a97ecd7fc">svc_call_t</a></div><div class="ttdeci">uint8_t(* svc_call_t)(Thread_t **root, Thread_t *Thread)</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:98</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a1a3886d1dcd4a06a67eb4329970359de"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a1a3886d1dcd4a06a67eb4329970359de">load_R4toR11</a></div><div class="ttdeci">void load_R4toR11(void)</div><div class="ttdoc">Diese Funktion ladet die Register R4-R8 mit Inline-Assembler.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:491</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a658984b56982482ed5fdbd20366cd3f3"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a658984b56982482ed5fdbd20366cd3f3">SysTick_RTOS_Config</a></div><div class="ttdeci">__STATIC_INLINE uint32_t SysTick_RTOS_Config(uint32_t ticks)</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:117</div></div>
<div class="ttc" id="astruct_thread__struct_html_a458421a43d4f6dc515faf427bf579d00"><div class="ttname"><a href="struct_thread__struct.html#a458421a43d4f6dc515faf427bf579d00">Thread_struct::delay</a></div><div class="ttdeci">uint32_t delay</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:53</div></div>
<div class="ttc" id="astruct_thread__struct_html_a906030244e56503e938653af4e6f1767"><div class="ttname"><a href="struct_thread__struct.html#a906030244e56503e938653af4e6f1767">Thread_struct::executiontime</a></div><div class="ttdeci">uint32_t executiontime</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:49</div></div>
<div class="ttc" id="astruct_thread__struct_html"><div class="ttname"><a href="struct_thread__struct.html">Thread_struct</a></div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:36</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a8b6d6e6b67fd60cae0105a0aa3fe5ade"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a8b6d6e6b67fd60cae0105a0aa3fe5ade">thread_delay</a></div><div class="ttdeci">void thread_delay(uint32_t tick)</div><div class="ttdoc">Diese Funktion entfernt den <20>bergebenen Thread von der Ready-Liste und f<>gt ihn der Sleep-Liste hinzu....</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:300</div></div>
<div class="ttc" id="a_hei_o_s___settings_8h_html_a7f21fe9fdb3605017d51d802b41910ac"><div class="ttname"><a href="_hei_o_s___settings_8h.html#a7f21fe9fdb3605017d51d802b41910ac">TICKRATE</a></div><div class="ttdeci">#define TICKRATE</div><div class="ttdoc">Festlegung des SysTickintervalls in ms.</div><div class="ttdef"><b>Definition:</b> HeiOS_Settings.h:24</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a3f615e25424a59ed3fa352c08b4eecc7"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a3f615e25424a59ed3fa352c08b4eecc7">load_R4toR11</a></div><div class="ttdeci">__asm void load_R4toR11(void)</div><div class="ttdoc">Diese Funktion ladet die Register R4-R8 mit Inline-Assembler.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:491</div></div>
<div class="ttc" id="astruct_thread_i_d_l_e_html_a26c403ce9423735dc0d408f1b14ef6c7"><div class="ttname"><a href="struct_thread_i_d_l_e.html#a26c403ce9423735dc0d408f1b14ef6c7">ThreadIDLE::IdleThreadStack</a></div><div class="ttdeci">uint32_t IdleThreadStack[IDLE_THREADSTACKSIZE]</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:66</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_adf19f82560160de5dcccadc09bb9c255"><div class="ttname"><a href="_hei_o_s___thread_8c.html#adf19f82560160de5dcccadc09bb9c255">setfpoutoutidle</a></div><div class="ttdeci">void setfpoutoutidle(void(*fp)(void))</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:29</div></div>
<div class="ttc" id="astruct_thread_i_d_l_e_html_a05c940dbc220f5a723afd70071aebff8"><div class="ttname"><a href="struct_thread_i_d_l_e.html#a05c940dbc220f5a723afd70071aebff8">ThreadIDLE::active</a></div><div class="ttdeci">uint8_t active</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:70</div></div>
<div class="ttc" id="astruct_thread__struct_html_aa3feed022ffd137bf57085f9442105e8"><div class="ttname"><a href="struct_thread__struct.html#aa3feed022ffd137bf57085f9442105e8">Thread_struct::ssize</a></div><div class="ttdeci">uint32_t ssize</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:55</div></div>
<div class="ttc" id="astruct_thread_i_d_l_e_html_a4465a910abcbdf89240e5e808246ba0c"><div class="ttname"><a href="struct_thread_i_d_l_e.html#a4465a910abcbdf89240e5e808246ba0c">ThreadIDLE::PSP</a></div><div class="ttdeci">uint32_t PSP</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:68</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a5ac3911e312ded66f379f1a3082662e8"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a5ac3911e312ded66f379f1a3082662e8">IDLE_Thread</a></div><div class="ttdeci">Thread_IDLE_t IDLE_Thread</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:19</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_adf570b001a08faf1ac60144f9552480a"><div class="ttname"><a href="_hei_o_s___thread_8h.html#adf570b001a08faf1ac60144f9552480a">thread_yield</a></div><div class="ttdeci">#define thread_yield()</div><div class="ttdoc">triggert den PendSV-Handler an und l<>st somit einen Kontextwechsel aus</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:29</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a6f8dcd8fc1b8d6b5ea4fd9b73d33a013"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a6f8dcd8fc1b8d6b5ea4fd9b73d33a013">Thread_init</a></div><div class="ttdeci">void Thread_init(Thread_t *Thread, void *stack, uint32_t stack_size, char name[], void(*pfunc)(), uint32_t executiontime, uint8_t priority)</div><div class="ttdoc">Diese Funktion initialisert einen Thread und f<>gt ihn der Ready-Liste hinzu.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:51</div></div>
<div class="ttc" id="astruct_thread__struct_html_a31bdae9c75c66a1824ad271b469eacc4"><div class="ttname"><a href="struct_thread__struct.html#a31bdae9c75c66a1824ad271b469eacc4">Thread_struct::pfunc</a></div><div class="ttdeci">void(* pfunc)()</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:43</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a94d3e31ac9ce0ed4711711a262d5ddda"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a94d3e31ac9ce0ed4711711a262d5ddda">Thread_init</a></div><div class="ttdeci">void Thread_init(Thread_t *Thread, void *stack, uint32_t stack_size, char name[], void(*pfunc)(), uint32_t executiontime, uint8_t priority)</div><div class="ttdoc">Diese Funktion initialisert einen Thread und f<>gt ihn der Ready-Liste hinzu.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:51</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_aaa4627e36ecdeac95fd1e5b563bd5777"><div class="ttname"><a href="_hei_o_s___thread_8c.html#aaa4627e36ecdeac95fd1e5b563bd5777">thread_delay</a></div><div class="ttdeci">void thread_delay(uint32_t tick)</div><div class="ttdoc">Diese Funktion entfernt den <20>bergebenen Thread von der Ready-Liste und f<>gt ihn der Sleep-Liste hinzu....</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:300</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html"><div class="ttname"><a href="_hei_o_s___thread_8h.html">HeiOS_Thread.h</a></div><div class="ttdoc">In dieser Header befinden sich alle Deklarationen, die f<>r das HeiOS ben<65>tigt werden.</div></div>
<div class="ttc" id="a_hei_o_s___settings_8h_html_afbbf897db60f712f08ab7936dbcc19a0"><div class="ttname"><a href="_hei_o_s___settings_8h.html#afbbf897db60f712f08ab7936dbcc19a0">THREAD_STACK_MARK</a></div><div class="ttdeci">#define THREAD_STACK_MARK</div><div class="ttdoc">Die magische Nummer f<>r die Stack<63>berpr<70>fung kann hier festgelegt werden.</div><div class="ttdef"><b>Definition:</b> HeiOS_Settings.h:54</div></div>
<div class="ttc" id="astruct_thread_i_d_l_e_html"><div class="ttname"><a href="struct_thread_i_d_l_e.html">ThreadIDLE</a></div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:64</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a4cc8f78ca0543e6948d909e1ea386feb"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a4cc8f78ca0543e6948d909e1ea386feb">thread_stack_usage</a></div><div class="ttdeci">uint16_t thread_stack_usage(Thread_t *Thread)</div><div class="ttdoc">Diese Funktion pr<70>ft den Stackbereich.</div></div>
<div class="ttc" id="a_hei_o_s___settings_8h_html"><div class="ttname"><a href="_hei_o_s___settings_8h.html">HeiOS_Settings.h</a></div><div class="ttdoc">Hier werden die Einstellungen f<>r das Rtos vorgenommen.</div></div>
<div class="ttc" id="astruct_thread__struct_html_a9997d8ee2df51d18efed254a5aa016fd"><div class="ttname"><a href="struct_thread__struct.html#a9997d8ee2df51d18efed254a5aa016fd">Thread_struct::name</a></div><div class="ttdeci">char name[20]</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:41</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_ad543ed6571a6cf7986fc3c588fe0876e"><div class="ttname"><a href="_hei_o_s___thread_8h.html#ad543ed6571a6cf7986fc3c588fe0876e">SVC_Handler_service</a></div><div class="ttdeci">void SVC_Handler_service(uint32_t *svc_args)</div><div class="ttdoc">Diese Funktion dient als API, um Funktionen im priviligierten Modus ausf<73>hren zu k<>nnen. Diese Funktion bes...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:337</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a53ebffa94d01fd8dd641bb0520878da2"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a53ebffa94d01fd8dd641bb0520878da2">update_Thread_slp</a></div><div class="ttdeci">void update_Thread_slp(void)</div><div class="ttdoc">Diese Funktion aktualisiert die Verz<72>gerungszeit der Threads.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:578</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_ac1b95c9591274d32fe312d3c3a7c765d"><div class="ttname"><a href="_hei_o_s___thread_8h.html#ac1b95c9591274d32fe312d3c3a7c765d">priv_thread_sort_add</a></div><div class="ttdeci">uint8_t priv_thread_sort_add(Thread_t **root, Thread_t *Thread)</div><div class="ttdoc">Mithilfe der Funktion werden die Thread-Objekte in einer einfach verketteten Liste angeordnet....</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:180</div></div>
<div class="ttc" id="asystem___l_p_c17xx_8c_html_aa3cd3e43291e81e795d642b79b6088e6"><div class="ttname"><a href="system___l_p_c17xx_8c.html#aa3cd3e43291e81e795d642b79b6088e6">SystemCoreClock</a></div><div class="ttdeci">uint32_t SystemCoreClock</div><div class="ttdef"><b>Definition:</b> system_LPC17xx.c:431</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a53ebffa94d01fd8dd641bb0520878da2"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a53ebffa94d01fd8dd641bb0520878da2">update_Thread_slp</a></div><div class="ttdeci">void update_Thread_slp(void)</div><div class="ttdoc">Diese Funktion aktualisiert die Verz<72>gerungszeit der Threads.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:578</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_aca9398be120ae354ca40dbfd02fa1e40"><div class="ttname"><a href="_hei_o_s___thread_8c.html#aca9398be120ae354ca40dbfd02fa1e40">Thread_slp</a></div><div class="ttdeci">Thread_t * Thread_slp</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:24</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ada1847fa45175177f66831eb1c706efa"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ada1847fa45175177f66831eb1c706efa">priv_thread_remove</a></div><div class="ttdeci">uint8_t priv_thread_remove(Thread_t **root, Thread_t *Thread)</div><div class="ttdoc">Diese Funktion entfernt das Threadobjekt aus der Liste.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:230</div></div>
<div class="ttc" id="a_fixed_priority_8h_html"><div class="ttname"><a href="_fixed_priority_8h.html">FixedPriority.h</a></div><div class="ttdoc">Diese Headerdatei beinhaltet die Funktionsdeklaration des FixedPriority-Schedulers.</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a1a370e56bc70c92c0e7834839b8721f9"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a1a370e56bc70c92c0e7834839b8721f9">Thread_t</a></div><div class="ttdeci">struct Thread_struct Thread_t</div><div class="ttdoc">Deklaration der Thread-Datenstruktur (TCB)</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a3768f963f2493ef1961b6d2857c213e4"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a3768f963f2493ef1961b6d2857c213e4">save_R4toR11</a></div><div class="ttdeci">__asm void save_R4toR11(void)</div><div class="ttdoc">Diese Funktion sichert die Register R4-R8 mit Inline-Assembler.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:473</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_ada1847fa45175177f66831eb1c706efa"><div class="ttname"><a href="_hei_o_s___thread_8h.html#ada1847fa45175177f66831eb1c706efa">priv_thread_remove</a></div><div class="ttdeci">uint8_t priv_thread_remove(Thread_t **root, Thread_t *Thread)</div><div class="ttdoc">Diese Funktion entfernt das Threadobjekt aus der Liste.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:230</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a085f099d7c875aa298450d79431ae178"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a085f099d7c875aa298450d79431ae178">root</a></div><div class="ttdeci">uint8_t Thread_t ** root</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:102</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a16c7ec7d54a769f4aa36c23d3d35eced"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a16c7ec7d54a769f4aa36c23d3d35eced">OS_Start_Scheduler</a></div><div class="ttdeci">void OS_Start_Scheduler(void)</div><div class="ttdoc">Diese Funktion initialisiert das OS und sorgt anschlie<69>end f<>r den Wechsel in den Idlethread.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:513</div></div>
<div class="ttc" id="astruct_thread__struct_html_a1abf78464029077a8080178b9e04745c"><div class="ttname"><a href="struct_thread__struct.html#a1abf78464029077a8080178b9e04745c">Thread_struct::stack</a></div><div class="ttdeci">uint32_t * stack</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:57</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a739786f7d163baf13b7175e45a9eec36"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a739786f7d163baf13b7175e45a9eec36">Thread</a></div><div class="ttdeci">uint8_t Thread_t Thread_t * Thread</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:102</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_adf19f82560160de5dcccadc09bb9c255"><div class="ttname"><a href="_hei_o_s___thread_8h.html#adf19f82560160de5dcccadc09bb9c255">setfpoutoutidle</a></div><div class="ttdeci">void setfpoutoutidle(void(*fp)(void))</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:29</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_a16c7ec7d54a769f4aa36c23d3d35eced"><div class="ttname"><a href="_hei_o_s___thread_8c.html#a16c7ec7d54a769f4aa36c23d3d35eced">OS_Start_Scheduler</a></div><div class="ttdeci">void OS_Start_Scheduler(void)</div><div class="ttdoc">Diese Funktion initialisiert das OS und sorgt anschlie<69>end f<>r den Wechsel in den Idlethread.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:513</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_afb86102d12bfbfbda217500415dfbc2a"><div class="ttname"><a href="_hei_o_s___thread_8c.html#afb86102d12bfbfbda217500415dfbc2a">update_executiontime</a></div><div class="ttdeci">void update_executiontime(void)</div><div class="ttdoc">Diese Funktion aktualisiert die Ausf<73>hrungszeit der Threads.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:613</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ac1b95c9591274d32fe312d3c3a7c765d"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ac1b95c9591274d32fe312d3c3a7c765d">priv_thread_sort_add</a></div><div class="ttdeci">uint8_t priv_thread_sort_add(Thread_t **root, Thread_t *Thread)</div><div class="ttdoc">Mithilfe der Funktion werden die Thread-Objekte in einer einfach verketteten Liste angeordnet....</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:180</div></div>
<div class="ttc" id="a_hei_o_s___thread_8c_html_ab5e09814056d617c521549e542639b7e"><div class="ttname"><a href="_hei_o_s___thread_8c.html#ab5e09814056d617c521549e542639b7e">SysTick_Handler</a></div><div class="ttdeci">void SysTick_Handler(void)</div><div class="ttdoc">Diese Funktion wird in regelm<6C><6D>igen Abst<73>nden ausgef<65>hrt.</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:380</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a68469423a46b5ee543b5ee42cbbd1249"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a68469423a46b5ee543b5ee42cbbd1249">thread_suspend</a></div><div class="ttdeci">void thread_suspend(Thread_t *Thread)</div><div class="ttdoc">Diese Funktion entfernt einen Thread von der Ready-Liste und l<>st gegebenenfalls einen Kontextwechsel au...</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.c:264</div></div>
<div class="ttc" id="astruct_thread__struct_html_a3d67397d99f6243c885906f630e2e2e3"><div class="ttname"><a href="struct_thread__struct.html#a3d67397d99f6243c885906f630e2e2e3">Thread_struct::tickcount</a></div><div class="ttdeci">uint32_t tickcount</div><div class="ttdef"><b>Definition:</b> HeiOS_Thread.h:51</div></div>
<div class="ttc" id="a_hei_o_s___thread_8h_html_a42b714efadf2458b2ef2cf1f70a45158"><div class="ttname"><a href="_hei_o_s___thread_8h.html#a42b714efadf2458b2ef2cf1f70a45158">__svc</a></div><div class="ttdeci">void __svc(0x00) svc_thread_yield(void)</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="_hei_o_s___thread_8h.html">HeiOS_Thread.h</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>